
A mellékelt példaprogram megnyitása előtt a PStructure.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponenst a Table property-jén keresztül kapcsolhatjuk hozzá egy TTable komponenshez, amely egy Paradox típusú táblához kapcsolódik.
Az adatok lekérdezése az Execute metódus meghívására történik. A metódus meghívása előtt a TTable Active property-jét igazra kell állítani.
Az Execute metódus lefutása után egy megnyitott Excel munkafüzetben látható a tábla adatszerkezete.
A komponenst a TComponent osztályból származtatjuk.
A Table property megfelelő működéséhez felül kell írnunk a Notification metódust.
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
Ha a komponenst hozzákapcsoljuk egy TTable-hez, majd a TTable-t töröljük, a Delphi hibaüzenetet küld. Ezt a Notification metódusban elhelyezett, következő kóddal kerülhetjük el.
if (AComponent=FTable) and (Operation=opRemove) then
FTable:=Nil;
A komponens kódjának lényege az Execute metódusban található.
Egy OleVariant típusú változó segítségével megnyitjuk, majd láthatóvá tesszük az Excel programot.
ExcelApp:=CreateOleObject('Excel.Application');
ExcelApp.Visible:=True;
Létrehozunk egy új munkafüzetet, melynek aktív munkalapján létrehozzuk a fejlécet.
ExcelApp.WorkBooks.Add;
ExcelApp.Range['A1','A1'].Value:='Mezőnév';
...
A feldolgozás során a megadott táblának csak az adattípusú (fkData) mezőivel foglalkozunk.
if FTable.FieldCount>0 then
for i:=0 to FTable.FieldCount-1 do
if FTable.Fields[i].FieldKind=fkData then begin
ExcelApp.Range['A'+IntToStr(i+2),'A'+IntToStr(i+2)].Value:=FTable.Fields[i].FieldName;
Az adott mező típusát a következőképpen határozhatjuk meg, elágazások segítségével.
if FTable.Fields[i].DataType=ftString then
ExcelApp.Range['B'+IntToStr(i+2),'B'+IntToStr(i+2)].Value:='Alpha';
A mező méretét a Size tag adja meg, melyre csak akkor van szükségünk, ha az értéke nem 0.
A következő táblázat összefoglalja a Paradox 7-ben használható mezőtípusokat, valamint a mezők Delphi-ben használt típusait.
| Paradox típus |
TFieldType |
| Alpha |
ftString |
| Number |
ftFloat |
| Money |
ftCurrency |
| Short |
ftSmallInt |
| Long Integer |
ftInteger |
| BCD |
ftBCD |
| Date |
ftDate |
| Time |
ftTime |
| TimeStamp |
ftDateTime |
| Memo |
ftMemo |
| Formatted Memo |
ftFmtMemo |
| Graphic |
ftGraphic |
| OLE |
ftParadoxOLE |
| Logical |
ftBoolean |
| AutoIncrement |
ftAutoInc |
| Binary |
ftBlob |
| Bytes |
ftBytes |