Delphi - Komponensek tulajdonságainak exportálása Word-be

forráskód letöltése
Amikor dokumentálunk egy 4 GL-ben készült programot, a szerkesztőben megváltoztatott komponens tulajdonságokat is dokumentálnunk kell. Ennek lehet egy módja, az, hogy táblázatot készítünk az olyan tulajdonságokról, amely az alapértelmezéstől eltérnek. Készítünk egy komponenst, amely csak szerkesztési időben használható. A komponens megnyitja a Word-öt, és készít egy táblázatot a Form-on lévő komponensek megváltoztatott tulajdonságaiból.
A mellékelt példaprogram megnyitása előtt az ExportProperties.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens csak szerkesztési időben használható. El kell helyeznünk azon a Form-on, amely komponenseiből táblázatot szeretnénk készíteni. Ha a komponensen az egér jobb gombjával kattintunk, megjelenik egy helyi menü. A menü legelső sorában elhelyezkedő Execute parancsra kattintva a komponens megnyitja a Word-öt és elkészít egy táblázatot a következő oszlopokkal: komponens, tulajdonság, érték, megjegyzés.
A komponenst a TComponent osztályból származtatjuk.
Ahhoz, hogy saját menüpontot tudjunk rendelni a komponenshez, létre kell hoznunk egy saját komponensszerkesztő osztályt, amelyet a TComponentEditor osztályból származtatunk.
A komponensszerkesztőt a RegisterComponentEditor eljárással rendelhetjük hozzá komponensünkhöz.
RegisterComponentEditor(TExportProperties, TExportPropertiesMenu);
A szerkesztő ExecuteVerb metódusában kell leprogramoznunk, hogy mi történjen akkor, ha az Execute menüpontra kattintunk. A Component property-n keresztül elérhetjük komponensünket. A SearchForProperties metódus meghívásával át is adjuk a vezérlést komponensünknek.
procedure SearchForProperties;
A háttérben megnyitjuk a Word-öt. Ezt a szokásos módon, egy OleVariant típusú változó segítségével tesszük. Az OleVariant típus a ComObj unitban van implementálva.
Word táblázatot az alábbi módon hozhatunk létre.
Selection:=FWordApp.Selection;
Table:=FWordApp.ActiveDocument.Tables.Add(Selection.Range,1,4);
A fenti kód egy olyan táblázatot hoz létre, amelynek egyetlen sora és négy oszlopa van.
A táblázat egy cellájába a Cell property-n keresztül írhatunk be valamit.
Table.Cell(1,1).Range.Text:='Komponens';
A Form-on lévő komponenseket a Components tömbön keresztül érhetjük el.
for i:=0 to (FOwner as TForm).ComponentCount-1 do
  if (FOwner as TForm).Components[i]<>Self then begin
Az aktuális komponens változtatott tulajdonságait a GetProperties függvény segítségével határozzuk meg.
function GetProperties(Component: TComponent): String;
Bemenő paraméterként egy komponenst kell megadnunk, eredményül a komponens tulajdonságait kapjuk, szöveges formában. Az eredmény formátuma a következő:
object Label1: TLabel
  Caption = ’demo’
  ... 
end
A függvény eredményét egy tStringList-ben tároljuk el.
List.SetText(PChar(GetProperties((FOwner as TForm).Components[i])));
Ezzel a módszerrel nem kell foglalkoznunk a sortörésekkel, azt a TStringList automatikusan elvégzi.
Az első sorban találjuk a komponens nevét, az utolsó sorral pedig nem kell foglalkoznunk. A köztes sorokban találjuk a tulajdonságokat.
A Word táblázatba egy új sort a Tables.Add paranccsal szúrhatunk be.