Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Уничтожение компонента в Run Time. [D7, Win95/98, WinXP]


Leaner ©   (2004-11-03 12:25:00) 

Здравствуйте ! Помогите, пожалуйста, разобраться.
Создаю в режиме Run Time дополнительные кнопки на ToolBar
Все работает, пока я не пытаюсь уничтожить, созданную раньше кнопку.

procedure TMainForm. NewBtnClick(Sender: TObject);
begin
ShowMessage(TControl(Sender).Name);
TToolButton(Sender).Free;
ShowMessage('Deleted.');
Beep;
end;  <---   здесь возникает  AV

procedure TMainForm.mnuThirdTestClick(Sender: TObject);
var
 Btn:TToolButton;
begin
 Btn:=TToolButton.Create(ProgramTBar);//ProgramTBar – это   ToolBar на форме
 Btn.Style:=tbsButton;
 Btn.OnClick:=NewBtnClick;
 Btn.Name:='ButtonName'+IntToStr(ProgramTBar.ButtonCount);
 Btn.Caption:='ButtonCaption'+IntToStr(ProgramTBar.ButtonCount);
 Btn.Parent:=ProgramTBar;
end;


Семен Сорокин   (2004-11-03 13:53:00) [1]

procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(TButton(Sender).Handle, CM_RELEASE, 0, 0)
end;

вот незадача, но это только для наследников TWinControl, иначе см. [3]


> TUser ©   (03.11.04 13:37) [5]
> С обычной кнопкой такой фокус у меня прошел нормально

после Click'а происходит еще MouseUp, а что там будет - AV (но не всегда, не мне Вам это объяснять :))


TUser   (2004-11-03 13:37:00) [2]

С обычной кнопкой такой фокус у меня прошел нормально

procedure TForm1.Button1Click(Sender: TObject);
begin
  TButton(Sender).Free;
end;


Leaner   (2004-11-03 13:26:00) [3]

> Юрий Зотов
Огромное спасибо !
А еще прибедняються: мол, телепатов на форуме нет !


Юрий Зотов   (2004-11-03 13:04:00) [4]

> Leaner

Если кнопка должна уничтожить "сама себя", то из ее обработчика отправьте форме через PostMessage какое-нибудь сообщение, а вот в ЕГО обработчике кнопку уже можно спокойно уничтожать.


Leaner   (2004-11-03 12:31:00) [5]

> begin...end
Спасибо !


begin...end   (2004-11-03 12:27:00) [6]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо