Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];

Вниз

Создать и уничтожить   Найти похожие ветки 

 
Bad_B   (2007-07-04 16:36) [0]

Создаю в разброс несколько кнопок так:

for i:=0 to 5 do
   begin
   New:=TButton.Create(form1);
   New.Top:= random(350);
   New.Left:=random(350);
   New.Name:="but"+inttostr(i);
   new.Caption:=New.Name;
   New.OnClick:=OnClickButton;
   New.Parent:=form1;
end;

В OnClickButton пишу такой код(ну что бы по клику кнопка уничтожалась)
Procedure TForm1.OnClickButton( Sender : TObject );
Begin
    try
MessageDlg("Нажата кнопка ",mtInformation,[mbOk],0);
    finally
       tcontrol(sender).Free;
   end;
End;

Не могу понять почему иногда работает а иногда нет. Что не так?


 
Desdechado ©   (2007-07-04 16:41) [1]

Нельзя вызывать уничтожение объекта из его обработчика.


 
{RASkov} ©   (2007-07-04 16:55) [2]

> [0] Bad_B   (04.07.07 16:36)

Удаляй так:
const WM_DELOBJ = WM_USER+1;
....
 private
  DelObj: TObject;
  procedure MessDel(var Mes: TMessage); message WM_DELOBJ;
.....
procedure TForm1.MessDel;
begin
 if Assigned(DelObj) then FreeAndNil(DelObj);
end;

Procedure TForm1.OnClickButton( Sender : TObject );
Begin
   try
     MessageDlg("Нажата кнопка ",mtInformation,[mbOk],0);
   finally
    DelObj:=Sender;
    PostMessage(Handle, WM_DELOBJ, 0, 0);
   end;
End;

Т.е. посылаем форме наше сообщение в котором и удаляется кнопка, но уже после отработки ее события ОнКлик...
ЗЫ И при создании нет необходимости в переменной New.....



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.042 c
1-1179652280
seRioUS
2007-05-20 13:11
2007.07.29
Выподающий список выбота толщины линии


5-1157690903
DimaBr
2006-09-08 08:48
2007.07.29
добавление модулей


2-1183640247
POP
2007-07-05 16:57
2007.07.29
64bit HEX преобразовать в DEC строку


15-1183458983
vasIZmax
2007-07-03 14:36
2007.07.29
Image, Canvas or OpenGl


2-1183623056
Vasyl
2007-07-05 12:10
2007.07.29
RxLookupEdit1





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский