Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.11;
Скачать: 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 вся ветка

Текущий архив: 2002.03.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
1-32460
KvORubin
2002-02-23 13:52
2002.03.11
ПОМОГИТЕ !!!


3-32399
ne
2002-02-12 08:09
2002.03.11
unsupported on-disk structure


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


14-32553
Иван Шихалев
2002-01-08 19:59
2002.03.11
А не посоветует ли кто :)


1-32439
Light Elf
2002-02-22 13:52
2002.03.11
Жирный текст в Popup меню.