HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Nem dokumentált lehetőségek a TCollection típusnál


Példaprogram letöltése

8609 bájt

Ha komponens készítésénél használunk TCollection - TCollectionItem osztálytípust például egy tömb property létrehozásához, akkor mellékelt cikkből megtudhatjuk, hogy milyen hasznos és egyszerűen programozható lehetőségek rejlenek még e két osztályban, melyeket ismét csak "elfelejtettek" dokumentálni a készítői.
A mellékelt példaprogram megnyitása előtt a ComponentSample.pas-ban lévő komponenst telepítenie kell a Delphi alá.

E lehetőség abban rejlik, hogy amikor egy TCollection-ból származó property esetében az Object Inspector-on rákattintunk és megjelenik a kis szerkesztő ablak - amelybe tetszőleges számú elemet felvehetünk, melyek a tömb egyes elemei lesznek - akkor ennél az ablaknál lehetőségünk van arra, hogy ne csak az objektum nevét, hanem tetszőleges számú, egyedi adatot is megjelenítsünk az adott tömb eleméről. Így akár a név mellett annak egyéb property-eit is kiírhatjuk, vagy akármilyen más adatot megjeleníthetünk, például egy számított értéket.

A tömb típusú property, illetve a TCollection - TCollectionItem osztályok felhasználásáról most nem írnánk, ezt már számtalan megjelent cikkünkben megtettük (lásd az alább hivatkozott cikkek).

A feladat megvalósításához csak három függvény felülírására van szükség a TCollection osztályon belül.

Nézzük ezeket sorra:

A GetAttrCount függvénynél egy számot kell visszaadnunk. Ez a szám határozza meg, hogy hány oszlopa legyen a kis szerkesztő ablakban megjelenő táblázatnak, mely nem más, mint egy TListView komponens vsReport módban.
function TItems.GetAttrCount: Integer;
begin
  result:=4;
end;
Ezek után a GetAttr függvénynél adhatjuk meg, hogy mi legyen az egyes oszlopok fejlécének megnevezése. Paraméterként kapunk egy integer változót. Ebből tudhatjuk meg, hogy aktuálisan melyik oszlop nevét kell megadnunk. A GetAttr annyiszor kerül meghívásra egymás után, amennyit a GetAttrCount-nál megadtunk.
function TItems.GetAttr(Index: Integer): string;
begin
  case Index of
    0: result:='Name';
    1: result:='Other';
    2: result:='Other * 2';
    3: result:='Note';
  end;
end; 
Végül a GetItemAttr függvénynél kell megadnunk a táblázat egyes celláinak értékét. Itt az Index paraméterből tudjuk meg, hogy melyik oszlopban vagyunk, míg az ItemIndex-ből, hogy melyik sorban. A függvény annyiszor kerül meghívásra egymás után, ahány cellája van a táblázatnak.
function TItems.GetItemAttr(Index,
     ItemIndex: Integer): string;
begin
  case Index of
    0: result:=Items[ItemIndex].Name;
    1: result:=IntToStr(Items[ItemIndex].Other);
    2: result:=IntToStr(Items[ItemIndex].Other*2);
    3: begin
      if ItemIndex mod 2=0 then begin
        result:='Delphi Software Online';
      end else begin
        result:='http://www.animare.hu/dso/';
      end;
    end;
  end;
end;


Cikksorozat



Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2000 évkönyv 564. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |