Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2012, 19:19   #1
Flatterer
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 10
Вопрос обращение к динамически созданным объектам

ситуация в общем то бредовая, скажем через цикл создал массив, переменная 'с4' типа интеджер для пордка добавляеться при каждом нажатии клавиши

Код:
var
masD: array [1..100] of TSpeedButton;
c4:integer;

c4:=1;

Button1Click(Sender: TObject);
   c4:=c4+1;
    masD[c4]:=TspeedButton.Create(Form1);
    masD[c4].Parent:=form1;
    masD[c4].Width:=20;
    masD[c4].height:=20;
    masD[c4].Left:=160;
    masD[c4].Top:=(c4-1)*32-20;
    masD[c4].Glyph.LoadFromFile('путь к bmp'); // точно ошибка не в пути
    masD[c4].OnClick:=destr;

   

procedure tform1.destr(Sender: TObject);
begin
  masD[c4].Destroy;
  c4:=c4-1;
end;
ну вот собственно задаю процедуру при нажатии которая заключаеться в том что удаляет выбранную динамически созданную кнопку, но я так понимаю что ввиду того, что 'c4' у меня сохраняет максимальное число(т.е. последнее) из-за этого и удаляеться посдний созданный элемент , а вот как прочитать порядковый номер выбранный(на которую курсором тыкнул) что бы удалилась именно эта кнопка ане последняя, какие могут быть предложения?

Последний раз редактировалось Flatterer; 30.05.2012 в 19:22.
Flatterer вне форума Ответить с цитированием
Старый 30.05.2012, 20:51   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> какие могут быть предложения?

Код:
procedure tform1.destr(Sender: TObject);
begin
  Sender.Free();
  c4:=c4-1;
end;
> добавляеться
> заключаеться
> удаляеться

http://tsya.ru/
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 30.05.2012, 20:54   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ага, удаление самого себя в своем обработчике, багов не миновать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.05.2012, 20:59   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

во взрослых дельфях должно прокатить, вроде

ну или городить огород с таймером, типа:

Код:
procedure tform1.destr(Sender: TObject);
begin
  List.Add(Sender);
end;


procedure tform1.Timer1Tick(Sender: TObject);
begin
  while (0 < List.Count) do begin
    //
    List[0].Free();
    c4:=c4-1;
  end;
end;
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 30.05.2012, 21:03   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Лучше пользовательское сообщение отправить и в обработчике сообщения удалить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.05.2012, 21:19   #6
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

тоже вариант
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 01.06.2012, 08:35   #7
Flatterer
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 10
По умолчанию

впервые узнал про sender, почитал - благодарю, в данном случае очень помогло,
а вот если у меня параллельно создаеться 1 кнопка,1 лабел и в двумерный массив добавляються массив добавляються данные из файла... как здесь быть? для массива то нужен номер кнопки что бы удалить из него данные...
Flatterer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обращение к объектам Sanek_ntsk Общие вопросы Delphi 3 14.04.2012 18:41
обращение к объектам Ленты. WizarD.89 Microsoft Office Excel 7 19.12.2010 14:03
обращение к объектам по индексам Zo0M Общие вопросы Delphi 8 24.02.2010 14:15
Обращение к динамически созданным компонентам. Lime Общие вопросы Delphi 21 15.07.2009 01:17
Обращение к объектам в процедуре. Maxs Помощь студентам 5 02.05.2009 12:54