KĄCIK DELPHI


Witam wszystkich w drugiej części naszego kursu. Jak obiecałem zajmiemy się dziś konfiguracją (czyli jak stworzyć dobrze prosperujące ustawienia programu). Aby nie przynudzać - zaczynamy!

1. CZĘŚĆ WIZUALNA.

Na formatce umieszczamy komponent groupbox, a w nim po dwa komponenty checkbox i radiobutton (jeden pod drugim). Obok naszych "opcji" wstawiamy dwa komponenty memo i ustawiamy właściwości pierwszego z nich: Visible i TabStop na False. Zmieńmy właściwość Caption komponentów checkbox na:
1- "Okno przykładowe",
2- "Kolory niestandardowe",
a radiobutton na:
1- "Kolor czerwony",
2- "Kolor niebieski",
Poza tym, w komponencie checkbox1 zmieniamy właściwość Checked na True, a w komponentach radiobutton - Enabled na False. W drugim komponencie memo czyścimy zawartość właściwości Lines i zastawiamy go w spokoju.
 
2. PISANIE KODU.
 
Na początek klikamy dwukrotnie na komponencie checkbox1 i wpisujemy:
 
if checkbox1.Checked then
begin

memo2.Visible := True;
end else
begin

memo2.Visible := False;
end;
 
Proste nie? Jeżeli okienko jest zaznaczone to komponent memo2 jest widoczny na formatce. Jeżeli nie jest zaznaczony to nie widzimy komponentu.
Teraz klikamy na checkbox2 i...:
 
if checkbox2.Checked then
begin

radiobutton1.Enabled := true;
radiobutton2.Enabled := true;
radiobutton1click(sender);
radiobutton2click(sender);
end else
begin

radiobutton1.Enabled := false;
radiobutton2.Enabled := false;
memo2.Color := clwindow;
end;
 
Już tłumaczę: Jeżeli okienko jest zaznaczone to komponenty radiobutton są aktywne, jeżeli nie jest zaznaczone to nie są, a komponent memo2 dostaje pierwotnych kolorów. Uwagę Waszą na pewno przykuła procedura 'radiobutton#click(sender)' . Otóż jest to odnośnik do kliknięcia na dany komponent (w tym wypadku radiobutton z numerem #). Klikamy na radiobutton1 i wrzucamy taki kod:
 
if radiobutton1.Checked then
begin

memo2.Color := clred;
end;
 
Cóż po zaznaczeniu nasze próbne okno ma kolor czerwony. Kolej na radiobutton2:
 
if radiobutton2.Checked then
begin

memo2.Color := clblue;
end;
 
To samo co wyżej, ale kolor jest niebieski. Jak uruchomicie program to wszystko gra, ale... jeśli zmienicie ustawienia i uruchomicie program od nowa to nic się nie zmienia, bo wczytywane są z poziomu Delphi. Aby temu zaradzić wpisujemy w zdarzeniu OnClose formatki taki kod:
 
memo1.Clear;
if checkbox1.Checked then
begin

memo1.Lines.Add('podgląd = 1');
end else
begin

memo1.Lines.Add('podgląd = 0');
end;
if checkbox2.Checked then
begin

memo1.Lines.Add('colorn = 1');
end else
begin

memo1.Lines.Add('colorn = 0');
end;
if radiobutton1.Checked then
begin

memo1.Lines.Add('color = 0');
end;
if radiobutton2.Checked then
begin

memo1.Lines.Add('color = 1');
end;
memo1.Lines.SaveToFile('options.cfg');
 
Na początku kasowana jest zawartość komponentu memo1. Później kolejno zapisywane są linie tekstu do pliku 'options.cfg'. Jeżeli checkbox1 jest zaznaczony to zostanie dopisana linia 'podgląd = 1', jeżeli nie jest zaznaczony to cyfra na końcu zamienia się na '0'. Tak samo wygląda sprawa z checkbox2. Gdy zaznaczony jest radiobutton1 to wpisany tekst to 'color = 0', jeżeli zaznaczony jest radiobutton2 to 'color = 1'. Na końcu, jak już mówiłem całość jest zapisywana do pliku. Aby zakończyć nasze wypociny musimy jeszcze dopisać do zdarzenia OnCreate formatki te linie:
 
memo1.Clear;
memo1.Lines.LoadFromFile('options.cfg');
if memo1.Lines.Strings[0] = 'podgląd = 1' then
begin

checkbox1.Checked := true;
checkbox1click(sender);
end;
if memo1.Lines.Strings[0] = 'podgląd = 0' then
begin

checkbox1.Checked := false;
checkbox1click(sender);
end;
if memo1.Lines.Strings[1] = 'colorn = 1' then
begin

checkbox2.Checked := true;
checkbox2click(sender);
end;
if memo1.Lines.Strings[1] = 'colorn = 0' then
begin

checkbox2.Checked := false;
checkbox2click(sender);
end;
if memo1.Lines.Strings[2] = 'color = 0' then
begin

radiobutton1.Checked := true;
radiobutton1click(sender);
end;
if memo1.Lines.Strings[2] = 'color = 1' then
begin

radiobutton2.Checked := true;
radiobutton2click(sender);
end;
 
No i tak: Na początek czyścimy komponent memo1 i ładujemy do niego dane z pliku 'options.cfg'. Następnie jeżeli pierwsza linijka tekstu brzmi 'podgląd = 1' to zaznaczany jest komponent checkbox1. Gdy jest to 'podgląd = 0', to nie zobaczymy witki w okienku tegoż komponentu. Działanie z komponentem checkbox2 jest taki sam, więc sobie go daruję. Jeżeli trzecia linijka to 'color = 0', to zaznaczany radiobutton1. Jeżeli jest to 'color = 1', to zaznaczany jest radiobutton2.
 
Mam nadzieję, że nie jest to zbyt trudne na jakie się wydaje. W razie kłopotów, pytań mój mail to: adrian.slowik@wp.pl

[na górę]