Aplikacje na wielu formularzach
Włączanie formularzy do aplikacji
Repozytorium to zestaw wzorcowych formularzy, które programista może wykorzystać w aplikacjach. Przechodzimy tam wybierając z menu File→New. Poniższe ćwiczenie przybliży korzystanie z Repozytorium.
Ćwiczenie 3.1
Zadanie aplikacji
Aplikacja zawiera formularz podstawowy, który ma trzy przyciski: Otwórz formularz, Otwórz dialog i Info. Po naciśnięciu przycisku pokazuje się nowy formularz określonego typu: About, Standard Dialog oraz formularz pusty.
Nowe umiejętności
Dołączanie nowego formularza do projektu aplikacji. Korzystanie z formularzy About i Dialog zawartych w Repozytorium.
Na formularzu umieść etykietę i trzy przyciski z napisami: Otwórz formularz, Otwórz dialog i O programie. Aby przyciski miały jednakowe rozmiary, możesz posłużyć się kopiowaniem.
Korzystając z menu File→New Form, dodaj do aplikacji nowy formularz.
Przyciskami Shift+F12 przejdź do wyboru formularza Form1. Dla zdarzenia On Click przycisku Otwórz formularz wpisz procedurę:
procedure Tform1.Button1Click(Sender: Tobject);
begin
Form2.Show;
end;
Wybierz z opcji menu: File->New i dodaj do projektu formularz typu About box z karty Forms. Zmień napisy na etykietach na teksty polskie. Do przycisku OK przypisz procedurę:
procedure TaboutBox.OKButtonClick(Sender: Tobject);
begin;
AboutBox.Close; //zamknięcie formularza AboutBox
end;
Przejdź do formy Form1. Dodaj do przycisku z napisem O programie procedurę-zdarzenie:
procedure Tform1.Button1ClickCSender: Tobject);
begin
AboutBox.Show; //uwidocznienie formularza AboutBox
end;
Wybierz z menu: File->New i dodaj z karty Dialogs formularz typu Standard Dialog:
zmień napis na przycisku Abort na Anuluj
dodaj pole edycji
wpisz dla przycisku OK treść procedury:
procedure TOKBottomDlg.OKBtnClick(Sender: Tobject);
begin
Form1.Label1.Caption:=Edit1.Text;
OkBottomDlg.Close;
end;
dla przycisku Anuluj wpisz treść procedury:
procedure TOKBottomDlg.CancelBtnClickCSender: Tobject);
begin
OkBottomDlg.Close;
end;
Przejdź do formularza Forml. Do przycisku Otwórz dialog przypisz procedurę:
OKBottomDlg.Show
Skompiluj moduł. Przez wciśnięcie przycisku Yes w pokazującym się podczas kompilacji oknie komunikatu potwierdź dołączanie brakujących elementów do j projektu.
Sprawdź działanie aplikacji.
Obejrzyj kody dołączonych modułów.
Dynamiczne dołączanie formularzy
Formularze dołączane w sposób przedstawiony w poprzednim podrozdziale istnieją cały czas w pamięci operacyjnej. Są uwidoczniane w miarę potrzeby. Przy dużych aplikacjach taka metoda nie jest odpowiednia, gdyż blokuje pamięć operacyjną. Należy wtedy przejść do dynamicznego tworzenia formularzy. Ten sposób będzie pokazany w następnym ćwiczeniu.
Ćwiczenie 3.2
Zadanie aplikacji
Aplikacja korzysta z dwóch formularzy. Formularz podstawowy (Form1) zawiera przycisk z napisem Utwórz formularz, którego naciśnięcie wywołuje akcję dynamicznego tworzenia formularza Form2. Utworzony formularz zostaje zlikwidowany dla zdarzenia OnClose.
Nowe umiejętności
Organizacja projektu z formularzami tworzonymi dynamicznie.
Do nowego projektu dodaj dwa formularze.
Przejdź do pliku projektu, wykasuj polecenie tworzenia formularza Form2. Treść projektu po zmianie:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' (form1),
Unit2 in 'Unit2.pas' (Form23; ,
($R *.RES)
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Umieść na formularzu Form1 przycisk polecenia. Dla zdarzenia OnClick wpisz kod procedury tworzenia formularza:
procedure TForml.Button1Click(Sender: TObject);
begin
if Form2=nil then //sprawdzenie, czy formularz istnieje
Form2:=TForm2.Create(Application);
// gdy nie istnieje, utworzenie formularza przez wywołanie konstruktora Create
Form2.Show; // uwidocznienie utworzonego formularza
end;
Przejdź do formularza Form2 i w procedurze dla zdarzenia OnClose ustaw sposób zamykania formularza na likwidowanie z pamięci:
procedure TForm2.FormClose(Sender:TObject; var Action:TCloseAction);
begin
Action :=caFree; //wywołanie procedury zwalniającej pamięć
end;
Dla zdarzenia OnDestroy (likwidacja obiektu) przypisz zmiennej Form2 wartość zera wskaźnikowego:
procedure TForm2.FormDestroy(Sender: TObject);
begin
Form2:=Nil;
end;
Skompiluj aplikacje, wciskając przycisk Yes w pokazującym się oknie komunikatu, dodaj do projektu brakujące elementy.
Sprawdź działanie aplikacji.
Zadanie l
Aplikacje z poprzedniego podrozdziału przekształć tak, aby formularze tworzone były dynamicznie.
3