114 Aplikacje w Delphi. Przykłady
Program można napisać korzystając tylko z jednej procedury obsługi zdarzenia OnCl ick. Pokazuje to przykład 9.4.
W przykładzie zadeklarowano globalną tablicę stałych o nazwie ceny, zawierającą ceny. Dodatkowo wykorzystano właściwość Tag każdego komponentu TCheckBox. Właściwości Tag komponentu TCheckBoxl przypisano (w fazie projektowania w oknie Inspektora Obiektów) wartość 0, właściwości Tag komponentu TCheckBox2 wartość 1 itd. Wartości te są zgodne z indeksem w tablicy ceny. Na przykład dla komponentu TCheckBox2 (karta grafiki) wartość ceny w tablicy ceny wynosi 150.
//ta deklaracja powinna znaleźć się w sekcji interface const ceny:array[l..4] of integer=(500. 150.20,300);
var
s:integer; //zmienna globalna, może to być też pole klasy TForm
//treść procedury obsługi zdarzenia OnClick dla przycisku CheckBoxl procedurę TForml.CheckBoxlClick(Sender: TObject); var cena: integer; begin
cena:=ceny[TCheckBox(Sender).Tag];
if TCheckBox(Sender).Checked then s:=s+cena else s:=s-cena;
Labell.Caption: = 'suma=’+InttoStr(s); end:
Korzystając z Inspektora Obiektów przypisz procedurę CheckBoxlCl ick zdarzeniu OnCl ick pozostałych komponentów TCheckBox. Najlepiej zaznaczyć je wszystkie (np. z klawiszem Shift — jak przy grupowaniu obiektów), wybrać zakładkę Events, kliknąć w polu z prawej strony zdarzenia OnCl ick i wybrać nazwę CheckBoxlCl ick.
Na formularzu wstaw jeden komponent TImage z zakładki Additional oraz komponent TRadioGroup. W ramce TRadioGroup umieść cztery przyciski z nazwami czterech obrazków. Po wskazaniu jednego z pól wyboru na komponencie TImage powinien wyświetlać się obrazek — dla każdego przycisku inny.
Zaznacz komponent TRadioGroup i kliknij z prawej strony właściwości Items w okienku Inspektora Obiektów. W otwartym oknie edytora wpisz nazwy czterech obrazków (w czterech wierszach). Kliknij następnie komponent TRadioGroup i w procedurze obsługi zdarzenia OnCl ick wpisz instrukcje, takie jak w poniższej procedurze;
procedurę TForml.RadioGrouplClickCSender: TObject); begin
case RadioGroupl.Itemlndex of 0: Imagel.Picture.LoadFromFi1e('C:\WINNT\Nefryt.bmp');
1; Imagel.Pi cture.LoadFromFi1e('C:\WINNT\Na rybkach.bmp');
2: Imagel.Pi cture.LoadFromFilei'C:\WINNT\Puch.bmp'):