![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Уничтожение компонента в 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]Нельзя уничтожать в обработчике.