elvont hiba

elvont hiba

Hozzon létre egy űrlapot, anélkül, hogy egy projekt, kivéve, add hozzá a letéteményese, akkor az új proctitis, hozzáadjuk azt ebben a formában a letétkezelő, azt felvette Uzes, amelyben az eljárást MyShowMessage, amely létrehoz egy form-dialógus Például, ha megnyomja az OK gombot kellene önmegsemmisítő . Ehelyett Abstract error error.
Mit csináltam rosszul? Itt forrás formájában párbeszéd:

Igen, még egy kérdés: kinek a hibák a fórum beszélni?

felhasználások
Ablakok, üzenetek, SysUtils, Változatok, osztályok, grafika, vezérlők, Forms,
Dialogs, StdCtrls, ExtCtrls;

eljárás MyShowMessage (mMesstext, mCaption, mBtnCaption, mCheckBoxCaption: string; mBitmap: Tbitmap;
mBitMapTransparent, mBitmapCentered, mBitmapStretch: logikai);

típus
TFormMessage = osztály (TForm)
BtnOk: TButton;
CHB: TCheckBox;
Fazetta: TBevel;
Panel: TPanel;
Szöveg: TStaticText;
Panel1: TPanel;
Img: TImage;
eljárás BtnOkClick (Sender: TObject);
magán

nyilvános

végén;

var
FormMessage: TFormMessage;

eljárás TFormMessage.BtnOkClick (Sender: TObject);
kezdődik
FormMessage.free;
végén;


eljárás MyShowMessage (mMesstext, mCaption, mBtnCaption, mCheckBoxCaption: string; mBitmap: Tbitmap;
mBitMapTransparent, mBitmapCentered, mBitmapStretch: logikai);
kezdődik
FormMessage: = TFormMessage.create (nulla);
A FormMessage do
kezdődik
ha mCaption<>"" Akkor felirata: = mCaption;
text.Caption: = mMesstext;
ha mbitmap<>nulla, akkor
kezdődik
img.Visible: = true;
img.picture.bitmap.assign (mBitmap);
végén;
ha mBtnCaption<>"" Akkor BtnOk.caption: = mBtnCaption;
ha mCheckBoxCaption<>"" Akkor ChB.Caption: = mCheckBoxCaption;
img.transparent: = mBitMapTransparent;
img.center:=mBitmapCentered;
img.stretch: = mBitmapStretch;
végén;
FormMessage.show;
végén;

voobscheto ilyen célra kitalált ModalResult TButton helyett

> Eljárás TFormMessage.BtnOkClick (Sender: TObject);
> kezdődik
> FormMessage.free;
> End;

és általánosan használt ShowModal

Őszintén szólva nem értem semmit. Végtére is, a forma által létrehozott létrehozásának kötelezettsége így szabad, még akkor is, ha fogalma sincs arról, ModalResult.

egyszerűen fogalmazva minden nagyon másképp

eljárás MyShowMessage (mMesstext, mCaption, mBtnCaption, mCheckBoxCaption: string; mBitmap: Tbitmap;
mBitMapTransparent, mBitmapCentered, mBitmapStretch: logikai);
var
MyDialog: TFormMessage;
kezdődik
MyDialog: = TFormMessage.create (nulla);
A MyDialog do
kezdődik
ha mCaption<>"" Akkor felirata: = mCaption;
text.Caption: = mMesstext;
ha mbitmap<>nulla, akkor
kezdődik
img.Visible: = true;
img.picture.bitmap.assign (mBitmap);
végén;
ha mBtnCaption<>"" Akkor BtnOk.caption: = mBtnCaption;
ha mCheckBoxCaption<>"" Akkor ChB.Caption: = mCheckBoxCaption;
img.transparent: = mBitMapTransparent;
img.center:=mBitmapCentered;
img.stretch: = mBitmapStretch;
végén;
FormMessage.ShowModal;
FormMessage.Free;
végén;

gombok vannak, hogy ModalResult a Tulajdonságok párbeszédablak kell állítani. Ezután a gomb megnyomásával visszatér az ShowModal érték ModalResult gombra.

1. A forma lehet modális, de ez nem szükséges, hogy legyen.
2. A felhasználó bezárhatja a forma, nem csak az OK gombot.
3. Ez veszélyes, hogy elpusztítsa a forma Free hívást saját legjobb gyakorlatokat. Ehhez vannak más módszerek.
4. Változó FormMessage nem szükséges, sőt kívánatos.

1. Add eseménykezelő OnClose:

eljárás TFormMessage.FormClose (Sender: TObject; var Action: TCloseAction);
kezdődik
Action: = caFree
végén;

2. Állítsa be a felvezető gomb megnyomásával:

eljárás TFormMessage.BtnOkClick (Sender: TObject);
kezdődik
ha fsModal a FormState majd ModalResult: = mrOK mást bezár
végén;

3. Vegye ki a változó FormMessage, és bemutatja az eljárást módosítani:

funkció MyShowMessage (;. AsModal: logikai): TModalResult;
kezdődik
A TFormMessage.Create (nulla) do
megpróbál
. // beállítása formájában
ha AsModal
majd Eredmény: = ShowModal
máshol kezdődik
Eredmény: = mrOK;
mutat
vég
végül
ha AsModal akkor ingyenes
vég
végén;

Párbeszéd - Ő meg nem modális, a meghatározás?
Vagy nem helyesen megérteni a „párbeszéd”

Párbeszédek gyakran DM természetesen modális, de ez nem feltétlenül szükséges. Néha szükség van ahhoz, hogy a felhasználó számára, hogy tegyen valamit, és a fő ablakban, így StayOnTop párbeszéd. Példa - Find-csere párbeszédablak MS Word.

Hmm, most jut eszembe a „párbeszéd”, vagyis a beszélgetés dvoem, kakukktojás, akkor a módja szerint, a logikai attribútum ezeket a formákat. Aztán, hogy a „párbeszédek”.
De természetesen az áldozat a kényelem alkalmazásuk csinálni, mint a Word. Azt hiszem, ez inkább kivétel, mint szabály.

Nem lehet elpusztítani a tárgy (akár olyan formában gombot, vagy bármi más) a saját self-kezelő, mert egy eseménykezelő olyan eljárás, amely hívások egy másik módszer az azonos tárgy, vagy ha kilép belőle, illetve, a vezérlés, hogy ez egy módszer már elpusztult objektum .

> YZ (19.05.03 09:25)

Néha lehet. Ha a lánc áthaladni hívása után ingyenes hívások nem lesz a földekre svezheunichtozhennogo objektumot, akkor minden rendben lesz. A másik dolog az, hogy általában nem ismert, hogy van-e ilyen kezelést vagy sem. Így, persze, veszélyes.

Memória: 0,75 MB
Idő: 0.031 c

Kapcsolódó cikkek