![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CheckBox [D7, XP]
Ламер 2.Х © (2007-04-30 15:24:00)Здравствуйте! Подскажите пожалуйста, что делать?
у меня есть несколько CheckBox мне надо поочередно проверить их значения в цикле!
Как корректно обратится к этим элементам, изменяя их имена в цикле?
Ламер 2.Х (2007-05-01 00:28:00) [1]Спасибо ОГРОМАДНОЕ очень помогли
{RASkov} (2007-04-30 21:44:00) [2]> [6] Leonid Troyanovsky © (30.04.07 21:30)
Тады еще можно и так:
const Captions: array [TCheckBoxState] of String = ('Снят', 'Установлен', 'фикзнает');
:)
Leonid Troyanovsky (2007-04-30 21:30:00) [3]
> turbouser © (30.04.07 19:20) [4]
> можно проще:
> if Checked then
> Caption := 'Установлен'
> else
> Caption := 'Снят';
const Captions: array [Boolean] of String = ('Снят', 'Установлен');
--
Regards, LVT.
{RASkov} (2007-04-30 21:23:00) [4]> [4] turbouser © (30.04.07 19:20)
> Зачем это?
> можно проще:
Можно... но я стараюсь в примерах обходится без with, дабы было более понятно.... Вот и вся разница. Не факт, кому-то и наоборот :)
turbouser (2007-04-30 19:20:00) [5]
> {RASkov} © (30.04.07 18:32) [3]
> FCheck:=Components[N] as TCheckBox; //Приравневаем с приведением типа - временную переменную.
Зачем это?
можно проще:
if Components[N] is TCheckBox then
with TcheckBox(Components[N]) do
begin
Checked := not Checked;
if Checked then
Caption := 'Установлен'
else
Caption := 'Снят';
end;
{RASkov} (2007-04-30 18:32:00) [6]Вот держи пример позновательный, накидай на форму много разных контролов в их числе должно быть множество TCheckBox'ов, "раскидай" их как по форме, так и "размести некоторые на панелях"...
рrocedure TForm.ButtonClick(...);
var N: Integer; FCheck: TCheckBox;
begin
for N:=ComponentCount-1 downto 0 do
if Components[N] is TCheckBox then begin //Проверка - является ли очередной компонент TCheckBox'ом
FCheck:=Components[N] as TCheckBox; //Приравневаем с приведением типа - временную переменную.
FCheck.Checked:=not FCheck.Checked; //Далее работаем с ней как с "обычным" TCheckBox'ом
if FCheck.Checked then FCheck.Caption:='Установлен'
else FCheck.Caption:='Снят';
end;
end;
Так же попробуй вместо ComponentCount и Components[N] использовать ControlCount и, соответственно, Controls[N]..... Разницу, думаю, сам поймешь...
> Как корректно обратится к этим элементам, изменяя их имена в цикле?
А вот этого делать не к чему... зачем имена им менять, для чего?
Ламер 2.Х (2007-04-30 15:41:00) [7]Спасибо большое счас попробую
turbouser (2007-04-30 15:37:00) [8]
var
Comp: TComponent;
...
Comp := FindComponent('CheckBox1');
if Comp <> nil then
TCheckBox(Comp).Checked := True;