Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пребор всех компонент рекурсивно 
:(
    Опции темы
fess
Дата 27.2.2006, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 17.2.2005
Где: г. Мурманск, Росс ия

Репутация: 2
Всего: 3



Как перебрать все компоненты на панели? Причём на самих этих компонентах могу ещё находиться компоненты!
При использовании ComponentCount - говориться, что нет ни одного компонента на панели ( ComponentCount = 0).
При использовании ControlCount - невозможно передать в рекурсивную процедуру процедуру, так как У TControl нету свойства ControlCount ((
Это нужно для процедуры сохранения компонента в поток:

Код

    procedure AddToStream(   SomeComponent:TComponent;ToStream:TMemoryStream);

      Procedure RecurceWrite(SomeComponent:TComponent; ToStream:TMemoryStream);
        var i: integer;
      begin
        for i := 0 to SomeComponent.ComponentCount - 1
        do begin
          ToStream.WriteComponent(SomeComponent.TComponents[i]);
          if SomeComponent.Components[i].ComponentCount>0
            then  RecurceWrite(SomeComponent.Components[i],ToStream);
        end;
      end;

    begin
      ToStream:=TMemoryStream.Create;
      RecurceWrite(SomeComponent,ToStream);
    end;


Но это не работает ((
Так как ComponentCount=0 (((
--------------------
Компьютер не подчиняется законам физики. Только в нём глюки возникают из ничего, файлы исчезают в никуда, а объём измеряется в метрах и называется весом.
PM MAIL ICQ   Вверх
Rennigth
Дата 27.2.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



к примеру:
Код

procedure RecursiveDisable(AParent: TWincontrol);
var
  i: Integer;
begin
  if Assigned(AParent) and (AParent is TWincontrol) then
    for i := AParent.ControlCount - 1 downto 0 do
    begin
      AParent.Controls[i].Enabled := False;
      if AParent.Controls[i] is TWincontrol then
        RecursiveDisable(TWincontrol(AParent.Controls[i]));
    end;
end;




--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Romikgy
Дата 27.2.2006, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



GetWindow c GW_CHILD не поможет?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
fess
Дата 28.2.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 17.2.2005
Где: г. Мурманск, Росс ия

Репутация: 2
Всего: 3



Rennigth
Спасибо за помощь! Сработало!

Romikgy
Я не понял, но это уже и не важно )
--------------------
Компьютер не подчиняется законам физики. Только в нём глюки возникают из ничего, файлы исчезают в никуда, а объём измеряется в метрах и называется весом.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1303 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.