![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Всем доброго здравия.
Нужна красивая идея. На форме находится CheckBox. В обработчике события CheckBoxKeyPress меняю свойство Checked кнопкой Enter. Но у меня CheckBox'ов больше десятка..... Ни писать же на каждый CheckBox свой обработчик события. А что делать? |
|
#2
|
||||
|
||||
|
Цитата:
Код:
procedure TPrimeFrm.CheckBox1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'1': (Sender as TCheckBox).Checked:=True;
'2': (Sender as TCheckBox).Checked:=False;
end;
end;Если же нужно всем CheckBox-ам на форме присвоить один и тот же обработчик, то можно программно. Пример: Код:
var
i: Integer;
begin
for i := 0 to ComponentCount-1 do
begin
if Components[i] is TCheckBox then
begin
(Components[i] as TCheckBox).OnKeyPress:=CheckBox1KeyPress;
end;
end;
end; |
|
#3
|
||||
|
||||
|
всем сделай один обработчик:
Код:
procedure TForm1.CheckBoxKeyPress(Sender: TObject; var Key: Char); begin if Key=#13 then TCheckBox(Sender).Checked:=not TCheckBox(Sender).Checked; end; |
| Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Alexs55 (14.08.2012)
| ||
|
#4
|
|||
|
|||
|
У меня был вариант:
Код:
procedure TForm1.CheckBox1KeyPress(Sender: TObject; var Key: Char);
var
i : integer;
begin
i := TForm1.ActiveControl.Tag;
if Key = #13 then
if btBoxEdit[i].Checked = True then btBoxEdit[i].Checked := False
else btBoxEdit[i].Checked := True;
end;btBoxEdit - массив CheckBox. В каждом CheckBox определён Tag. Мой вариант работает, но Ваш - в одну строчку, на порядок красивее. Лезу в паутину, выяснять как можно больше про Sender. Ещё раз спасибо!!! Последний раз редактировалось Alexs55, 14.08.2012 в 14:09. |