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

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

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;


Наверх

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