![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Массив компонентов. [D6, WinME]
Ilya © (2002-02-22 16:40:00)Предположим, что нужно при нажатии на одну из 10(20) кнопок выполнять одно и то же действи отличающееся лишь индексом, например, как в калькуляторе. Как это сделать?
Заранее спасибо.
panov (2002-02-23 21:08:00) [1]Точно так и есть:
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 позаботится об этом сам.
Ilya (2002-02-23 20:50:00) [2]>Vitaly Nevzorov
Впрочем никто не мешает создать и массив для выполнений в цикле...
Вот это меня как раз и интересует, только как это сделать?
Что нибудь типа:
b:array [1..10] of TButton;
Vitaly Nevzorov (2002-02-23 16:26:00) [3]Обычно достаточно просто компоненты назвать например в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 прийдется в цикле все компоненты крутить.
DieHard (2002-02-22 16:44:00) [4]Укажи в свойстве Tag каждой кнопки уникальное значение и в зависимости от него в общем обработчике делай то, что тебе надо
[NIKEL] (2002-02-22 16:43:00) [5]пиши один обработчик для всех кнопок, а через Sender будешь получать имя кнопки, и соответственно выполнять действия связанные с этой кнопкой
Counsellor (2002-02-22 16:43:00) [6]Для этого у компонента есть поле Tag. В него заносим индекс, а обработчик события устанавливать для всех одинаковый и в нем анализировать это поле.