Lekce 3.05
Použití komponenty DataSource


předchozí lekce (3.04) obsah kurzu následující lekce (3.06)

Komponenta DataSource zprostředkovává spojení mezi nevizuální komponentou DataTable a ostatními vizuálními komponentami. Jak již víme, komponenta DataTable obsahuje vlastní data a dokáže s nimi pracovat. Je to vlastně ukazatel na aktuální data. Prostřednictvím DataSource můžeme tato aktuální data pomocí dalších vizuálních komponent data zobrazovat.

Nejdůležitější vlastností je DataSet, to je spojení na data obsažená v komponentě DataTable. Zadává se vždy komponenta DataTable umístěná na formuláři.

Vlastnost AutoEdit umožňuje zabránit editaci položek. Při nastavení DataSource.AutoEdit:=True je možné položky databáze v komponentě DataEdit běžně editovat. Pokud však zadáme DataSource.AutoEdit:= False, je zabráněno editaci položek. Pro přepnutí do editačního režimu budete muset buď kliknout na editační ikonu komponenty DataNavigator, nebo volat metodu DataTable.Edit.

Pokud budete zpracovávat větší množství dat z připojené databáze z rozsahu celého souboru, můžete využít vlastnost Enabled. Umožní vám dočasně odpojit komponenty připojené k DataSource zprostředkovávající zobrazení dat. Tím dosáhnete toho, že se při procházení databáze nebudou data zobrazovat a zpracování bude díky tomu mnohem rychlejší.

Komponenta DataSource má tři velmi důležité události. Událost OnDataChange se vyskytne při každé změně v databázi. To znamená nejen při změně dat, ale také při změně pozice databázového ukazatele. Událost OnUpdateData je volána vždy, když je záznam po editaci aktualizován (zapisován fyzicky do databáze). Větší možnosti poskytuje událost OnStateChange, která je volána vždy při změně stavu databáze. To znamená, že dokáže rozpoznat přepnutí do editačního režimu, režimu prohlížení, vložení nového záznamu a deaktivaci tabulky. Stav tabulky zjistíte testováním vlastnosti State.

Událost OnDataChange je možné použít například pro zobrazení čísla aktuálního záznamu databáze následujícím způsobem:


Jazyk KLONDAIK: procedure TForm.DataSourceDataChange(Sender: TObject; Field: TField); begin Label.Caption := IntToStr(DataTable.RecNo)+'/' +IntToStr(DataTable.RecCount); end;

Jazyk BONANZA: Sub DataSourceDataChange(Sender, Field) Label.Caption = IntToStr(DataTable.RecNo) _ +"/"+IntToStr(DataTable.RecCount) End Sub

Jazyk JUKON: function DataSourceDataChange(Sender, Field) { Label1.Caption = IntToStr(DataTable1.RecNo)+'/' +IntToStr(DataTable1.RecCount); }


předchozí lekce (3.04) obsah kurzu následující lekce (3.06)

OZOGAN, 1 Máje 97, 460 01 Liberec
tel.,fax: (048) 52 28 338, e-mail: info@ozogan.cz