![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Упрощение процедур [D7, 2000, XP, 2003]
allrussia © (2010-03-05 03:47:00)Не подскажете как можно упростить следующее:
procedure TForm1.CheckBox19Click(Sender: TObject);
begin
if CheckBox19.Checked then
begin
SpinEdit9.Enabled:=true;
SpinEdit9.SetFocus;
end else
SpinEdit9.Enabled:=false;
end;
в программе сотни таких блоков хочется одну единственную процедуру и одно единственное событие onclick для всех checkbox.
т.е. мне нужно что то типа
procedure CheckBoxClick;
var i,j: integer;
begin
i:=ValidateCheckBox;//узнаем номер чекбокса по которому совершен клик
case i of
19: j:=45;
20: j:=23 // узнаем какой спин-эдит соответствует чекбоксу
...
end;
if CheckBox[i].Checked then
begin
SpinEdit[j].Enabled:=true;
SpinEdit[j].SetFocus;
end else
SpinEdit[j].Enabled:=false;
end;
и все - выделить все чекбоксы разом и назначить эту процеруду им всем
т.е.
1. Как определить номер нажатого чекбокса по событию OnClick
2. Как работать с присвоением индекса контролу SpinEdit[j]?
KilkennyCat (2010-03-05 10:19:00) [21]точнее
SpinEdit9.Enabled:= CheckBox19.Checked;
if CheckBox19.Checked then SpinEdit9.SetFocus;
KilkennyCat (2010-03-05 10:17:00) [22]добавлю еще немного оптимизации:
> if CheckBox19.Checked then
> begin
> SpinEdit9.Enabled:=true;
> SpinEdit9.SetFocus;
> end else
> SpinEdit9.Enabled:=false;
if CheckBox19.Checked then SpinEdit9.SetFocus;
SpinEdit9.Enabled:= CheckBox19.Checked;
sniknik (2010-03-05 07:55:00) [23]> т.е. мне нужно что то типа
если только типа, то не привязывайся к "номеру", или имени, "вяжись" на Sender это есть сам объект CheckBox-а (в основном, если не ручной вызов с "кривым" сендером).
а адрес SpinEdit-а можно ему в таг разово прописать, при создании... и отпадет необходимость в разных массивах/поисках/определениях номеров/индексов и т.д.
p.s. сотни блоков это как-то через чур, может объединить в один объект? либо на крайняк фрейм. тогда и таги прописывать не надо будет, смотришь парента (подложку обоих) и от него смотришь SpinEdit-а.