![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Добрый день. Написал следующий код :
Код:
procedure GetCheck ( Buff_box : TCheckBox ); begin Form1.CheckBox1.Checked := FALSE; Form1.CheckBox2.Checked := FALSE; Buff_box.Checked := TRUE; end; procedure TForm1.CheckBox1Click(Sender: TObject); begin GetCheck ( Form1.CheckBox1 ); end; Цель кода следующая - при клике на объект CheckBox1 этот объект посылается как параметр в функцию GetCheck. Смысл этой функции - убрать галочки со всех объектов CheckBox на форме, после чего поставить галочку только в тот CheckBox, который передан параметром. Код работает некорректно, при нажатии на CheckBox1 объект мигает и выкидывает в ассемблерский код. Буду рад помощи. Заранее спасибо. |
|
#2
|
|||
|
|||
|
Код:
function GetCheck(BuffBox: TCheckBox);
var
i:integer;
begin
for i := 0 to ControlList.Count - 1 do
if (TControl(ControlList[i]) is TComboBox) and (TComboBox(ControlList[i]).Name = BuffBox.Name) then
BuffBox.Checked := True
else
BuffBox.Checked := False;
end; |
|
#3
|
|||
|
|||
|
Можно, пожалуйста, объяснить в чём была проблема и что именно вы сделали в вашем коде?
|
|
#4
|
||||
|
||||
|
Код:
procedure GetCheck ( Buff_box : TCheckBox );
var
cnt:integer;
cb :TCheckBox;
begin
for cnt:=1 to ComponentCount do
begin
cb:=TCheckBox(FindComponent('CheckBox'+IntToStr(cnt)));
if cb.Name=Buff_box.Name
then cb.Checked:=True
else cb.Checked:=False;
end;
end; |
|
#5
|
|||
|
|||
|
Юрка, спасибо, но есть вопрос - если я буду отрабатывать события с нескольких чекбоксов, например добавлю функцию, то глюки такого же характера остаются.
Код:
procedure TForm1.CheckBox2Click(Sender: TObject); begin GetCheck ( Form1.CheckBox2 ); end; lmikle: пользуемся тегами! |
|
#6
|
||||
|
||||
|
я буквально вчера делал похожую функцию, вот только процедуру я цеплял одну и ту же на все TCheckbox-ы. Нужно лишь правильно обработать Sender:
Код:
procedure TForm1.CheckBox1Click (Sender : TObject );
var
cnt:integer;
cb :TCheckBox;
cbName:string;
begin
cbName:=(Sender as TCheckBox).Name;
for cnt:=1 to ComponentCount do
begin
cb:=TCheckBox(FindComponent('CheckBox'+IntToStr(cnt)));
if cb.Name=cbName
then cb.Checked:=True
else cb.Checked:=False;
end;
end; |
|
#7
|
|||
|
|||
|
Вообще-то, для этих целей есть специальный компонент - TRadioGroup
|
|
#8
|
||||
|
||||
|
Цитата:
Я тоже над этим думал ... но видимо RadioGroup чем-то не угодил автору |