Event



Otóż event to takie coś co inaczej możemy nazwać zdarzeniem, zdarzenie wywoływane zawsze kiedy zajdą sprzyjające mu warunki. Poniżej opiszę eventy do standartowych komponetów i formularza Delphi [opierając się na D6].

procedure TForm1.FormActivate(Sender: TObject);
begin
// wywoływana kiedy forma Form1 staje się spowrotem aktywnym oknem
end;
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
begin
// wywołana tuż przed zmianą wielkości okna NewWidht i NewHeight oznaczają właśnie tę wielkość,
// a Resize oznacza czy pozwolimy na tą zmianę. Resize:=False i niezmienimy rozmiaru okienka
end;
procedure TForm1.FormClick(Sender: TObject);
begin
// wywołane gdy klikniemy myszką w obrębie formy
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// jeśli jest to główna forma aplikacji to w tym miejscu możemy zwalniać zasoby, event wywoływany
// gdy dane okno jest zamykane (zaknięcie głównej formy powoduje wyłączenie programu) 
// Action jest to akcja jaką ma wykonać, najbardziej przydatne to:
// Action:=caNone; - nie robi nic nawet nie zamyka okienka
// Action:=caFree; - zamyka okno i zwalnia
// pozowstawienie Action bez zmian powoduje zamknięcie okna
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
// żądanie zamknięcia okienka, CanClose:=True oznacza, że zezwalamy na to
end;
procedure TForm1.FormConstrainedResize(Sender: TObject; var MinWidth,
  MinHeight, MaxWidth, MaxHeight: Integer);
begin
// tutaj możemy ustawić minimalne i maxymalne rozmiary okna dopuszczalne przez nas podczas
// zmiany rozmiaru
end;
procedure TForm1.FormContextPopup(Sender: TObject; MousePos: TPoint;
  var Handled: Boolean);
begin

end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// wywoływane gdy forma jest tworzona
end;
procedure TForm1.FormDblClick(Sender: TObject);
begin
// a tu gdy wykonamy dwuklik na okienku
end;
procedure TForm1.FormDeactivate(Sender: TObject);
begin
// kiedy forma przestaje byc aktywna
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
// a to chwila przed zniszczeniem [zwolnieniem] formy
end;
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
// kiedy wykonamy Drag a potem Drop wtedy ten event zostanie wywołany
// Source to obiekt z którego dragowaliśmy, natomiast X, Y to współrzędne
// wykonania dropa
end;
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
// kiedy zrobiliśmy Drag i wykonujemy Over [przesywamy to co dragneliśmy myszką]
// Source j/w, X i Y to współrzene w których właśnie robimy Over
// Accept:=True ozanacza, że akceptujemy w tym miejscu wykonanie Dropa
end;
procedure TForm1.FormHide(Sender: TObject);
begin
// kiedy użyjemy procedury Form1.Hide; wtedy ten event zostanie uruchomiony
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
// gdy wciśniesz klawisz i trzymasz wciśnięty klawisz 
// Key to klawisz który się wcisnął
// Shift to klawisz typu ssAlt lub ssShift
// np. if (Shift=ssAlt) and (Key=VK_RETURN) then wciśneliśmy Alt+Enter
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
// zwykłe naciśniecię klawisza czyli nacisnąć i puścić tutaj mamy Key jako Char
// czyli odrazu wiemy co się nacisło i możemy zrobić np. tak
Form1.Caption := Form1.Caption + Key;
end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
// gdy się coś nacisło to prędzej czy później się to puści i wtedy właśnie przychodzi
// z pomocą ten event paramerty takie same jak w KeyDown
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
// podobnie jak z klawiaturą tyleże tu jest myszka, event uruchamiany gdy naciśniemy któryś
// z przycisków myszki, oczym daje znać Button [mbLeft, mbRight lub mbMiddle]
// Shift to tak jak w kibordzie [ssAlt lub ssShift]
// X i Y współrzędne wciśnięcia myszki
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
// najczęściej uruchamiany event, włącza się on gdy ruszamy myszką po formie
// X i Y to aktualne położenie kursora myszki na formie, a Shift już chyba jest znany
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
// gdy zrobiliśmy MouseDown kolej na MouseUp, wszystko tak samo jak w MouseDown
end;
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
// tutaj obsługujemy co zrobić gdy ktoś bawi się w kręcenie rolką
end;
procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
// a tutaj nic nie powiem bo niemam rolki :P
// ale chyba chodzi o to że czasmi rolke to przycisk [szczególnie w modelach 2-rolkowych]
end;
procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
// j/w :P
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
// kiedy rysujemy jakieś Bitmapy na formie, to proponuję tutaj wstawić odrusowanie tego
// gdyż samo z siebie to się nie weźmie, otóż Windows nie przechowuje każdego okna
// jako jakiś obraz, więc gdy zasłonimy nasze okienko czymś innym, a potem odsłonimy
// Windows wysyła do naszego okienka kominikat "Odmaluj się" 
// jeśli ktoś nie jarzy to proponuję abyście wczytali jakąś bitmapę do uprzednio
// stworzonej zmiennej, a potem Form1.Canvas.Draw(10,10,Bitmapa). Następnie F9 i zasłoncie
// kawałek okienka z tą bitmapą a potem odsłońce :)
end;
procedure TForm1.FormResize(Sender: TObject);
begin
// gdy formie zmienia się rozmiar 
end;
procedure TForm1.FormShow(Sender: TObject);
begin
// gdy forma jest pokazywana czyli np. Form1.Show;
end;
Dla wielu komponentów istnieją te same Eventsy przeglądając paletę komponentów możma by dodać jeszcze

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
// dostępne też dla TEdit i innych komponentów, w które możma wpisywać dane
// wywoływane gdy zawartość się zmiania
end;
procedure TForm1.Label2MouseEnter(Sender: TObject);
begin
// w D6 [bo w D3 nie było] mamy takie coś dla Labela
// wywoływane gdy najedziemy nań myszką
end;
procedure TForm1.Label2MouseLeave(Sender: TObject);
begin
// a to gdy zjedziemy myszką z Labela, to także dopiero chyba w D6 [w D3 nie było] 
end;
Zazwyczaj eventy są tak dobrze nazywane, że można poznać do czego są, jak działają i kiedy są uruchamiane jeśli choć trochę rozumie się angielski.



...powrót