Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перебор компонентов

1.9K
06 мая 2006 года
Werky
129 / / 14.01.2006
На форме есть 20 чекбоксов нужно организовать цыкл в котором надо проверять свойство checked и выполнять соответствующее условие. Как правильно ето сделать чтобы не писать:
if Form1.CheckBox1.Checked ....
if Form1.CheckBox2.Checked ....
....
if Form1.CheckBox20.Checked ....

а сделать одним If-ом.
2.0K
06 мая 2006 года
Dstr
158 / / 27.04.2006
Цитата:
Originally posted by Werky
На форме есть 20 чекбоксов нужно организовать цыкл в котором надо проверять свойство checked и выполнять соответствующее условие. Как правильно ето сделать чтобы не писать:
if Form1.CheckBox1.Checked ....
if Form1.CheckBox2.Checked ....
....
if Form1.CheckBox20.Checked ....

а сделать одним If-ом.




Ну можно поступить примерно так:

Const C: Boolean = true
case С of

Form1.CheckBox2.Checked:
//код///
End;
Form1.CheckBox3.Checked:
//код///

Не пробовал в действии, мош можно и без константы обойтись :) (true иль false)
End;

344
06 мая 2006 года
Delpher
493 / / 14.08.2005
Цитата:
Originally posted by Werky
На форме есть 20 чекбоксов нужно организовать цыкл в котором надо проверять свойство checked и выполнять соответствующее условие. Как правильно ето сделать чтобы не писать:
if Form1.CheckBox1.Checked ....
if Form1.CheckBox2.Checked ....
....
if Form1.CheckBox20.Checked ....

а сделать одним If-ом.



RTTI forever:)

 
Код:
var
  I: Integer;
begin
  for I := 0 to ComponentCount - 1 do
    if Components is TCheckBox then
      if (Components as TCheckBox).Checked then
//
end;
1.8K
06 мая 2006 года
LastSoul
279 / / 28.12.2005
Цитата:
Originally posted by Delpher
 
Код:
var
  I: Integer;
begin
  for I := 0 to ComponentCount - 1 do
    if Components is TCheckBox then
      if (Components as TCheckBox).Checked then
//
end;


А как можно эти чекбоксы таким же образом найти на другом окне, и удалить их или хотя бы visible поменять (имя и класс окна известны)
Таким образом создаю:

 
Код:
Hnd:=FindWindow('TForm', 'Form1');
 For i:=1 To 3 Do
 with TEdit.Create(Self) do
  begin
   Name:='Edit'+IntToStr(i);;
   Top:=i*25;
   ParentWindow:=Hnd;
  end;

Со своего окна легко их грохнуть: Components[n].Destroy;, а с чужим чето неполучается...
18K
08 мая 2006 года
skyboy
1 / / 08.05.2006
Цитата:
Originally posted by LastSoul
А как можно эти чекбоксы таким же образом найти на другом окне, и удалить их или хотя бы visible поменять (имя и класс окна известны)


Сообщения Windows - как раз для этой задачи, как мне кажется :) Только на найденном окне надо будет сначала найти компоненты нужного тебе класса, а потом бросать в них WM_что-то-там :)

1.8K
08 мая 2006 года
LastSoul
279 / / 28.12.2005
Цитата:
Originally posted by skyboy
Сообщения Windows - как раз для этой задачи, как мне кажется :) Только на найденном окне надо будет сначала найти компоненты нужного тебе класса, а потом бросать в них WM_что-то-там :)


Дык вот именно что я немогу догнать как эти компонеты найти (независимо от класса, но нужны TLabel и TEdit)(на чужом окне)...
Что можно сделать...??? Подскажите плз...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог