Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.20;
Скачать: CL | DM;

Вниз

CheckBox   Найти похожие ветки 

 
Ламер 2.Х ©   (2007-04-30 15:24) [0]

Здравствуйте! Подскажите пожалуйста, что делать?
у меня есть несколько CheckBox мне надо поочередно проверить их значения в цикле!
Как корректно обратится к этим элементам, изменяя их имена в цикле?


 
turbouser ©   (2007-04-30 15:37) [1]

var
 Comp: TComponent;
...
 Comp := FindComponent("CheckBox1");
 if Comp <> nil then
   TCheckBox(Comp).Checked := True;


 
Ламер 2.Х ©   (2007-04-30 15:41) [2]

Спасибо большое счас попробую


 
{RASkov} ©   (2007-04-30 18:32) [3]

Вот держи пример позновательный, накидай на форму много разных контролов в их числе должно быть множество 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]..... Разницу, думаю, сам поймешь...

> Как корректно обратится к этим элементам, изменяя их имена в цикле?

А вот этого делать не к чему... зачем имена им менять, для чего?


 
turbouser ©   (2007-04-30 19:20) [4]


> {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 21:23) [5]

> [4] turbouser ©   (30.04.07 19:20)
> Зачем это?
> можно проще:

Можно... но я стараюсь в примерах обходится без with, дабы было более понятно.... Вот и вся разница. Не факт, кому-то и наоборот :)


 
Leonid Troyanovsky ©   (2007-04-30 21:30) [6]


> 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:44) [7]

> [6] Leonid Troyanovsky ©   (30.04.07 21:30)

Тады еще можно и так:
const Captions: array [TCheckBoxState] of String = ("Снят", "Установлен", "фикзнает");
:)


 
Ламер 2.Х ©   (2007-05-01 00:28) [8]

Спасибо ОГРОМАДНОЕ очень помогли



Страницы: 1 вся ветка

Текущий архив: 2007.05.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.203 c
9-1148916526
Avenger
2006-05-29 19:28
2007.05.20
Здраствуйте, Мастера!Проблема есть глобальная, с игрой...


3-1173159322
Atanas
2007-03-06 08:35
2007.05.20
Структура таблиц


15-1176839735
Чапаев
2007-04-17 23:55
2007.05.20
PL/SQL. Что почитать?


1-1174909546
kodov
2007-03-26 15:45
2007.05.20
Перемещение в ListBox


15-1176755469
ppcumax
2007-04-17 00:31
2007.05.20
Где взять библиотеку kernel32.dll?