Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Упрощение процедур [D7, 2000, XP, 2003]


Страницы:   1 2

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-а.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо