uses DPSCAD_TLB;
var
PCSComOb : IPCsApplication;
procedure TForm1.GetAllSymbolsFromEntireProject();
var
i, t : integer;
ADrawing : IPCsDrawing;
ASymbols : IPCsSymbols;
begin
PCsApplication := coApplication.Create();
{the listbox that will contain all symbols in the project}
ListBoxSymbols.Clear;
ADrawing := PCsApplication.ActiveDocument.Drawing;
{running through every page in project}
for i := 0 to ADrawing.Pages.Count - 1 do
{only process if page is of type pt_Schematic}
if ADrawing.Pages[i].PageType = pt_Schematic then
begin
ASymbols := ADrawing.Pages.Item[i].Symbols;
for t := 0 to ASymbols.Count - 1 do
ListBoxSymbols.Items.AddObject(ASymbols.Item[t].FullName + ' (' + inttostr(ASymbols.Item[t].Handle) + ')',TObject(ASymbols.Item[t].Handle));
end
end;
var
PCSComOb : IPCsApplication;
procedure TForm1.GetAllSymbolsFromEntireProject();
var
i, t : integer;
ADrawing : IPCsDrawing;
ASymbols : IPCsSymbols;
begin
PCsApplication := coApplication.Create();
{the listbox that will contain all symbols in the project}
ListBoxSymbols.Clear;
ADrawing := PCsApplication.ActiveDocument.Drawing;
{running through every page in project}
for i := 0 to ADrawing.Pages.Count - 1 do
{only process if page is of type pt_Schematic}
if ADrawing.Pages[i].PageType = pt_Schematic then
begin
ASymbols := ADrawing.Pages.Item[i].Symbols;
for t := 0 to ASymbols.Count - 1 do
ListBoxSymbols.Items.AddObject(ASymbols.Item[t].FullName + ' (' + inttostr(ASymbols.Item[t].Handle) + ')',TObject(ASymbols.Item[t].Handle));
end
end;
procedure TForm1.ListBoxSymbolsClick(Sender: TObject);
var
TheHandle : cardinal;
ASymbol : IPCsSymbol;
begin
{getting the handle from the listbox}
TheHandle := IntToStr(Integer(ListBoxSymbols.Items.Objects[ListBoxSymbols.ItemIndex]));
{set ASymbol to the symbol that the handle points to}
ASymbol := PCsApplication.ActiveDocument.Drawing.GetSymbolFromHandle(-1,TheHandle);
ShowMessage('Handle : "' + inttostr(TheHandle) + '" is symbol: "' + ASym.FullName + '"');
end;