Wiele osób na forum pyta się o sprawy związane z obsługą PageControl. Postanowiłem napisać krótki artykuł przedstawiający możliwości tego komponentu.

Zacznijmy od podstaw – PageControl jest komponentem pozwalającym na tworzenie zakładek, takich jak np. palety komponentów w Delphi czy zakładki w FireFoxie. Na każdej zakładce możemy umieścić dowolne komponenty. Same zakładki tworzymy klikając prawym przyciskiem myszy na komponent i wybierając z menu opcję New Page.

Często nie będziemy chcieli tworzyć stron PageControl podczas pisania programu, tylko w razie potrzeby tworzyć i zamykać zakładki w czasie działania aplikacji. Dynamiczną stronę tworzymy tak jak wszystkie dynamiczne komponenty. Umieść na formie jeden Button i PageControl. W OnClick przycisku umieść kod:

Objaśnienie:

– tworzy nową zakładkę

– przypisuje tytuł zakładki

– określa komponent PageControl, na którym zakładka się pojawi

– przechodzi do utworzonej zakładki

Aby usunąć zakładkę postępujemy następująco:

Właściwość ActivePage zwraca aktualnie pokazaną stronę, a metoda Free usuwa ją.

Teraz pomówimy o komponentach na zakładkach. Załóżmy, że piszemy prosty edytor tekstowy z wieloma zakładkami. Jak zrobić, aby po wybraniu z menu opcji Nowy plik została utworzona nowa strona z komponentem Memo? Umieść na formie komponent MainMenu i utwórz w nim opcję Nowy.

Objaśnienie:

– tworzy komponent Memo

– ustawia rozmiar Memo na całą zakładkę

– ustala Memo na zakładce (nowa strona jest rodzicem Memo)

W porządku, mamy już tworzenie nowych elementów edytora. Użytkownik programu pisze swój tekst, następnie chce go zapisać do pliku. Aby to zrobić, użyjemy metody

Jak jednak dostać się do niej nie znając nazwy komponentu Memo? Do każdego komponentu na zakładce możemy się odwołać poprzez właściwość Controls. Jeżeli mamy na stronie tylko komponent Memo wystarczy napisać:

Jeżeli na zakładce jest więcej komponentów musimy sprawdzić w pętli wszystkie elementy tablicy Controls i sprawdzić, czy są one typu TMemo:

I to by było na tyle. Mam nadzieję, że przydał się Wam mój pierwszy artykuł na Unit1. Może będą następne :D.

Autor: Stark