Delphi - TFieldDefs és TFieldDef osztályok használata

forráskód letöltése
A TFieldDefs kollekciót és a TFieldDef osztályt felhasználhatjuk arra, hogy létrehozzunk egy új adattáblát, vagy hogy megismerjük egy már létező tábla mezőinek típusát és tulajdonságait. Ebben a példában megismerkedünk a két osztály tulajdonságaival, metódusaival és használatukkal.
A TTable és a TBDEClientDataSet osztályok rendelkeznek egy FieldDefs property-vel, amelyen keresztül egy TFieldDefs típusú kollekciót érhetünk el.
Ez a kollekció tartalmazza a táblában lévő összes mező adatait. A kollekció TFieldDef típusú elemekből áll.
Mindkét osztály, valamint a használatukhoz szükséges adattípusok a DB unitban vannak implementálva.
TFieldDefs
Count
property Count: Integer;
A kollekció elemeinek számát adja meg.
Dataset
property Dataset: TDataSet;
Annak az adatforrásnak az elérését teszi lehetővé, amelynek a mezőit kezeljük.
HiddenFields
property HiddenFields: Boolean;
Igaz érték esetén elérhetővé válnak a rejtett mezők.
Items
property Items[Index: Integer]: TFieldDef;
A kollekció egyes elemeit az Items tömbön keresztül érhetjük el. Az első elem indexe 0, az utolsóé Count-1.
ParentDef
property ParentDef: TFieldDef;
Referencia a szülő mezőre, amennyiben az létezik.
Updated
property Updated: Boolean;
Segítségével megtudhatjuk, hogy az adatszerkezetben történt-e változás.
Add
procedure Add(
Name: String;
DataType: TFieldType;
Size: Integer = 0;
Required: Boolean = False
);
Egy új mező létrehozására szolgál. A metódus csak kompatibilitási okok miatt szerepel az osztályban. Helyette használjuk az AddFieldDefs metódust.
Paraméterek
Name: String
Mezőnév.
DataType: TFieldType
Típus. Használható konstansok: ftUnknown, ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString, ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob, ftVariant, ftInterface, ftIDispatch, ftGuid.
Size: Integer = 0
Méret. Csak olyan mezők esetében módosíthatjuk ezt az értéket, ahol a mezőméret megadható.
Required: Boolean = False
A mezőt mindenképpen ki kell tölteni.
AddFieldDef
function AddFieldDef: TFieldDef;
Egy új mező létrehozására szolgál.
Visszatérési érték
A létrejövő mező.
Find
function Find(
const Name: String
): TFieldDef;
Segítségével az Items listában megkereshetünk egy mezőt, amelyet a neve alapján tudunk azonosítani.
Paraméterek
const Name: String
A keresendő mező neve.
Visszatérési érték
A megtalált mező.
GetItemNames
procedure GetItemNames(
List: TStrings
);
A paraméterként megadott TStrings objektumot feltölti a kollekcióban található mezők neveivel.
Paraméterek
List: TStrings
A lista, amelybe az eredmény kerül.
IndexOf
function IndexOf(
const AName: string
): Integer;
Egy mező indexének meghatározására szolgál. A keresett mezőt neve alapján azonosíthatjuk.
Paraméterek
const AName: string
A keresett mező neve.
Visszatérési érték
A megtalált mező indexe. Ha a mező nem található, akkor a visszatérési érték -1.
Update
procedure Update;
Az Items tömb elemeinek frissítésére szolgál.
A kollekción belül egy mezőt a TFieldDef osztály képvisel.
TFieldDef
Attributes
property Attributes: TFieldAttributes;
A mezőhöz beállított attribútumokat tartalmazza. Használható értékek: faHiddenCol, faReadonly, faRequired, faLink, faUnNamed, faFixed.
ChildDefs
property ChildDefs: TFieldDefs;
További, belső mezők tárolására és elérésére szolgál.
DataType
property DataType: TFieldType;
A mezőben elhelyezhető adat típusa. Az itt használható konstans elnevezések a TFieldDefs kollekció Add metódusánál kerültek felsorolásra.
DisplayName
property DisplayName: String;
A mezőnek az a neve, amely az egyes Data komponensek segítségével megjelenik.
FieldNo
property FieldNo: Integer;
A mező indexe a fizikai táblában.
Index
property Index: Integer;
A mező helye a kollekcióban.
InternalCalcField
property InternalCalcField: Boolean;
Igaz érték esetén az adott mező számított mező, ami nem létezik a fizikai táblában. Hamis érték esetén a mező hagyományos.
Name
property Name: String;
A mező fizikai neve.
ParentDef
property ParentDef: TFieldDef;
Referencia a szülő mezőre, amennyiben az létezik.
Precision
property Precision: Integer;
Csak ftBCD mezőknél használható. A digitek számát határozza meg.
Required
property Required: Boolean;
Igaz érték esetén a mezőt muszáj kitölteni, hamis érték esetén maradhat üres is.
Size
property Size: Integer;
A mező mérete. A mezőméret nem állítható minden mezőtípus esetében.
AddChild
function AddChild: TFieldDef;
Egy új elemet helyez el a ChildDefs tömbben.
Visszatérési érték
A létrehozott objektum.
HasChildDefs
function HasChildDefs: Boolean;
Segítségével megtudhatjuk, hogy a ChildDefs tartalmaz-e elemeket.
Visszatérési érték
Igaz, ha a ChildDefs tömb tartalmaz elemeket, ellenkező esetben hamis.