ПредишенСледващото

абстрактно грешка

Създаване на формуляр, без проект, спаси, да го добавите към депозитара, а след това на новия проктит, добавени към него от тази форма на депозитар, включени го в Uzes, наричайки процедура MyShowMessage, което създава форма диалогов инстанция, а при натискане на бутон ОК би трябвало да се саморазруши , Вместо Abstract грешка грешка.
Какво съм направил погрешно? Тук форма източник диалог:

Да, още един въпрос: към кого да се проблеми във форума да се говори?

употреби
Windows, съобщения, SysUtils, варианти, Курсове, графики, Контроли, формуляри,
Диалози, StdCtrls, ExtCtrls;

процедура MyShowMessage (mMesstext, mCaption, mBtnCaption, mCheckBoxCaption: низ; mBitmap: Tbitmap;
mBitMapTransparent, mBitmapCentered, mBitmapStretch: булева);

тип
TFormMessage = клас (TForm)
BtnOk: TButton;
СНВ: TCheckBox;
Bevel: TBevel;
Панел: TPanel;
Текст: TStaticText;
Panel1: TPanel;
IMG: TImage;
процедура BtnOkClick (Sender: TObject);
частен

обществен

приключи;

Var
FormMessage: TFormMessage;

процедура TFormMessage.BtnOkClick (Sender: TObject);
започвам
FormMessage.free;
приключи;


процедура MyShowMessage (mMesstext, mCaption, mBtnCaption, mCheckBoxCaption: низ; mBitmap: Tbitmap;
mBitMapTransparent, mBitmapCentered, mBitmapStretch: булева);
започвам
FormMessage: = TFormMessage.create (нула);
с FormMessage правя
започвам
ако mCaption<>"" Тогава надпис: = mCaption;
text.Caption: = mMesstext;
ако mbitmap<>нула след това
започвам
img.Visible: = вярно;
img.picture.bitmap.assign (mBitmap);
приключи;
ако mBtnCaption<>"" Тогава BtnOk.caption: = mBtnCaption;
ако mCheckBoxCaption<>"" Тогава ChB.Caption: = mCheckBoxCaption;
img.transparent: = mBitMapTransparent;
img.center:=mBitmapCentered;
img.stretch: = mBitmapStretch;
приключи;
FormMessage.show;
приключи;

voobscheto за такива цели са изобретили ModalResult TButton, вместо

> Процедура TFormMessage.BtnOkClick (Sender: TObject);
> започне
> FormMessage.free;
> Край;

и обикновено се използва ShowModal

Честно казано аз не разбирам нищо. В крайна сметка, на формата, създадена от задължението да създаде отърва от безплатен, дори и аз нямам представа за ModalResult.

просто казано е всичко, много по-различно

процедура MyShowMessage (mMesstext, mCaption, mBtnCaption, mCheckBoxCaption: низ; mBitmap: Tbitmap;
mBitMapTransparent, mBitmapCentered, mBitmapStretch: булева);
Var
MyDialog: TFormMessage;
започвам
MyDialog: = TFormMessage.create (нула);
с MyDialog правя
започвам
ако mCaption<>"" Тогава надпис: = mCaption;
text.Caption: = mMesstext;
ако mbitmap<>нула след това
започвам
img.Visible: = вярно;
img.picture.bitmap.assign (mBitmap);
приключи;
ако mBtnCaption<>"" Тогава BtnOk.caption: = mBtnCaption;
ако mCheckBoxCaption<>"" Тогава ChB.Caption: = mCheckBoxCaption;
img.transparent: = mBitMapTransparent;
img.center:=mBitmapCentered;
img.stretch: = mBitmapStretch;
приключи;
FormMessage.ShowModal;
FormMessage.Free;
приключи;

има бутони, които следва да бъдат определени ModalResult в диалоговия прозорец Свойства. След това, чрез натискане на този бутон ще го бутон ShowModal стойност ModalResult върне.

1. Формулярът може да бъде различни видове транспорт, но това не е задължително да бъде.
2. Потребителят може да се затвори формата, а не само с OK.
3. Опасно е да се унищожи един вид безплатна обаждане от собствените си най-добри практики. За да направите това, има и други начини.
4. Променлива FormMessage не е необходимо и дори нежелателно.

1. Добавяне на манипулатор събитие OnClose:

процедура TFormMessage.FormClose (Sender: TObject; Var действие: TCloseAction);
започвам
Действие: = caFree
приключи;

2. Промяна на манипулатора натискане на бутона:

процедура TFormMessage.BtnOkClick (Sender: TObject);
започвам
ако fsModal в FormState тогава ModalResult: = mrOK друго Затвори
приключи;

3. Свалете променлива FormMessage и показване на процедурата за промяна на:

функция MyShowMessage (; AsModal. булева): TModalResult;
започвам
с TFormMessage.Create (нула) направи
опитвам
. // Задаване на формата
ако AsModal
След това Резултат: = ShowModal
друг да започне
Резултат: = mrOK;
шоу
край
накрая
ако AsModal тогава Free
край
приключи;

Диалог - е, че не Модал по дефиниция?
Или аз не разбирам правилно понятието "диалог"

Диалози често DM разбира се различни видове транспорт, но това не е абсолютно необходимо. Понякога е необходимо да се даде възможност на потребителя да направи нещо, и в основния прозорец, оставяйки диалог StayOnTop. Пример - Виж замяна, за диалогов в MS Word.

Хм, като се замисля думата "диалог", което означава, че разговор dvoem, странен човек, а след това, модалността, логическата атрибут към тези форми. След това, те са "диалози".
Но, разбира се жертва удобство на приложението им харесва в Word. Мисля, че това е по-скоро изключение, отколкото правило.

Вие не може да унищожи обекта (дали един бутон форма или каквото) от своя самостоятелна манипулатор, защото манипулатор на събитие е процедура, която изисква друг метод на един и същ обект, или, когато излезете от него, съответно, контрол се предава го наричат ​​метод вече унищожен обект, който ,

> YZ (19.05.03 09:25)

Понякога можете. Ако веригата се премества след извикването Безплатни разговори няма да бъде на полето svezheunichtozhennogo обект, а след това всичко ще бъде наред. Друго нещо е, че обикновено не се знае дали има такова лечение или не. Така че, разбира се, е опасно.

Памет: 0.75 MB
Време: 0.031 гр

Свързани статии

Подкрепете проекта - споделете линка, благодаря!