|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
CheckBox > Checked > Enter
Всем доброго здравия.
Нужна красивая идея. На форме находится 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. |