Dbgrid Rendezés kattintva egy oszlopot, delphisite

InsertOrderBy # 40; Kérdés, NewOrder # 41; ;

eljárás TForm1. FormCreate # 40; Sender: TObject # 41; ;

TheWidth egy Integer;

DBGrid1. Opciók: = DBGrid1. Options - # 91; dgTitles # 93; ;







HeaderControl1. Szakaszok. Add;

HeaderControl1. Szakaszok. példány # 91; 0 # 93;. Szélesség: = 12;

Table1. Exkluzív: = true;

Table1. Aktív: = true;

Egy: = 1 DBGrid1. Oszlopokat. gróf do

Table1. Aktív: = false;

Table1. Exkluzív: = false;

Table1. Aktív: = true;

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:

eljárás TForm1. HeaderControl1SectionClick # 40;

HeaderControl: THeaderControl; Szakasz: THeaderSection # 41; ;

Table1. IndexNév: = szakasz. szöveg;

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!
fejlesztések
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.

eljárás TfrmDoc. FormCreate # 40; Sender: TObject # 41; ;

Dbgrid1. Opciók: = DBGrid1. Options - # 91; DGTitles # 93; ;

Headercontrol1. szakaszok. Add;

Headercontrol1. Szakaszok. példány # 91; 0 # 93;. Szélesség: = 12;

Egy: = 1 DBGRID1. Oszlopokat. gróf do




Kapcsolódó cikkek