|
Zapewne pamiętasz zmienne (rozdział 3). Wykorzystywaliśmy je by nie podawać w paru miejscach tych samych wartości, tekestów itp. Często zachodzi potrzeba wykonania danej czynności w kilku miejscach naszego programu (pętla, rysowanie itp.). Przydałoby się nam coś podobnego do zmiennej. Do tego służą procedury, funkcje i moduły. Stworzymy prostą procedurę by zrozumieć na czym polega jej działanie: procedure Rysuj(x1, y1, x2, y2: Integer; kolor: TColor); begin Form1.Canvas.Brush.Color := kolor; Form1.Canvas.Rectangle(x1, y1, x2, y2); end;powyższa procedura rysuje kwadrat o podanym kolorze i w określonym obszarze. Aby wykorzystać procedurę Rysuj potrzebny nam będzie przycisk. Wstaw go na formę i w zdarzeniu OnClick wpisz: rysuj(10, 10, 50, 50, clGreen);Uruchom program i kliknij na przycisku. Zapewne zauważyłeś, że na formie został narysowany zielony kwadrat. Spytasz: "I po to są procedury". To jest tylko przykład. Rozpatrzmy taki przypadek: narysuj 100 kwadratów o różnych kolorach i w różnych miejscach. Kod procedury Rysuj zajmuje 2 linijki, a jej wykonanie tylko 1. A co gdyby procedura miała wykonać operacje mieszczące się w 100 linjikach kodu? Jak widać rozbudowany kod możemy sprowadzić do jednej linijki i wykorzystywać go w kazdym miejscu programu. Podobne do procedur są funkcje. Różnią się tym że deklarujemy jej wynik, tzn. czy ma to być tekst, liczba itp. Najlepiej coś wyjaśnić na przykładzie: function CzyZero(l1, l2: integer) : string;
begin
if l1 - l2=0 then
Result := 'Wynikiem jest zero'
else
Result := 'Wynikiem nie jest zero';
end;
Teraz wstaw na formę Button i dwa Labele. Pod zdarzenie OnClick
przycisku wpisz:Label1.Caption := CzyZero(10,234); Label2.Caption := CzyZero(10,10); Jak widać nasza funkcja działa poprawnie. Zwraca ona wyniku odejmowania tylko odpowiedni tekst. Wynik wykonania funkcji podajemy po słowie Result:=. Teraz zajmiemy się modułem. Jest to plik, który zawiera procedury i funkcje. Stworzymy moduł, który zawiera powyższe przykłady. Zamknij wszystkie projekty i utwórz nowy unit (File -> New -> Unit). Skasuj jego zawartość, wklej poniższy kod i przyjrzyj się mu: unit test;Zapisz go do jakiegoś katalogu (np c:\test) jako "test". Teraz utwórz nową aplikację (File -> New -> Application) i zapisz ją do tego samego folderu . Na formę wstaw Button i Label. Do deklaracji "uses" programu dodaj test. Teraz w zdarzeniu OnClick przycisku wpisz: rysuj(Form1.Canvas, 10, 10, 50, 50, clMaroon); Label1.Caption := CzyZero(100, 50);Jeżeli wwszystko wykonałeś prawidłowo to ujżysz taki sam efekt jak przy wykonaniu procedury Rysuj i funkcji CzyZero w podanych wcześniej przykładach. Jeżeli mamy wiele funkcji i procedur, z których korzystamy w naszym programie możemy utworzyć moduł. Po co? Zauważ, że kod programu staje się bardziej przejrzysty i estetyczny. ...powrót |