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