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

Вниз

Как циклом перебрать все компоненты одного рода?   Найти похожие ветки 

 
Lebedev ©   (2007-06-27 07:44) [0]

У меня в проекте содержится 20 компонентов RadioGrioup. Мне, при нажатии на кнопку, необходимо проверить во всех ли них был сделан выбор. Хочется в цикле организовать обращение к свойству ItemIndex. Но КАК в цикле организовать перебор всех этих компонентов.

Спасибо!


 
Pohil ©   (2007-06-27 07:48) [1]

if (Owner.Components[i] is TRadioGroup) then ...


 
Loginov Dmitry ©   (2007-06-27 07:53) [2]

Owner зачем?


 
Pohil ©   (2007-06-27 08:03) [3]

Ну это к тому, что я не знаю где у него эти RadioGroup находятся


 
Lebedev ©   (2007-06-27 08:11) [4]

Можно чуть подробнее. Я не понял. (((
if (Owner.Components[i] is TRadioGroup) then ...
тогда что?


 
Lebedev ©   (2007-06-27 08:13) [5]

Все Radiogroups у меня находятся в ScrollBox. Это важно?


 
Pohil ©   (2007-06-27 08:50) [6]

for i := 0 to ScrollBox.ComponentCount -1 do begin
 if (ScrollBox.Components[i] is TRadioGroup) then <здесь проверяешь чего надо проверять>
end;


> Но КАК в цикле организовать перебор всех этих компонентов.
Вот так вот.


 
Lebedev ©   (2007-06-27 09:41) [7]

Спасибо!


 
Lebedev ©   (2007-06-27 09:56) [8]

Что то не получается (((

for i := 0 to ScrollBox1.ComponentCount -1 do begin
if (ScrollBox1.Components[i] is TRadioGroup) then
 begin
    if radiogroup[i].ItemIndex=-1 then
      showmessage("message");

 end;
end;


Как внутрициклы обратиться к своиству ItemIndex?


 
Lebedev ©   (2007-06-27 09:57) [9]

этот код не работает


 
Однокамушкин   (2007-06-27 10:05) [10]

Откуда вы вообще взяли идентификатор radiogroup[i]?

for i := 0 to ComponentCount -1 do begin
if (Components[i] is TRadioGroup) then
begin
   if TRadioGroup(Components[i]).ItemIndex=-1 then
     showmessage("message");

end;
end;


И ScrollBox1 надо убрать, потому что Components даёт доступ к тем объектам, для каторых данный является owner-ом, а owner-ом всех компонетов, созданных в design-time, является сама форма, независимо от того, на чём они визуально лежат... ScrollBox1 является для них parent-ом, так что перебирать через ScrollBox1 тоже можно (и так даже будет быстрее), но тогда надо использовать не Components, а Controls (и, соответственно, не ComponentCount, а ControlCount)... Это вам для самостоятельной работы :)))


 
Lebedev ©   (2007-06-27 10:23) [11]

Спасибо большое. Сейчас заработало.
>Откуда вы вообще взяли идентификатор radiogroup[i]?
Да я сам знал, что это не правильно. Просто написал для задания вопроса. ))


 
Lebedev ©   (2007-06-27 10:52) [12]

А вот такой вопрос.
Могли этот код стать причиной следующего.
Я этот код поставил на ажитие конпки

procedure TFLog.BitBtn1Click(Sender: TObject);
var i,t: integer;
begin
t:=0;

 for i := 0 to ComponentCount -1 do begin
   if (Components[i] is TRadioGroup) then
     begin
       if TRadioGroup(Components[i]).ItemIndex=-1 then begin
       t:=1
       end;
     end;
 end;

 if t=1 then showmessage("message") else
  begin
 {kod}
  end;
end;


И сейчас, когда я, при появлении сообщения, нажимаю кнопку "Ок", то моя модальная форма автоматически закрывается и управление переходит к главной форме. Такого раньше не было. Форма то не должна закрываться.


 
Lebedev ©   (2007-06-27 10:54) [13]

Все эти RadioButton расположены как раз на модальной форме, которая появляется при запуске программы.


 
Плохиш ©   (2007-06-27 10:54) [14]

ModalResult := mrNone

PS. Мозги когда включать будем, а то сгниют...


 
Ega23 ©   (2007-06-27 10:56) [15]

1. Значение BitBtn1.ModalResult чему равно?
2.
for i := 0 to ComponentCount -1 do
  if (Components[i] is TRadioGroup) then
     if TRadioGroup(Components[i]).ItemIndex=-1 then
      begin
       t:=1;
       Break;
      end;

Зачем дальше-то перебирать?



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

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

Наверх




Память: 0.5 MB
Время: 0.024 c
2-1182969812
Тимофей
2007-06-27 22:43
2007.07.22
Вычислить


15-1182524283
Dreamse
2007-06-22 18:58
2007.07.22
Подскажите утилиту для извлечения списка экспорта из dll


15-1182762432
xozain
2007-06-25 13:07
2007.07.22
gprs модем


15-1182538255
ProgRAMmer Dimonych
2007-06-22 22:50
2007.07.22
Последняя тема по Direct3D9


6-1166518747
xman
2006-12-19 11:59
2007.07.22
DXplay "диалог соединения на русском языке"