Примеры

  Плагины... >

Примеры

Previous pageReturn to chapter overviewNext page

В разделе рассматриваются примеры получения данных из XML документа. Для этой цели используется свойство property TsgPluginItem.Document: IXMLDocument компонента. Рассмотрим некоторые способы получения данных:

 

Пример 1.

Получение версии приложения:

FClient.Document.DocumentElement.Attributes['Version']

Данный пример возвратит строку ‘7.4’.

 

Пример 2.

Получение имени файла чертежа:

FClient.Document.DocumentElement.ChildNodes['Session'].ChildNodes['Drawing'].ChildValues['FileName']

Данный пример возвратит строку ‘New1.dxf’.

 

Пример 3.

Получение записи (IXMNode) содержащей свойства выделенного примитива:

 

var

  vId, vClassName, vEntName: string;

  N1: IXMLNode;

begin

  …

  vId := FClient.Document.DocumentElement.ChildNodes['Session'].ChildNodes['Selected’]. 

    ChildNodes[0]. Attributes[‘Id’];

  // GetEntNodeFromId âåðíåò ññûëêó íà çàïèñü

       // <abvwr:Entity Id="$0107D940" ClassType="$00699FF4" ClassName="TsgElementLinear">

  N1 := FClient.GetEntNodeFromId(vId); 

  if N1 <> nil then

  begin

    …

    vClassName := N1. Attributes[‘ClassName’]; // vClassName = ‘TsgElementLinear’

    vEntName := N1.CildValues[‘EntName’]; // vEntName = ‘RIB Àâòîð = Soft Gold’

    …

   end;

  …

end;

 

Пример 4.

Добавление нового тулбара с кнопкой, иконки из ресурсов плагина:

 

procedure TPlugForm.Init(Sender: TObject);

var

 vCommandBar: IXMLNode;

 vCommand: IXMLNode;

begin

 …

 vCommandBar := FClient.ClientNode.ChildNodes[sCommandBars].AddChild(sCommandBar);

 vCommandBar.ChildValues['Caption'] := 'New CommandBar';

 vCommand := vCommandBar.AddChild(sCommand);

 vCommand.ChildValues['Name'] := 'NewButton1';

 vCommand.ChildValues['Hint'] := 'New Button Hint';

 vCommand.ChildValues['Caption'] := 'New Button Caption';

 vCommand.ChildValues['BitmapResName'] := 'NEWBUTTON'; //NEWBUTTON – áèòìàï, èç ôàéëà ðåñóðñîâ ïëàãèíà

end;

 

При нажатии на эту кнопку выполняется обработчик:

 

procedure TPlugForm.ABViewerAction(Sender: TObject);

var

 S: string;

begin

 if Assigned(FClient.CommandNode) then

 begin

   S := FClient.CommandNode.ChildNodes['Name'].NodeValue;

   AddLog(FClient.CommandNode.LocalName + ' with name "' + S + '"');

 end;

 Show;

end;

 

где FClient.CommandNode – соответствующий элемент XML (<Command …">)

 

...

<CommandBars>

 <CommandBar Id="$01F62CE0">

         <Caption>New CommandBar</Caption>

         <Command Id="$01EB63D0">

                 <Name>NewButton1</Name>

                 <Hint>New Button Hint</Hint>

                 <Caption>New Button Caption</Caption>

                 <BitmapResName>NEWBUTTON</BitmapResName>

         </Command>

 </CommandBar>

</CommandBars>

 

 

Пример 5.

Экспорт  текущего чертежа в файл с использованием потока:

 

...

procedure TPlugForm.btnExportCADClick(Sender: TObject);

var

 vDrawing: IXMLNode;

 vStream: TFileStream;

begin

 if SaveDialog.Execute then

 begin

   vDrawing := FClient.GetDrawingNode;

   if Assigned(vDrawing) then

   begin

     vStream := TFileStream.Create(SaveDialog.FileName, fmCreate);

     try

       FClient.ExportCADToStream(vDrawing, vStream);

     finally

       vStream.Free;

     end;

   end;

 end;

end;

...

Перейти на страницу Inventory