ADT, az Abstract Data Type rövidítése.
A mellékelt példában egy ClientDataSet komponens segítségével hozunk létre egy saját adattáblát.
Két fő mezőt tárolunk el benne:
A Person mezőn belül létrehozunk további 3 mezőt:
A mezők létrehozását futási időben tesszük meg, a Form OnCreate eseményében.
Egy ADT mező létrehozásánál 3 paramétert kell megadnunk.
FieldDefs.Add('Person',ftADT,3);
A mező nevét, az ftADT típust és egy számot, ami azt mondja meg, hogy az ADT mezőn belül hány újabb mező található.
Az adatforrás FieldDefs property-jében ezután fel kell sorolnunk azokat a mezőket (a jelen példa szerint 3 db), amelyek az ADT mezőn belüli mezők lesznek.
FieldDefs.Add('Name',ftString,30);
FieldDefs.Add('Address',ftString,50);
FieldDefs.Add('Age',ftInteger);
Az ADT-ben megjelenítendő mezőknek közvetlenül az ADT mező definíciója után kell szerepelniük a FieldDefs tömbben.
A további felsorolt mezők már az ADT mezővel egy szinten helyezkednek el.
Egy ADT mező tartalmazhat további ADT mezőket, és így tovább.
A ClientDataSet által megjelenítendő adatszerkezetet a CreateDataSet metódus meghívásával hozhatjuk létre, majd nyithatjuk meg.
Az ADT mezők megjelenítése kétféle lehet. Ha a ClientDataSet ObjectView property-jében igaz értéket adunk meg, akkor a DBGrid a mezőket hierarchikusan jeleníti meg. Ha a property értékét hamisra állítjuk, akkor az egyes mezők egymás mellett jelennek meg, és ilyenkor semmi nem utal a hierarchikus szerkezetükre.
Az ADT mező egyes elemeire úgy hivatkozhatunk, mintha rekordokkal dolgoznánk.
DBText1.DataField:='Person.Name';
ADT_mező_neve.Mező_név
Ha a ClientdataSet1.ObjectView értéke igaz, akkor a program futtatásakor a DBGrid-ben kinyithatjuk, vagy bezárhatjuk az ADT-n belüli mezőket.
A ClientDataSet segítségével lehetőségünk van az adatokat egy állományba elmenteni, vagy onnan visszatölteni. Erre a SaveToFile és a LoadFromFile metódusok szolgálnak.
Ha azt akarjuk, hogy a DBGrid a Person mező tartalmát összecsukott állapotban is megjelenítse, akkor az OnDrawDataCell eseményt kell használnunk. Az eseményben leprogramozzuk, hogy az összecsukott Person mező a Name, Address és Age mezők tartalmát vesszővel elválasztva jelenítse meg.