Válogató oszlopok dbgrid - Delphi forrásból gyik
Hívás User Support.
- Szia, ez a támogató szolgálat.
- Igen.
- A gondom, én modem nem fog működni.
- Nézzük írnak neked egy sort elindulni.
- Nézzük.
- ATF1M5
- Köszönöm. 5 perc múlva.
- Még mindig nem működik.
- Igen. Nos, nézzük a másik levelet
- Hallgatom
- ATS10 = 100
- Köszönjük!
Tart további 5 percig.
- Van egy modem még mindig nem működik.
- Nos, írj egy másik vonal.
- Én vagyok.
- ATFB1A0S0 = 90
- Köszönöm. Beletelt további 5 percig.
- Hello. I égett egy modem.
- Sajnálatos, de akkor én még annyira park összevarrja inicializálás balra.
Sok professzionális alkalmazások megjelenítésére adatok táblázatos rács mezőket, és lehetővé teszi, hogy rendezni bármely oszlop egyszerűen kattintson a címet. Amit itt leírt - nem a legjobb módja annak, hogy megoldja a problémát, ez nem más, mint a technológia, mint a puszta utánzása az alkatrész viselkedése.
A fő akadály a probléma megoldásában - tette DBGrid. A probléma az, nincsenek események vagy OnClick onMouseDown, amely lehetővé teszi, hogy válaszoljon a manipuláció a alapcsoporton. Azonban OnDoubleClick esemény, de erre a célra ez nem túl elegánsan. Csak annyit kell -, hogy a fejléc, amely reagál egyetlen kattintással. Utalva THeaderControl komponenst.
THeaderControl - komponens be a paletta több a Delphi 2.0 és biztosítja számunkra a szükséges funkciókat. A fő előnye - reakció komponens kattintva külön paneleket, a panelek is nyújt hasonló vizulnoe térképezés gombot (lehet nyomni és lenyomva). Meg kell „kötni” THeaderControl a DBGrid. Itt van, hogyan kell csinálni:
Először hozzon létre egy új alkalmazás. Tedd THeaderControl az űrlapon. Ez automatikusan beállítja a felső széle a penész. Azután, hogy az űrlapon, és állítsa be a DBGrid Align tulajdonság értéke alClient. Ezután adjunk hozzá alkatrészek TTable és TDataSource. A TTable alkatrésze, a DatabaseName ingatlan értéke DBDEMOS és TableName ingatlan értékét EVENTS.DB. A TDataSource ki egy tulajdonságot Table1 DataSet komponens és egy adatforrás TDBGrid ingatlan DataSource1. Ha az Active TTable alkatrész tulajdonság inaktív volt, akkor kapcsolja be (True érték). Most egy kicsit Doing varázslat!
Csináljunk THeaderControl alkatrész tűnt fejléc DBGrid komponenst. Végezze el a szükséges manipulitsii idején létrehozása formájában. Kattintson duplán a OnCreate esetén az űrlapot, és adja meg a következő kódot:
Cseréje után a standard header THeaderControl DBGrid, elsősorban állítottuk vissza (a beállítás hamis) dgTitles zászló ingatlan Options DBGrid komponenst. Ezután adjunk hozzá egy oszlopot HeaderControl és a szélessége megegyezik a 12. Ez lesz egy üres oszlop, amelynek szélessége megegyezik a bal oldali oszlopban állapotát DBGrid.
Ezután meg kell győződnie arról, hogy az asztal nyitott exkluzív hozzáférés (nincs más felhasználó nem tudja használni). Ok leírom egy kicsit később.
Most adjuk hozzá a részben HeaderControl. hozunk létre az egyes hozzáadott oszlop fejlécében szöveg ugyanaz, mint a megfelelő DBGrid oszlopot. A ciklus megyünk végig az oszlopok a DBGrid és ismételje az oszlop fejléc és a magasságát. Azt is értékeinek a beállítására HeaderControl MinWidth és maxwidth tulajdonságok egyenlő a megfelelő oszlop szélessége a DBGrid. Ez megakadályozza, hogy a változó az oszlop szélességét. Méretének megváltoztatásához a hangszórók, amire szükség további kódolás, és úgy döntöttem, nem fosztja meg az, hogy az élvezet.
Most a szórakoztató része. Megyünk, hogy hozzon létre egy indexet az egyes oszlopra a DBGrid. az index nevét ugyanaz lesz, mint az oszlop nevét. Ez a kód azt kell következtetnünk a try..finally design, mert vannak olyan területek, amelyeket nem lehet indexelni (például megtekintésére BLOB és Memo-mező). Amikor megpróbáltuk indexelni ezeket a mezőket generál kivételt. Mi felderíteni ezt a kivételt, és a lehetőséget, nedopuskaet kattintva ezt az oszlopot. Ez azt jelenti, hogy az oszlopokat, amelyek nem-indexelt mezők nem fog reagálni egy kattintással. Ezek létrehozását indexek ad magyarázatot arra, hogy miért az asztalra kell nyitni kizárólagos hozzáférési mód. Végül lezárjuk az asztalra, dobja kizárólagosság zászló és ismét a táblázat aktív.
Az utolsó lépés. Ha rákattint HeaderControl megfelelően fel kell tüntetni a megfelelő index táblázat. Hozzon létre egy eseménykezelő OnSectionClick HeaderControl komponens az alábbiak szerint:
Ez minden! Kattintás után a táblázat címében oszlop IndexNév ingatlan értéke lesz a fejléc HeaderControl komponenst.
Szép és egyszerű, nem? Ennek ellenére rengeteg helyen javítására. Például a másodlagos kattintás kell újítania a sorrend. Vagy képes megváltoztatni a méretét a hangszórók magukat. Próbáld ki magad, akkor nem nehéz!
Itt látható a javított kódot, mint az előző változat a „Tanács”, hogy használják az index neve helyett egy mező neve fejlécet.
Ez nagyobb rugalmasságot. Változások dőlt betűvel jelezzük ferde.
Használja FieldName DBGrid komponens tulajdonsággal az index a neve megegyezik a mező nevét.