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. |
Jiří Provazník |
|
|