![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
РадиоБатоны?
Hitkliff © (2006-05-22 15:52:00)Как циклом сбросить выделение большого количества РадиоБатонов??????????
Tonich (2006-05-24 11:51:00) [1]а как по мне так проще пробежаться по компонентам на форме да и все.
но как было замечено еще в [5] посте, бред какой-то а не задача,
тохда уже чек-боксы а не радио.
GanibalLector (2006-05-23 23:44:00) [2]>Полностью поддерживаю...
Аналогично.
procedure TForm1.ExecClick(Sender: TObject);
//
procedure SetConrols(Obj:array of TObject);
var I:Integer;
begin
for I:=0 to Length(Obj)-1 do
begin
if (Obj[I] is TRadioButton) then
(Obj[I] as TRadioButton).Checked:=False;
end;
end;
//
begin
SetConrols([RadioButton1,RadioButton2,RadioButton3]);
end;
Asail (2006-05-23 17:49:00) [3]
> Button1 имеет тип TButton, это не TRadioButton (он же Радио
> Батон)
Правильно, но в цикле, приведенном выше, проверка идет на кол-во ВСЕХ контролов на форме.
> Если я не ошибаюсь Радио батон при вкльчении выключает все
> другие Радио батоны в том контейнере в котором он находится,
> так что эта задача не имеет смысла
Полностью поддерживаю...
Elen (2006-05-23 07:39:00) [4]
> Это как так? А Button1 - он что-же не контрол что-ли? Так-что, как минимум, один уж есть...
Button1 имеет тип TButton, это не TRadioButton (он же Радио Батон)
Если я не ошибаюсь Радио батон при вкльчении выключает все другие Радио батоны в том контейнере в котором он находится, так что эта задача не имеет смысла
Asail (2006-05-23 00:32:00) [5]
> А особенно чудесно, если их будет 0 ;)
Это как так? А Button1 - он что-же не контрол что-ли? Так-что, как минимум, один уж есть...
Ega23 (2006-05-22 18:03:00) [6]
> Caption := IntToStr(CycleCount);
А-а-а, в этом плане...
Понял...
MBo (2006-05-22 17:37:00) [7]>Ega23 © (22.05.06 17:08) [6]
>А что тогда? В цикл-то не попадаем по условию...
Использование беззнаковой переменной в качестве счетчика цикла часто чревато боком:
procedure TForm1.Button2Click(Sender: TObject);
var
b, Cnt: byte;
CycleCount: Integer;
begin
CycleCount := 0;
Cnt := 0;
for b := 0 to Cnt - 1 do
Inc(CycleCount);
Caption := IntToStr(CycleCount);
end;
Cashmare (2006-05-22 17:36:00) [8]Ega23 © (22.05.06 17:08) [6]
Range Check Error будет. Только зачем перебирать 0 контролов, да еще и на предмет радиобатонов. :)
Ega23 (2006-05-22 17:08:00) [9]
> А особенно чудесно, если их будет 0 ;)
А что тогда? В цикл-то не попадаем по условию...
MBo (2006-05-22 17:04:00) [10]>2. Eсли контролов > 255 - работать не будет.
А особенно чудесно, если их будет 0 ;)
>Hitkliff © (22.05.06 15:52)
>Как циклом сбросить выделение большого количества РадиоБатонов??????????
Radiobutton-ы вообще-то предназначены для выбора одного из множества вариантов, поэтому вопрос несколько странный...
Ega23 (2006-05-22 17:00:00) [11]
> procedure TForm1.Button1Click(Sender: TObject);
> var i:byte;
> begin
> for i:=0 to form1.ComponentCount-1 do
> begin
> if form1.Components[i] is TRadioButton then TRadioButton(form1.
> Components[i]).Checked:=false;
> end;
>
> end;
>
1. Т.к. данный код идёт в рамках класса TForm1, form1 везде можно опустить. Тем более, что экземпляр объекта класса TForm1 может называться не только 'form1'.
2. Eсли контролов > 255 - работать не будет.
Elen (2006-05-22 16:57:00) [12]
>РадиоБатоны - это как ))))
Наверное Батоны из Чернобыля
Gydvin (2006-05-22 16:42:00) [13]РадиоБатоны - это как ))))
Elen (2006-05-22 16:10:00) [14]Угощайтесь, Сударь, Батончиком
procedure TForm1.Button1Click(Sender: TObject);
var i:byte;
begin
for i:=0 to form1.ComponentCount-1 do
begin
if form1.Components[i] is TRadioButton then TRadioButton(form1.Components[i]).Checked:=false;
end;
end;