WebNews.cz - počítače, komunikace, mobily, internet, finance

Mapa serveru | Administrace

Univerzální ukládání konfigurace do DB

Jiří Provazník - Profil - 06.05.2002
Píšete menší aplikace s oknem konfigurace a už vás nebaví vždy znova psát ukládací procedury? V následujícím článku vám představím řešení pomocí univerzální ukládací procedury, kterou již nebudete muset přepisovat.

Řešení které vám tu předvedu řeší dva základní problémy:

  • Změna formuláře konfigurace např. přidáním dalších komponent.
  • Vytváření nového programu kam přenášíte starší ukládací proceduru.

V obou případech následuje hledání a úprava vaší ukládací a načítací proceduru patřičným způsobem. Pokud jde o větší množství parametrů, které chcete ukládat, je to většinou velmi zdlouhavé a otravné. Pokusil jsem setohoto problému zbavit jednou provždy a vytvořil jsem Frame který obsahuje vše potřebné pro ukládání a načítání vybraných typů jednoduše po stisku tlačítka.

Základní princip této univerzální procedury pro ukládání a načítání konfigurace nějakého okna je založen na vlastnictví komponent. Proceduře která provádí danou akci předáváme vlastníka těchto komponent jako parametr. Jde většinou o TForm nebo TFrame. Vlastní procedura ukládání pak prochází všechny komponenty vlastníka a u vybraného typu komponenty ukládá námi zvolenou vlastnost, název a typ komponenty do databáze. Zpětně při načítání konfigurace se dohledá název komponenty a podle typu se z databáze nastaví některá její vlastnost.

 
Pro univerzálnost a přenositelnost kódu mezi aplikacemi jsem vše co potřebujete pro toto ukládání a načítání umístil na jediný Frame s názvem FrmNastav. Vložíte-li tento Frame např. do vašeho okna s konfigurací máte "skoro" všechno vyřešené. Nejdůležitější jsou samozřejmě tlačítka Uložit a Načíst Hodnoty. Za nimi se skrývá zdrojový kód, který si automaticky zjistí formulář vlastnící FrmNastav a uloží vybrané vlastnosti komponent, které tento formulář vlastní do databáze.
 

Na komunikací s databází jsem raději použil komponentu TQuery pro případ, že by bylo třeba to někde aplikovat proti nějaké větší SQL databázi. Ostatní komponenty slouží pro vizualizaci a zobrazení informací o průběhu načítání nebo ukládání.

Ze základního popisu principu procedury je již patrná struktura databáze, do které budeme konfiguraci ukládat. Pro ukládání jsem využil Paradoxové tabulky. Struktura je následující:

 
Název Položky Typ položky Popis 
ID_Nastav AutoIncrement Jde o jednoznačný identifikátor záznamu v databázi
Typ Numeric Identifikuje typ komponenty (např. pro TEdit =1 apod.).
Nazev Char 50 Do této položky se ukládá název vlastní ukládané komponenty.
Hodnota Char 255 Vlastní hodnota některé z vlastností komponenty.
 
Vhodné je uložit tuto tabulku vždy v podadresáři DB vlastní aplikace kde ji procedury FrmNasrav také hledají. Tedy pokud máte aplikaci uloženou např. v C:\ProgramFiles\Aplikace měla by databáze tedy ležet v adresáři C:\ProgramFiles\Aplikace\DB.

Do této databáze budeme ukládat následující vlastnosti vybraných typů

 Typ komonety   Vlastnost komponety 
TEdit Text
TCheckBox Checked
TListBox ItemIndex
TRadioGroup ItemIndex
 
Pro názornost a prezentaci síly si vytvořme následující jednoduchou aplikaci.
 
 
Na hlavní formulář (které představuje okno konfigurace) umístěme např. dvě komponenty TEdit, dvě TCheckBox, jednu komponentu typu TStringList a nakonec komponentu TRadioGroup. Tyto komponenty jsou umístěné na pravou stranu hlavního formuláře. Na levé straně pak vložíme frame FrmNastav, který se bude starat o vlastní ukládání a načítání. Nyní stačí pouze přeložit a pustit.
 

V okně si libovolným způsobem nastavte hodnoty komponent TEdit a TCheckBox. U Listboxu a RadiGroup nastavte některou s přednastavených hodnot a jednoduše zmáčkněte tlačítko uložit. Program v tu to chvíli uloží nastavené parametry do databáze. O průběhu ukládání jste průběžně informováni. Na závěr se také dozvíte kolik parametru se uložilo.

 

Pokud na hlavním formulář provedete nějaké změny nebo přidáte další komponenty, nemusíte se již v hlavní aplikaci dále starat o jejich ukládání a načítání a měnit tyto procedury.

V současné době tento frame používám jen pro jednoduchá okna. Nelze s ním tedy ukládat více oken ani příliš složitá okna obsahující např další framy. To však můžete všechno vylepšit sami. K dispozici dávám zdrojové kódy jak od FrmNastav, tak od celé Testovací aplikace (včetně DB) napsané v D6.

Přeji hodně zdaru při vašem vývoji.

Tisk článku - Poslat článek - Zdroj článku - (2987 zobrazení)
Redakce | | | ISSN 1213-9335 | © 2005 Developed by terc.cz