|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
объект Editbox как параметр функции
Добрый день. Написал следующий код :
Код:
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; Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#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; Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#7
|
|||
|
|||
Вообще-то, для этих целей есть специальный компонент - TRadioGroup
|
#8
|
||||
|
||||
Цитата:
Я тоже над этим думал ... но видимо RadioGroup чем-то не угодил автору Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|