Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.11;
Скачать: [xml.tar.bz2];




Вниз

Массив компонентов. 


Ilya   (2002-02-22 16:40) [0]

Предположим, что нужно при нажатии на одну из 10(20) кнопок выполнять одно и то же действи отличающееся лишь индексом, например, как в калькуляторе. Как это сделать?
Заранее спасибо.



[NIKEL]   (2002-02-22 16:43) [1]

пиши один обработчик для всех кнопок, а через Sender будешь получать имя кнопки, и соответственно выполнять действия связанные с этой кнопкой



Counsellor   (2002-02-22 16:43) [2]

Для этого у компонента есть поле Tag. В него заносим индекс, а обработчик события устанавливать для всех одинаковый и в нем анализировать это поле.



DieHard   (2002-02-22 16:44) [3]

Укажи в свойстве Tag каждой кнопки уникальное значение и в зависимости от него в общем обработчике делай то, что тебе надо



Vitaly Nevzorov   (2002-02-23 16:26) [4]

Обычно достаточно просто компоненты назвать например в1..b20? тогда


Procedure TForm1.buttonClick(Sender:TObject);
begin
(sender as TButton).caption:= copy((sender as TButton).name,1,2);
end;


Впрочем никто не мешает создать и массив для выполнений в цикле...

По поводу использования Tag - к сожалению параметер только цифровой, и когда надо действовать согласно 2-3 параметрам то его не достаточно, в имени можно больше передать параметров... А для одного параметра конечно Tag подходит неплохо. Кроме того играясь с именами файлов, в отличие от Tag легко найти нужный компонент, а не только идентифицировать данный, а с tag прийдется в цикле все компоненты крутить.



Ilya   (2002-02-23 20:50) [5]

>Vitaly Nevzorov
Впрочем никто не мешает создать и массив для выполнений в цикле...

Вот это меня как раз и интересует, только как это сделать?
Что нибудь типа:
b:array [1..10] of TButton;



panov   (2002-02-23 21:08) [6]

Точно так и есть:
var
b:array [1..10] of TButton;
begin
//Для каждого элемента массива описываешь:
b[n] := TButton.Create(Form1);
b[n].Left :=
b[n].Width :=
b[n].Caption :=
b[n].Parent :=
b[n].OnClick := buttonClick;

Если используешь форму b[n] := TButton.Create( Form1);, то кнопки уничтожать вручную не нужно. Form1 позаботится об этом сам.




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.11;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.036 c
7-32595           Bob5                  2001-12-04 07:52  2002.03.11  
Помогите пожалуйста!


1-32459           b00ts0                2002-02-22 23:01  2002.03.11  
ламерский вопрос относительно чата для локальной сети


1-32510           Лана Розанова         2002-02-25 12:01  2002.03.11  
DDE


1-32508           kingdom               2002-02-25 13:24  2002.03.11  
Как удалить директорию с поддиректориями


14-32549          PEC                   2002-01-21 10:58  2002.03.11  
Привет народ,помогите кто может !