Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.29;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
6-1166707891
XfroSt
2006-12-21 16:31
2007.07.29
работа с IndyUDPServer в потоке Thread


15-1183280055
Nous Mellon_
2007-07-01 12:54
2007.07.29
Ребят, помогите с регуляркой(php)


2-1183651575
Sergey_G
2007-07-05 20:06
2007.07.29
Сортировка


10-1134827475
TStas
2005-12-17 16:51
2007.07.29
Левое выравнивание в ячейке экселя


15-1183515466
Slider007
2007-07-04 06:17
2007.07.29
С днем рождения ! 4 июля 2007 среда