Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałWiesława Grzechowiak Został zmieniony 11 lat temu
1
Obiekty dynamiczne Tworzenie klas 3 MPDI Programowanie obiektowe W4
2
implementation var etykieta:TLabel; Generowanie instancji zdefiniowanych klas Mamy przykładowo wbudowaną klasę TLabel Utwórzmy obiekt dynamiczny - jako odpowiedź na zdarzenie w czasie biegu uruchomionego programu. Definiujemy zmienną – globalnie lub lokalnie:
3
procedure TForm1.Button1Click(Sender: TObject); begin etykieta:=TLabel.create(self); //utworzenie etykieta.Parent:=self; //rodzic etykieta.Left:=10; etykieta.Top:=100; etykieta.Caption:='Jakis napis'; end; procedure TForm1.Button2Click(Sender: TObject); begin etykieta.Destroy;// zniszczenie end; Przyciski i obsługa zdarzeń
4
procedure TForm1.FormCreate(Sender: TObject); var przycisk: TButton; begin przycisk:=TButton.Create(self); przycisk.Left:=10; // pozycja X przycisk.Top:=10; // pozycja Y przycisk.Width:=140; // szerokość przycisku przycisk.Height:=40; // wysokość przycisku przycisk.Caption:='Przycisk dynamiczny'; // podpis przycisku przycisk.Parent:=self; // rodzic przycisku - formularz przycisk.Visible:=True; // czy widoczny end;
5
var i:1..10; begin for i:=1 to 5 do begin tab[i]:=TButton.create(self); tab[i].Parent:=self; tab[i].left:=100+50*i; tab[i].top:=100; tab[i].Width:=40; tab[i].Caption:=inttostr(i); end end; implementation var tab:array[1..10] of TButton; Na kliknięcie przycisku: Wiele instancji obiektu
6
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var tutaj:TShape; begin tutaj:=TShape.create(self); tutaj.Parent:=self; tutaj.Left:=x; tutaj.Top:=y; tutaj.Style end; implementation var tutaj:TShape; Na naciśnięcie klawisza myszki dla Form tworzymy kod: Sterowanie lokalizacją obiektu
7
Tworzenie nowej klasy TPunkt = class(TObject) public x:Integer; y:Integer; procedure przesun(dx,dy:Integer); constructor Create; destructor Destroy;override; end; //koniec definicji
8
dla TObject override - słowo kluczowe języka Delphi - dyrektywa służącą do przedefiniowywania (nadpisywania) metod. Przedefiniowywane mogą być tylko metody klas, oznaczone jako wirtualne i dynamiczne (virtual, dynamic): Create – to metoda statyczna – nie wolno przedefiniowywać, metody opatrzone słowem kluczowym static zapewniają dostęp do klasy bez konieczności wywoływania konstruktora czy odwoływania się do instancji klasy – wrócimy do tematu w Javie Destroy – metoda wirtualna – może być przedefiniowana
9
//konstruktor constructor TPunkt.create; begin inherited create;//dziedziczona od TObject //i tu ewentualne zmiany end; //destruktor destructor TPunkt.destroy; begin inherited destroy; //dziedziczona od TObject end; procedure TPunkt.przesun(dx, dy: Integer); begin x:=x+dx; y:=y+dy; end; W sekcji Implementation dopisujemy opis metod:
10
Można pominąć definiowanie konstruktora i destruktora – wtedy są dziedziczone z klasy macierzystej
11
procedure TForm1.Button1Click(Sender: TObject); begin p:=TPunkt.create; p.x:=30; //nadanie wartości polu p.y:=40; edit1.Text:=IntToStr(p.x); edit2.Text:=IntToStr( p.y); end; zdarzenie var Form1: TForm1; p: TPunkt; Tworzymy zmienną:
12
procedure TForm1.Button1Click(Sender: TObject); begin p.przesun(4,4);//wykorzystanie metody edit1.Text:=IntToStr(p.x); edit2.Text:=IntToStr( p.y); Form1.Canvas.Pixels[p.x,p,y]:=clRed; end; inne zdarzenie
13
constructor TPunkt.create; begin inherited create; x:=0; y:=0; end; W procedurze create możemy dopisać inicjację wartości pól – można je wtedy usunąć z obsługi przycisku:
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.