Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление объектов, Иногда бывают глюки... 
:(
    Опции темы
Zero
Дата 31.10.2004, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Народ у меня есть такой вопрос???
Почему когда я динамически создал ряд кнопок, и после пытаюсь удалить эти кнопки, то при удалении некотрых бывает, что просто выдаётся ошибка и прога закрывается.
Причём я заметил, что именно если первые 2 кнопки стояющие слева на форме если их сразу удалить то возникает, глюк, а если перед этим др. кнопки удалить, а потм эти то вроде всё нормально.

да кстати у меня ещё сделано открытие доступа удаления этих кнопок на Button2...

Не подскажете почему происходят глюки, и возможный способ решения против этого. :(
Код

uses buttons,stdctrls,...
...
type
 TForm1 = class(TForm)
    ...
    procedure buttonclick(sender: tobject);
    ...
var
 Form1: TForm1;
 udalenie:boolean;
 i:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 with tspeedbutton.Create(parent) do
   begin
     parent:=form1;
     onclick:=buttonclick;
     left:=i;
     i:=i+25;
   end;
end;

procedure tform1.buttonclick(sender: tobject);
begin
 if udalenie then
   begin
     (sender as tspeedbutton).Free;
     i:=i-25;
   end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 if button2.Caption='Режим удаления открыт' then
   begin
     button2.Caption:='Режим удаления закрыт';
     udalenie:=false;
   end
 else
   begin
     button2.Caption:='Режим удаления открыт';
     udalenie:=true;
   end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 i:=1; udalenie:=false;
end;

PM MAIL ICQ   Вверх
p0s0l
Дата 31.10.2004, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Попробуй как-нибудь типа такого:
Код
uses buttons,stdctrls,...
...
const
 WM_DELBTN = WM_USER + 1234;

type
 TForm1 = class(TForm)
    ...
    procedure buttonclick(sender: tobject);
    procedure DelButton (var msg : TMessage); message WM_DELBTN;
    ...
var
 Form1: TForm1;
 udalenie:boolean;
 i:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 with tspeedbutton.Create(parent) do
   begin
     parent:=form1;
     onclick:=buttonclick;
     left:=i;
     i:=i+25;
   end;
end;

procedure tform1.buttonclick(sender: tobject);
begin
 if udalenie then
 begin
   PostMessage (Handle, WM_DELBTN, WPARAM(Sender), 0);
   i:=i-25;
 end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 if button2.Caption='Режим удаления открыт' then
   begin
     button2.Caption:='Режим удаления закрыт';
     udalenie:=false;
   end
 else
   begin
     button2.Caption:='Режим удаления открыт';
     udalenie:=true;
   end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 i:=1; udalenie:=false;
end;

procedure TForm1.DelButton;
begin
 TSpeedButton(msg.WParam).Free;
end;

Т.к. в обработчике события кнопки нельзя освобождать её же саму...
Поэтому удаляем кнопку после выхода из функции (с помощью нашего сообщения WM_DELBTN).




--------------------
С уважением, г-н Посол.
PM   Вверх
Zero
Дата 31.10.2004, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Спасибо!!! Как всегда, теперь работает... :cool
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0421 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.