Delphi DBGrid je tak výkonná součást, kterou pravděpodobně používáte každý den, pokud vyvíjíte aplikace založené na datech. Níže se podíváme na to, jak přidat do databázových aplikací další funkce, které vaši uživatelé určitě milují.
V souladu s pojmy popsanými v Průvodce pro začátečníky k programování databáze Delphi, níže uvedené příklady používají komponenty ADO (AdoQuery / AdoTable připojené k ADOConnection, DBGrid připojené k AdoQuery přes DataSource) k zobrazení evidence z databázové tabulky v komponentě DBGrid.
Všechny názvy komponent byly ponechány tak, jak je Delphi pojmenoval při přetažení na formulář (DBGrid1, ADOQuery1, AdoTable1 atd.).
Myš se pohybuje nad oblastí názvu DBGrid
Nejprve se podívejme, jak změnit ukazatel myši, zatímco se pohybuje nad titulní oblastí DBGrid. Musíte pouze přidat kód do události OnMouseMove pro komponentu DBGrid.
Následující kód jednoduše používá vlastnost MouseCoord komponenty DBGrid k "výpočtu", kde je ukazatel myši. Pokud je nad titulní oblastí DGBrid, pt.y se rovná 0, což je první řádek v DBGrid (titulní oblast zobrazující názvy sloupců / polí).
postup TForm1.DBGrid1MouseMove
(Odesílatel: TObject; Shift: TShiftState; X, Y: celé číslo);
var
pt: TGridcoord;
začít
pt: = DBGrid1.MouseCoord (x, y);
-li pt.y = 0 pak
DBGrid1.Cursor: = crHandPoint
jiný
DBGrid1.Cursor: = crDefault;
konec;
Seřadit podle sloupce Klikněte a změňte písmo názvu sloupce
Pokud používáte ADO přístup k vývoji Delphi databáze a chcete třídit záznamy v datové sadě, musíte nastavit vlastnost Sort vašeho AdoDatasetu (ADOQuery, AdoTable).
Vlastnost Třídění je nejširší hodnota označující část standardního dotazu „OBJEDNÁVKA“. Aby bylo možné použít vlastnost Třídění, samozřejmě nemusíte psát dotaz SQL. Jednoduše nastavte vlastnost Třídit na název jednoho pole nebo na seznam polí oddělených čárkami, přičemž každé postupujte podle pořadí třídění.
Zde je příklad:
ADOTable1.Sort: = 'Year DESC, ArticleDate ASC'
Událost OnTitleClick komponenty DBGrid má parametr sloupec označující sloupec, na který uživatel kliknul. Každý sloupec (objekt typu TColumn) má vlastnost Field označující pole (TField) reprezentované Sloupec a pole ve své vlastnosti Název_pole drží název pole v podkladu dataset.
Proto pro řazení datového souboru ADO podle pole / sloupce lze použít jednoduchou řádku:
s TCustomADODataSet (DBGrid1.DataSource. DataSet)
Třídění: = Sloupec. Pole. FieldName; // + 'ASC' nebo 'DESC'
Níže je kód pro manipulátor OnTitleClick, který třídí záznamy podle kliknutí sloupce. Kód jako vždy rozšiřuje myšlenku.
Nejprve chceme nějakým způsobem označit sloupec, který se aktuálně používá pro řazení. Dále, pokud klikneme na název sloupce a datová sada je již setříděna podle tohoto sloupce, chceme změnit pořadí řazení z ASC (vzestupně) na DESC (sestupně) a naopak. Nakonec, když uspořádáme dataset podle jiného sloupce, chceme odstranit značku z dříve vybraného sloupce.
Z důvodu jednoduchosti označíme sloupec, který „třídí“ záznamy, jednoduše změníme styl písma nadpisu sloupce na tučné a odstraníme jej, když je datová sada tříděna pomocí jiného sloupce.
postup TForm1.DBGrid1TitleClick (Sloupec: TColumn);
{$ J +}konst PreviousColumnIndex: integer = -1;
{$ J-}
začátek DBGrid1.DataSource. DataSet je TCustomADODataSet pak s tím TCustomADODataSet (DBGrid1.DataSource. DataSet) dobegintry
DBGrid1.Columns [PreviousColumnIndex] .title. Písmo. Styl: =
DBGrid1.Columns [PreviousColumnIndex] .title. Písmo. Styl - [fsBold];
vyjmout;
Column.title. Písmo. Styl: =
Column.title. Písmo. Styl + [fsBold];
PreviousColumnIndex: = Sloupec. Index;
-li (Poz (sloupec. Pole. Název pole, Třídit) = 1)
a (Poz ('DESC', Sort) = 0) pak
Třídění: = Sloupec. Pole. FieldName + 'DESC'
jiný
Třídění: = Sloupec. Pole. FieldName + 'ASC';
konec;
konec;
Výše uvedený kód používá zadané konstanty zachovat hodnotu dříve vybraného sloupce pro řazení.