абстрактно грешка
Създаване на формуляр, без проект, спаси, да го добавите към депозитара, а след това на новия проктит, добавени към него от тази форма на депозитар, включени го в 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 гр
Свързани статии