lab 1 - Instytut Sterowania i Systemów Informatycznych
Transkrypt
lab 1 - Instytut Sterowania i Systemów Informatycznych
Laboratorium: Bazy danych dr inż. Marcin Witczak Instytut Sterowania i Systemów Informatycznych, Uniwersytet Zielonogórski 1 Wprowadzenie do środowiska programistycznego DELPHI Hierarchia obiektów Paleta komponentów Okno g³ówne Edytor kodu Inspektor obiektów 1.1 Projektant formularzy Okno główne Okno główne Delphi stanowi pewnego rodzaju „centrum dowodzenia” całego środowiska programistycznego, umożliwiajac ˛ dokonywanie podobnych operacji jak w innych programach Windowsowych oraz czynności specyficznych dla projektowanych aplikacji. Ważnym (o ile nie najważniejszym) elementem okna głównego jest paleta komponentów zawierajaca ˛ wi˛ekszość dost˛epnych komponentów zarówno wizualnych jak i nie wizulanych. 1.2 Paleta komponentów Paleta komponentów stanowi pewnego rodzaju pasek narz˛edziowy, jest ona podzielona na strony (zwane również zakładkami), na których sa˛ reprezentowane wszystkie zainstalowane komponenty VCL (Visual Component Library). Każda z zakładek zawiera określona˛ grup˛e tematyczna˛ komponentów, np. zakładka Dialogs zawiera podstawowe okienka dialogowe służace ˛ do zapisu lub odczytu plików, itd. 1.3 Projektant formularzy Służy do wizualnego projektowania wygladu ˛ poszczególnych okien programu poprzez „układanie” na nich odpowiednich komponentów z palety komponentów. 1 1.4 Inspektor obiektów Inspektor obiektów umożliwia zmian˛e poszczególnych właściwości (Properties) obiektów, takich jak wysokość, szerokość, sposób wyrównania na obiekcie macierzystym, itd. Drugim zadaniem przy którego realizacji wykorzystywany jest inspektor obiektów jest określanie sposobu reagowania na poszczególne zdarzenia (Events), takie jak aktywacja obiektu, destrukcja obiektu, minimalizacja okna, klikni˛ecie myszka,˛ itd. Z każdym ze zdarzeń zwiazana ˛ jest odpowiednia procedura jego obsługi (której nagłówek generowany jest automatycznie). Zadaniem projektanta aplikacji jest jej odpowiednie oprogramowanie. 1.5 Edytor kodu Jest miejscem umożliwiajacym ˛ programiście wprowadzenie odpowiedniego kodu. W przypadku projektowania aplikacji wielookienkowych dost˛ep do poszczególnych modułów dost˛epny jest za pomoca˛ zakładek, na których wyświetlane sa˛ nazwy modułów, np. Unit 1, Unit 2. Możliwe jest również dodawanie modułów kodu nie reprezentujacych ˛ żadnego okienka. 1.6 Hierarchia obiektów Okno odzwierciedlajace ˛ hierarchiczna˛ zależność obiektów (wyst˛epuje poczawszy ˛ od wersji 6). 2 Wprowadzanie kodu Podczas wizualnego projektowania aplikacji, np. przy dodawaniu kolejnych przycisków, można zaobserwować automatyczne dopisywanie odpowiedniego kodu w edytorze kodu, który zawiera moduł odpowiadajacy ˛ danemu formularzowi (okienku). Do pewnego stopnia możliwe jest również wizualne określenie zależności pomi˛edzy poszczególnymi obiektami, jednak wi˛ekszość pracy musi zostać wykonana w sposób „klasyczny”, tzn. poprzez r˛eczne wprowadzenie odpowiednich instrukcji. 2.1 Układ modułu Struktura każdego z modułów (Unitów) jest podobna i można w niej wyróżnić kilka stałych elementów, tzn. • Nazwa modułu, która wyst˛epuje po słowie unit. Jest ona taka sama jak nazwa pliku go zawierajacego ˛ np. Unit1 zawarty w Unit1.pas. • Interfejs (Interface), cz˛eści modułu zawierajace ˛ wszystkie definicje (np. typów) i deklaracje (np. zmiennych) „widoczne” dla innych modułów go używajacych. ˛ • Za słowem uses znajduja˛ si˛e nazwy modułów wykorzystywanych przez bieżacy ˛ moduł. Słowo uses może wyst˛epować zarówno w cz˛eści interfejsu jak i w cz˛eści implementacyjnej. • Deklaracje zmiennych, np. var Form1:TForm1 - polecenie deklarujace ˛ zmienna˛ Form1 typu TForm1. Deklaracje zmiennych moga˛ wyst˛epować zarówno w cz˛eści interfejsu, jak i w cz˛eści implementacyjnej. • Cz˛eść implementacyjna (implementation) - najcz˛eściej zawiera implementacje procedur lub metod zadeklarowanych w cz˛eści interfejsu. W cz˛eści tej można również dokonywać rożnego rodzaju deklaracji (np. zmiennych) lub definicji (np. typów), jednak należy pami˛etać, że b˛eda˛ one miały jedynie charakter lokalny, tzn. b˛eda˛ „widoczne” tylko w danym module. Z każdym z modułów reprezentujacych ˛ formularz zwiazana ˛ jest klasa go reprezentujaca, ˛ która ma postać nast˛epujacego ˛ typu type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; Jak łatwo zauważyć formularz jest typem pochodnym w stosunku do TForm. Stosowne komentarze wskazuja˛ miejsce do wprowadzania własnych deklaracji klasy - prywatnych i publicznych. Ważnym szczegółem w przypadku modułów reprezentujacych ˛ formularze jest dyrektywa. 2 {$R *.DFM} Służy ona do połaczenia ˛ modułu z reprezentujacym ˛ formularz plikiem zasobu o rozszerzeniu .DFM (Delphi ForM). Natomiast gwiazdka symbolizuje nazw˛e modułu, np. Unit1. 2.2 Program główny Program główny projektu przechowywany jest w pliku o rozszerzeniu .DPR, który można przegladać ˛ za pomoca˛ polecenia Project|View Source. W przeciwieństwie do „klasycznego” Pascala, rola programu głównego została zredukowana jedynie do funkcji organizacyjnej. 3 Zarzadzanie ˛ formularzami 3.1 Edycja właściwości formularza Poniżej przedstawione sa˛ najcz˛eściej wykorzystywane właściwości formularza: Align: Wyrównanie formularza (widoczne po uruchomieniu). AutoSize: Automatyczny dobór rozmiaru formularza w zależności od jego wykorzystania - ilości wolnego miejsca (widoczne po uruchomieniu). BorderIcons: Określa zestaw ikon formularza, np. czy na formularzu ma wyst˛epować ikona służaca ˛ jego minimalizacji (widoczne po uruchomieniu). BorderStyle: Określa styl ramki formularza, np. styl bsDialog oznacza, że okienko b˛edzie okienkiem dialogowym, którego rozmiaru nie można zmieniać (widoczne po uruchomieniu). Caption: Określa nazw˛e wyświetlana˛ na formularzu (na jego belce). Height i Width: Określaja˛ wymiary okienka. Left i Top: Określaja˛ współrz˛edne lewego górnego rogu formularza. Name: Określa nazw˛e obiektu reprezentujacego ˛ formularz do której można si˛e odwoływać w kodzie programu (Nie mylić z Caption!!!). Position: Determinuje pozycje formularza po uruchomieniu, np. poScreenCentre oznacza, że formularz zostanie wyśrodkowany wzgl˛edem ekranu. WindowState: Determinuje stan okna po uruchomieniu, np. wsMinimized oznacza, że formularz pojawi si˛e w postaci zminimalizowanej. Zmieniajac ˛ powyższe właściwości (Inspektor obiektów) można uzyskać pożadane ˛ zachowanie i wyglad ˛ formularza. Właściwości można również zmieniać podczas działania programu. Wymaga to jednak wprowadzenia odpowiedniego kodu. Przykładowo jeżeli dysponujemy formularzem o nazwie Form1 to stosujac ˛ operator wyłuskania . i operator przypisania := możemy zmienić nazw˛e wyświetlana˛ na formularzu (właściwość Caption), co realizuje si˛e nast˛epujaco ˛ Form1.Caption:=’Nowa nazwa’; Powyższy kod możemy umieścić przykładowo w procedurze obsługi jakiegokolwiek ze zdarzeń zwiazanych ˛ z samym formularzem lub z innym komponentem. 3.2 Zdarzenia zwiazane ˛ z formularzem Poniżej przedstawione sa˛ najcz˛eściej wykorzystywane zdarzenia formularza: OnActivate: Wywoływane podczas aktywacji formularza. OnClick: Wywoływane podczas klikni˛ecia myszka˛ w formularz. OnClose: Wywoływane przy zamykaniu formularza. 3 OnCreate: Wywoływane podczas tworzenia obiektu formularza. OnDestroy: Wywoływane przy destrukcji obiektu formularza. OnDblClick: Wywoływane podczas dwukrotnego klikni˛ecia myszka˛ w formularz. Powyższe zdarzenia można oprogramować poprzez wygenerowanie ciała procedury je obsługujacej, ˛ np. klikajac ˛ dwukrotnie w wolne pole obok nazwy danego zdarzenia (Inspektor obiektów), a nast˛epnie wprowadzenie odpowiedniego kodu. 4 Zadania 1. Zmienić nazw˛e głównego formularza na F_Main, natomiast moduł go reprezentujacy ˛ zapisać (w katalogu ROBOCZYM) pod nazwa˛ Main. 2. Zmienić tytuł formularza na „Pierwszy program”. 3. Sprawić aby formularz po uruchomieniu pojawiał si˛e na środku ekranu i miał stały wymiar bez możliwości jego modyfikacji. 4. Sprawić aby formularz pojawiał si˛e bez dodatkowych ikonek służacych ˛ zamykaniu, zmianie statusu, itp. 5. Sprawić aby formularz pojawiał si˛e na całym ekranie. 6. Sprawić aby formularz pojawiał si˛e w postaci zminimalizowanej. 7. Jeżeli wywołanie procedury ShowMessage(’Komunikat’); powoduje pojawienie si˛e na ekranie okienka z „Komunikatem” i przyciskiem OK, oprogramować procedury odpowiednich zdarzeń tak, aby przy tworzeniu, aktywacji, zamykaniu i destrukcji formularza pojawiały si˛e odpowiednie komunikaty. 8. Oprogramować odpowiednie zdarzenia tak, aby przy jednokrotnym klikni˛eciu w formularz nazwa wyświetlana na jego belce zmieniała si˛e na „Jeden”, natomiast przy dwukrotnym na „Dwa”. 9. Stosuja˛ komponenty z zakładek: Standard - Komponenty Label i Panel. Additional - Komponenty BitBtn i Shape. DataControls - Komponenty: DBEdit, DBMemo, DBComboBox i DBCheckBox. ułożyć nast˛epujacy ˛ interfejs formularza. 4