Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.048 c
2-1177733162
Cj
2007-04-28 08:06
2007.05.20
Программа открывающая файл


2-1177202524
Ёжик
2007-04-22 04:42
2007.05.20
Записать WideString строку


2-1178119436
I-New
2007-05-02 19:23
2007.05.20
Открыть папку explorer ом из Delphi


9-1149087557
Igroman
2006-05-31 18:59
2007.05.20
Newton + PhysicsCar+OpenGL


2-1178097367
Washington
2007-05-02 13:16
2007.05.20
Базы данных Access - удаление записей




   Наверх