Upload
yitro
View
30
Download
0
Embed Size (px)
DESCRIPTION
Negyedik Generációs Nyelvek ( Delphi ). 1.Többablakos applikációk TForm komponens Dialógusablakok 2. Kivételek kezelése 3. Drag & Drop technika. 1. TÖBBABLAKOS APPLIKÁCIÓK. TabControl Fülsor egy lappal. PageControl Fülsor több lappal. Animate Animáció. ToolBar Eszközsor. - PowerPoint PPT Presentation
Citation preview
1. Többablakos applikációkTForm komponensDialógusablakok
2. Kivételek kezelése3. Drag & Drop technika
Negyedik Generációs Negyedik Generációs NyelvekNyelvek
( Delphi ) ( Delphi )
Negyedik Generációs Negyedik Generációs NyelvekNyelvek
( Delphi ) ( Delphi )
1. TÖBBABLAKOS 1. TÖBBABLAKOS APPLIKÁCIÓKAPPLIKÁCIÓK
1. TÖBBABLAKOS 1. TÖBBABLAKOS APPLIKÁCIÓKAPPLIKÁCIÓK
DelphiDelphiIII / III / 33
TabControlFülsor
egy lappal
PageControlFülsor
több lappal
AnimateAnimáció
StatusBarÁllapotsor
ToolBarEszközsor
DateTimePickerDátumkezelő
DelphiDelphiIII / III / 44
Többablakos applikációkTöbbablakos applikációk• Egy ablakban több oldalra helyezett info. (ld.
TPageControlTPageControl, TTabControlTTabControl komponensek)
• Több egymással kommunikáló ablak
DelphiDelphiIII / III / 55
Többablakos applikációkTöbbablakos applikációk
• Szerepe: fülsor egy lappal.Akkor használjuk, ha a különböző füleken található információ szerkezete azonos, csak a tartalma változik.
• Jellemzői:
• TabsTabs: TStrings: a fülek feiratát tartalmazza külön sorokban
• TabIndexTabIndex: az aktuális fül indexe (az első indexe 0)
• TabPositionTabPosition: tpTop, tpBottom, a fülek pozíciója
TTabControl TTabControl
DelphiDelphiIII / III / 66
Többablakos applikációkTöbbablakos applikációk
• Fontos eseményei
• OnChangeOnChange: fülváltáskor következik be. A TabIndex ilyenkor az új fül indexét tartalmazza.
• OnChangingOnChanging: fülváltás közben következik be
TTabControl TTabControl
DelphiDelphiIII / III / 77
Többablakos applikációkTöbbablakos applikációk
Szerepe: fülsor több lappal.Minden fülhöz tartozik egy lap.
Fontosabb jellemzői:
• ActivePageActivePage: az aktuális lapÚj lap: gyorsmenü, New Page, felirat a Caption jellemzőbe
• TabPositionTabPosition: tpTop, tpBottom, a fülek pozíciója
TPageControlTPageControl
DelphiDelphiIII / III / 88
Többablakos applikációkTöbbablakos applikációk
Fontos eseményei
• OnChange: fülváltáskor következik be. A TabIndex ilyenkor az új fül indexét tartalmazza.
• OnChanging: fülváltás közben következik be
TPageControlTPageControl
DelphiDelphiIII / III / 99
Többablakos applikációkTöbbablakos applikációk
Egy applikáció tartalmazhat:
• Egyszerű adatbeviteli és üzenetablakokat
• Windows által felkínált párbeszédablakokat ( TOpenDialog, TPrinterSetupDialog,...)
• Előzőleg megtervezett és mintaként (template) elmentett formokat
• Saját tervezésű ablakokat ( a TForm osztály felhasználásával egy új formosztály létrehozása)
Többablakos applikációkTöbbablakos applikációk
DelphiDelphiIII / III / 1010
Többablakos applikációkTöbbablakos applikációk
Ezek közül:
• egyesek automatikusan létrejönnek (autocreate), mások nem
• egy főablak (main form) van, és ennek automatikusan kell létrejönnie
Ablakok megjelenítési formái:
• Modális (tipikus párbeszédablakok)
• Nem modális (Modeless)
Többablakos applikációkTöbbablakos applikációk
DelphiDelphiIII / III / 1111
Egyszerű adatbeviteli és üzenetablakokEgyszerű adatbeviteli és üzenetablakokEzek az ablakok modálisan jelennek meg ShowMessage
procedure ShowMessage(const Msg: WideString);
A lehető legegyszerűbb üzenetablak A lehető legegyszerűbb üzenetablak szöveggel, és egy OK gombbal.szöveggel, és egy OK gombbal.Az ablak címsorában az alkalmazásunkAz ablak címsorában az alkalmazásunkprojektállományának neve található.projektállományának neve található.Az ablak a képernyő közepén jelenik meg.Az ablak a képernyő közepén jelenik meg.
DelphiDelphiIII / III / 1212
Egyszerű adatbeviteli és üzenetablakokEgyszerű adatbeviteli és üzenetablakok
Procedure ShowMessage(Szöveg: String);
Pl.:ShowMessage ('Bármilyen üzenet');
Projekt neveProjekt neve
Egyszerű üzenetablakokEgyszerű üzenetablakok
DelphiDelphiIII / III / 1313
Egyszerű adatbeviteli és üzenetablakokEgyszerű adatbeviteli és üzenetablakokEzek az ablakok modálisan jelennek meg Inputbox function InputBox(const ACaption, APrompt, ADefault: WideString ): WideString;
Beviteli ablak, a bekért adat típusa string, double, vagy integer.
DelphiDelphiIII / III / 1414
Function InputBox(Cím, KérőSzöveg, Alapérték: String): String;
program Peldapr;uses Forms,Dialogs, Koszon in 'KOSZON.PAS' {Pelda};{$R *.RES}begin If Inputbox('Bejelentkezési ablak',
'Gépelje be a jelszót', '')= 'A jelszó' thenbegin Application.CreateForm(TPelda, Pelda); Application.Run;...
Egyszerű adatbevitelEgyszerű adatbevitel
DelphiDelphiIII / III / 1515
Egyszerű adatbeviteli és üzenetablakokEgyszerű adatbeviteli és üzenetablakokEzek az ablakok modálisan jelennek meg MessageDlg function MessageDlg(const Msg: string;
DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Word;
Beviteli ablak, a bekért adat típusa string, double, vagy integer.
DelphiDelphiIII / III / 1616
Többablakos applikációkTöbbablakos applikációk
Function MessageDlg( Szöveg: String; Típus: TMsgDlgType;Gombok: TMsgButtons; Súgóidx: LongInt): Longint;
Pl.MessageDlg('Kívánja menteni aváltozásokat?',mtConfirmation,
[mbNo, mbOk,mbCancel], 0);
Egyszerű üzenetablakokEgyszerű üzenetablakok
DelphiDelphiIII / III / 1717
Többablakos applikációkTöbbablakos applikációk
• CRT applikáció= DOS - os applikáció fehér ablakban
• SDI (Single Document Interface)Egy ablakos Windows applikációVan: menüje, eszközsora, állapotsora,..
• MDI (Multiple Document Interface)
Egyetlen alkalmazás felügyelete alatt, egyszerre több ablakban jeleníthetünk meg adatokat, grafikát, és azokkal párhuzamosan dolgozunk (pl. WinWord, Filekezelő,... )
Applikációk típusaiApplikációk típusai
DelphiDelphiIII / III / 1818
Többablakos applikációkTöbbablakos applikációk
• Egy főablak (keretablak, MDIFrame)Van: címsora, menüje, eszközsora, állapotsora
• Akárhány gyerekablak (MDIChild)Ezekben jelenítjük meg az adatokatVan: címsoruk, rendszermenüjükNincs: saját menüjük
Az MDI applikáció részei:Az MDI applikáció részei:
DelphiDelphiIII / III / 1919
Többablakos applikációkTöbbablakos applikációk
• A keretablak az applikáció főablaka; automatikus létrehozású
• A gyerekablak nem automatikus, futáskor hozunk létre egy vagy több példányt
• Mindig csak egy gyerekablak lehet aktív
• A gyerekablakok a keretablak munkaterületén belül helyezkednek el
• A keretablak bezárása maga után vonja a gyerekablakok bezárását is
Szabályok:Szabályok:
DelphiDelphiIII / III / 2020
Többablakos applikációkTöbbablakos applikációk
• A felhasználói interfész megtervezését teszi lehetővé
• Tartalmazza az összes "rácipelt" komponenst
• Fontosabb jellemzői:• Caption: String (címsorban jelenik meg)
• BorderIcons: Set of TBorderIconpl. [biSystemMenu, biMinimize, biMaximize]
• BorderStyle: bsDialog, bsSizeable,...
• AutoScroll: Boolean
TForm komponensTForm komponens
DelphiDelphiIII / III / 2121
Többablakos applikációkTöbbablakos applikációk
• HorzScrollBar, VertScrollBar: TControlScrollBar
• ClientWidth, ClientHeigth: Integer
• Position: poDesigned, poScreenCenter
• Icon: TIcon (ikonja minimizált állapotban; ha nincs megadva az applikációét használja)
• ShowHint: Boolean (buboréksugót jelenítsen-e meg, vagy sem?)
• WindowState: wsNormal, wsMaximized, wsMinimized
TForm komponensTForm komponens
DelphiDelphiIII / III / 2222
Többablakos applikációkTöbbablakos applikációk
• MenuMenu:: TMainMenu (főmenüje)
• ModalResultModalResult: mrOk, mrCancel,...(bezárása után jelzi bezárásának okát)
• KeyPreviewKeyPreview: Boolean ( = True a billentyűzet üzeneteket előbb ő kapja, és csak utána a fókuszban levő komponens. (ld. számológép gombjainak lenyomása billentyűzetről)
• FormStyleFormStyle: TFormStylefsNormal, fsMDIForm, fsMDIChild, fsStayOnTop
TForm komponensTForm komponens
DelphiDelphiIII / III / 2323
Többablakos applikációkTöbbablakos applikációk
MDI keretablak esetén:MDIChildCountMDIChildCount: Integer
(megnyitott gyerekablakok száma)
MDIChildrenMDIChildren [ I: Integer]: TForm
ActiveMDIChildActiveMDIChild: TForm
WindowMenuWindowMenu: TMenuItem(melyik menüpont alján jelenjen meg a nyitott gyerekablakok listája)
TForm komponensTForm komponens
DelphiDelphiIII / III / 2424
Többablakos applikációkTöbbablakos applikációk
Fontosabb metódusai:
• procedure ShowShow
• function ShowModalShowModal: Integer(modálisan jeleníti meg az ablakot, majd bezárása után visszaadja a kilépés okát)
• PrintPrint (kinyomtatja az ablakot)
• CloseClose
• CloseQueryCloseQuery: Boolean
TForm komponensTForm komponens
DelphiDelphiIII / III / 2525
Többablakos applikációkTöbbablakos applikációk
• MDI keretablak esetén:NextNext
(aktivizálja a köv. gyerekablakot)
TileTile
CascadeCascade
ArrangeIcons
gyerekablakogyerekablakok rendezések rendezése
TForm komponensTForm komponens
DelphiDelphiIII / III / 2626
Többablakos applikációkTöbbablakos applikációk
Fontosabb eseményei:
• OnCreateOnCreate (életrekeltése)
• OnShowOnShow (megjelenítése)
• OnActivateOnActivate (aktivizálása)
• OnPaintOnPaint (újrarajzolása)
• OnDeactivateOnDeactivate (fókusz elvesztése)
• OnCloseOnClose (bezárás)
• OnCloseQueryOnCloseQuery (bezárás előtt)
• OnDestroyOnDestroy (megszüntetés)
TForm komponensTForm komponens
DelphiDelphiIII / III / 2727
SDI alkalmazásokbanSDI alkalmazásokban
Több ablak együttműködése egy Több ablak együttműködése egy applikációbanapplikációban
MainFormMainForm
frmHarmadikfrmHarmadik
DelphiDelphiIII / III / 2828
Többablakos applikációkTöbbablakos applikációk
• Ha egy űrlapról (MainForm) meg szeretnénk jeleníteni egy másik űrlapot (frmHarmadik), akkor: a láthatóságot biztosítanunk kell (uses
uHarmadik)
megjelenítjük:
Modálisan Nem modálisan
frmHarmadik.ShowModal frmHarmadik.Show
Több ablak együttműködése egy Több ablak együttműködése egy applikációbanapplikációban
DelphiDelphiIII / III / 2929
unit Umain;interfaceuses SysUtils, ...typeTfrmMain=class(TForm)
... end;Var frmMain: TfrmMain;implementationUses uAbout;procedure TfrmMain.AboutmenuClick
(Sender: TObject);begin frmAbout.ShowModal;end;
unit Umain;interfaceuses SysUtils, ...typeTfrmMain=class(TForm)
... end;Var frmMain: TfrmMain;implementationUses uAbout;procedure TfrmMain.AboutmenuClick
(Sender: TObject);begin frmAbout.ShowModal;end;
unit Uabout;interfaceuses
WinTypes,...typeTfrmAbout = class(TForm)
... end;var frmAbout: TfrmAbout;implementation...end.
unit Uabout;interfaceuses
WinTypes,...typeTfrmAbout = class(TForm)
... end;var frmAbout: TfrmAbout;implementation...end.
DelphiDelphiIII / III / 3030
Többablakos applikációkTöbbablakos applikációk
MDI alkalmazásokban
• Beállítjuk a keret- és gyerekablak típusát:KeretAblak.FormStyle:= fsMDIform ;
GyerekAblak.FormStyle:= fsMDIChild ;
• A keretablak marad AutoCreateAutoCreate-nek; ő az alkalmazás főablaka is.
• A gyerekablak nem AutoCreateAutoCreate.
• A keretablakból hozzuk létre a gyerekablakokat (pl. NewMenuClick)
Több ablak együttműködése egy Több ablak együttműködése egy applikációbanapplikációban
DelphiDelphiIII / III / 3131
Többablakos applikációkTöbbablakos applikációkMDI alkalmazás
GyerekAblak GyerekAblak
KeretAblak KeretAblak
DelphiDelphiIII / III / 3232
unit uMDIKeret;interfaceusesSysUtils, ...uGyerek;typeTfrmKeret=class(TForm)... end;varfrmKeret: TfrmKeret;implementationprocedure TfrmKeret.NewmenuClick (Sender: TObject);var Gyerek: TfrmGyerek;beginGyerek:= TfrmGyerek. Create (Application);Gyerek.Show;end;
end.
unit uMDIKeret;interfaceusesSysUtils, ...uGyerek;typeTfrmKeret=class(TForm)... end;varfrmKeret: TfrmKeret;implementationprocedure TfrmKeret.NewmenuClick (Sender: TObject);var Gyerek: TfrmGyerek;beginGyerek:= TfrmGyerek. Create (Application);Gyerek.Show;end;
end.
unit uGyerek;interfaceuses WinTypes,...typeTfrmGyerek = class(TForm)... end;Var frmGyerek: TfrmGyerek;implementationuses uMDIKeret;
unit uGyerek;interfaceuses WinTypes,...typeTfrmGyerek = class(TForm)... end;Var frmGyerek: TfrmGyerek;implementationuses uMDIKeret;
GyerekAblak GyerekAblak ((nem nem Autocreate, Autocreate, példányaitpéldányait dinamikusan dinamikusan hozzuk létre)hozzuk létre)
KeretAblak (marad KeretAblak (marad Autocreate)Autocreate)
DelphiDelphiIII / III / 3333
TComponentTCommonDialog
TColorDialogTFindDialogTFontDialogTOpenDialogTSaveDialogTPrinterSetupDialogTPrintDialog
Létező párbeszédablakok használataLétező párbeszédablakok használata(Dialogs komponenspaletta)(Dialogs komponenspaletta)
DelphiDelphiIII / III / 3434
DialógusablakokDialógusablakok
OpenDialogOpenDialog Megnyitás dialógusablak, felhasználható a fájlnév, valamint az elérési útvonal
SaveDialogSaveDialog Mentés dialógusablak, felhasználható a fájlnév, valamint az elérési útvonal
OpenPictureDialogOpenPictureDialog Megnyitás dialógusablak grafikus fájlok eléréséhez, az ablakban látható a grafikus fájl képe
SavePictureDialogSavePictureDialog Mentés dialógusablak grafikus fájlok eléréséhez, az ablakban látható a grafikus fájl képe
DelphiDelphiIII / III / 3535
DialógusablakokDialógusablakok
FontDialogFontDialog Font dialógusablak, használható többek között a font mérete, színe, típusa
ColorDialogColorDialogSzínek beállítását segítő ablak PrintDialogPrintDialog Nyomtatás dialógusablak, a
nyomtatás jellemzőit használhatjuk(pl. nyomtatási oldalak, nyomtatás példányszáma)
PrinterSetupDialogPrinterSetupDialog Nyomtató beállítóablak, a feltelepített nyomtatók tulajdonságait érhetjük el (elérhető a PrintDialog ablakból is)
DelphiDelphiIII / III / 3636
DialógusablakokDialógusablakok
FindDialogFindDialog Kereső dialógusablak, felhasználható a keresett szöveg
ReplaceDialogReplaceDialog Csere dialógusablak, felhasználható a helyettesítendő, valamint a helyettesített szöveg
DelphiDelphiIII / III / 3737
• Láthatatlan komponensek
• Az őt használó formban deklaráljuk
• Objektum-felügyelőben adatait beállítjuk
• Execute - al végrehajtjuk
Pl. OpenDialogPl. OpenDialog esetén:esetén:Pl. OpenDialogPl. OpenDialog esetén:esetén:
Párbeszédablakok használata (Opendialog)Párbeszédablakok használata (Opendialog)
DelphiDelphiIII / III / 3838
Beállítjuk a Filter jellemzőjét
If OpenDialog.Execute Then ShowMessage('A kiválasztott állomány
neve: '+ OpenDialog.Filename);
Párbeszédablakok használata (Opendialog)Párbeszédablakok használata (Opendialog)
2. KIVÉTELEK KEZELÉSE2. KIVÉTELEK KEZELÉSE2. KIVÉTELEK KEZELÉSE2. KIVÉTELEK KEZELÉSE
DelphiDelphiIII / III / 4040
KivételkezelésKivételkezelés
• Kivétel: olyan hibás állapot vagy esemény, amely megszakítja az alkalmazás futását
• SysUtils egységben definiált kivételosztályok:
TObjectException
EConvertErrorEInOutErrorEMathError
EOverflowEUnderflowEZeroDivideEprinter...
Kivételek kezeléseKivételek kezelése
DelphiDelphiIII / III / 4141
KivételkezelésKivételkezelés
Az Object Pascalban a futási idejű hibák kivételekké alakulnak
• A kivételt megtestesítő objektum tartalmazza a hibát okozó információt
• A vezérlés a futó program aktuális pontjáról a kivételkezelőhöz (exception handler) adódik át
• Programlogika és hibakezelés elválasztása nő az áttekínthetőség
Kivételek Kivételek
DelphiDelphiIII / III / 4242
KivételkezelésKivételkezelés
Try
utasítás_blokk (védett blokk)
Except
kivételkezelő_blokk
[Else
kivételkezelő_blokk]
End;
Ahol a kivételkezelő blokk:On [ azon: ] Osztálytípus Do utasítás
Kivételek kezeléseKivételek kezelése
DelphiDelphiIII / III / 4343
Try ...Except
On EZeroDivide Do HandleZeroDivide;On EOverflow Do HandleOverflow;On EMathError Do HandleMathError;
End;
Function Atlag ( Osszeg, Db: Integer): Real;Begin
TryAtlag:= Oszeg / Db;
ExceptOn EZeroDivide Do Result := 0;
End;End;
Fontos a Fontos a sorrend!sorrend!
EMathErrorEMathErrorEOverFlowEOverFlowEZeroDividEZeroDividee
Fontos a Fontos a sorrend!sorrend!
EMathErrorEMathErrorEOverFlowEOverFlowEZeroDividEZeroDividee
Kivételek kezeléseKivételek kezelése
DelphiDelphiIII / III / 4444
KivételkezelésKivételkezelés
• Le nem kezelt kivétek esetén lefut az alapértelmezett kezelő (default handler)
• A kivétel lekezelése automatikusan maga után vonja a kivételobjektum megszüntetését, nem nekünk kell megszüntetni!
• Kivételkezelők tetszőleges számban egymásba ágyazhatók
Kivételek kezeléseKivételek kezelése
DelphiDelphiIII / III / 4545
Erőforrások biztonságos használataErőforrások biztonságos használata
• Erőforrások: állományok, memória, ...
• Formája:
erőforrások lefoglalásaTry
erőforrásokat használó utasításokFinally
erőforrásokat felszabadító utasításokEnd;
DelphiDelphiIII / III / 4646
Erőforrások biztonságos használataErőforrások biztonságos használata
Procedure Akarmi;Var Mutato: Pointer; Eredmeny:Real;
Oszto: Integer;Begin
Oszto:=0;Getmem(Mutato, 1024);Try
Eredmeny := 10 / Oszto;...Finally
FreeMem (Mutato,1024);End;
End;
Erőforrások biztonságos Erőforrások biztonságos használatahasználata
3. DRAG & DROP 3. DRAG & DROP TECHNIKATECHNIKA
3. DRAG & DROP 3. DRAG & DROP TECHNIKATECHNIKA
DelphiDelphiIII / III / 4848
Drag & Drop (vonszolás) Drag & Drop (vonszolás) techikatechika
Négy fontos lépésből áll:
• Vonszolás elkezdése
• Vonszolás fogadása vagy (DragCursor: crDrag, crMultiDrag,...)
• Dobás
• Befejezés
DelphiDelphiIII / III / 4949
Vonszolás elkezdéseVonszolás elkezdése
A komponensek DragMode tulajdonság értékétől függ:
dmAutomatic automatikusan elkezdődik a vonszolás
dmManual programból explicit módon kell elkezdeni BeginDrag
• BeginDrag (True) automatikus
• BeginDrag (False) csak egérelmozgatás után
DelphiDelphiIII / III / 5050
Vonszolás elkezdéseVonszolás elkezdése
Procedure TForm1.ForrasMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);Begin
If Button = mbLeft ThenWith Sender as TListBox Do
If ItemAtPos( Point(X,Y), True) >= 0 Then
BeginDrag (False);End;
Bal oldali Bal oldali egérgombegérgombBal oldali Bal oldali egérgombegérgomb
A listadoboz A listadoboz fölött kezdődik fölött kezdődik a vonszolása vonszolás
A listadoboz A listadoboz fölött kezdődik fölött kezdődik a vonszolása vonszolás
DelphiDelphiIII / III / 5151
Vonszolás fogadásaVonszolás fogadása
Az objektum ami fölött vonszolunk OnDragOver üzenetet kap
OnDragOver(Sender, Source: TObject;X, Y: Integer; State: TDragState;
var Accept: Boolean); Ha fogadja Accept := True
Ha nem fogadja Accept := False
Ami fölött Ami fölött vonszolunkvonszolunkAmi fölött Ami fölött vonszolunkvonszolunk
Amit Amit vonszolunkvonszolunkAmit Amit vonszolunkvonszolunk
DelphiDelphiIII / III / 5252
Vonszolás fogadásaVonszolás fogadása
Procedure TForm1.CelDragOver(Sender, Source: TObject; X, Y:
Integer; State: TDragState; var Accept:
Boolean);Begin
If Source is TListBox ThenAccept := True
ElseAccept := False;End;
DelphiDelphiIII / III / 5353
DobásDobás
Ha egy objektum fogadja, egérgomb felengedésekor OnDragDrop üzenetet kap
OnDragDrop(Sender, Source: TObject; X, Y: Integer)
Ami fölött Ami fölött vonszolunkvonszolunkAmi fölött Ami fölött vonszolunkvonszolunk
Amit Amit vonszolunkvonszolunkAmit Amit vonszolunkvonszolunk
DelphiDelphiIII / III / 5454
DobásDobásPl.Procedure TForm1.CelDragDrop
(Sender, Source: TObject; X, Y: Integer);Begin
With Source as TListBox DoBegin
TListBox(Sender).Items.
Add(Items[Itemindex]);Items.Delete(Itemindex);
End;End;
Elem Elem hozzáadáshozzáadásaa
Elem Elem hozzáadáshozzáadásaa
Elem Elem törlésetörléseElem Elem törlésetörlése
DelphiDelphiIII / III / 5555
Vonszolás befejezéseVonszolás befejezése
Befejezéskor a vonszolt objektum kap egy OnEndDrag üzenetet
OnEndDrag(Sender, Target: TObject; X, Y: Integer);
Ide írjuk a fogadó objektum frisítését (ha ez nem automatikus)
Amit Amit vonszolunkvonszolunk
Amit Amit vonszolunkvonszolunk
Ami Ami fogadta (ha fogadta (ha
fogadta)fogadta)
Ami Ami fogadta (ha fogadta (ha
fogadta)fogadta)
DelphiDelphiIII / III / 5656
Vonszolás befejezéseVonszolás befejezésePl.Procedure TForm1.ForrasEndDrag
(Sender, Target: TObject; X, Y: Integer);Begin
If Target<> Nil ThenShowMessage(Format('A %s objektum
fogadta',[TComponent(Target).Name]));
End;
Ha létezik a Ha létezik a fogadófogadóHa létezik a Ha létezik a fogadófogadó
DelphiDelphiIII / III / 5757
TypeTSajatForm = Class(TForm)
ProtectedProcedure Atmeretezes ( Var
Msg:TMessage); Message WM_SIZE;
End;...Procedure TSajatForm. Atmeretezes;
BeginShowMessage('Most méreteznek át');Inherited;
End;...
Eseménykezelő metódus Eseménykezelő metódus (Message)(Message)
DelphiDelphiIII / III / 5858
Eredmény: Minden ablakátméretezésnél:
Eseménykezelő metódus Eseménykezelő metódus (Message)(Message)
DelphiDelphiIII / III / 5959
• TípusmegállapításTípusmegállapítás : Is
• TípuskonverzióTípuskonverzió : As
Var Obj: TComponent;...
Obj := TButton.Create(...);
Általában együtt használjuk őket:Általában együtt használjuk őket:
If Obj Is TButton Then(Obj As TButton).Caption := 'Ok
gomb';
OsztályoperátorokOsztályoperátorok
TComponent
TComponent
TButtonTButton