Вниз
Скачать: CL | DM;

Массив компонентов.   Найти похожие ветки 

← →
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 позаботится об этом сам.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.007 c
4-32613
vvr
2002-01-10 17:25
2002.03.11
CREATECARET


3-32411
Draculenok
2002-02-12 12:40
2002.03.11
SQL для QReports


1-32479
cvlexx
2002-02-20 09:52
2002.03.11
Установка D6


3-32398
torero
2002-02-09 16:59
2002.03.11
При вставке в таблицу foxpro *.dbf строки через BDE (sql запрос из TQuery)вместо русских букв одни ######.


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




   Наверх