Закрытая тема
Показано с 1 по 4 из 4

Тема: Перебор компонентов

  1. #1
    ozznob
    Guest

    По умолчанию Перебор компонентов

    Привет народ!!!

    на форме есть TpageControl с одной страницей (шаблонной) которая создаётся визуально.
    задача при нажатии на кнопку создать TtabSheet на основе шаблонной.
    делаю так :

    var Ts_template:TtabSheet;

    поэтому делаю так:

    Код:
    procedure TFRM_main.ToolButton1Click(Sender: TObject);
    var i,j,k:integer; 
    p:TPageControl;t:TTabSheet;
    begin
    t:=TTabSheet.Create(self);
     with t do
     begin
       parent:=self;
       PageControl:=PC_Template;
       Caption:='unnamed';
       for i:=0 to self.ComponentCount-1 do
       begin
         if (self.Components[i] is TPageControl) and ((self.Components[i] as 
    TPageControl).Parent=TS_Template) then
         begin
          p:=TPageControl.Create(self);
           with p{TPageControl.Create(self) }do
           begin
             parent:=t;//TS_Template;
             Align:=alClient;
             for j:=0 to PageControl1.PageCount-1 do
             begin
               with TTabSheet.Create(self) do
               begin
                 parent:=PageControl1;
                 PageControl:=p;
                 caption:=PageControl1.Pages[j].Caption;
               end;
             end;
           end;
         end;
       end;
     end;
    
    end;
    все хорошо но проблема в том что на этой шаблонной вкладке есть ещё один pageControl и соответственно чтобы перебрать его компоненты надо делать вложеный цикл опять по всем компонентам формы (ИМХО)
    или я опять лезу через форточку ...
    как сделать перебор компонентов только TAbSheetа ??? какая функция возвращает компоненты PARENTом которых является заданный ?

    заранее благодарен

  2. #2
    Кандидат в умники JiF Включаюсь JiF Включаюсь JiF Включаюсь
    Регистрация
    20.05.2005
    Сообщений
    420
    Поблагодарил(а)
    0
    Получено благодарностей: 14 (сообщений: 9).

    По умолчанию

    может так :
    Код:
    arr[1..2] of TTabSheet;
    For i:=1 to 2 do 
      arr[i]:=FindComponent(Format('TabSheet%d',[i])) as TTabSheet;
    находишь чисто нужный таб шит (без перебора всех компонентов формы) и выполняешь с ними все действия...

  3. #3
    ozznob
    Guest

    По умолчанию

    Цитата Сообщение от _jf_
    может так :
    Код:
    arr[1..2] of TTabSheet;
    For i:=1 to 2 do 
    arr[i]:=FindComponent(Format('TabSheet%d',[i])) as TTabSheet;
    находишь чисто нужный таб шит (без перебора всех компонентов формы) и выполняешь с ними все действия...
    ты видим не совсем понял в чем трабла
    мне нужно получить все компоненты которые лежат на табШите ...а не сам табшит ... а tabsheet1.componentscount вернет 0 ибо для всех контролов ownerом является форма.... а мне надо перебрать те контролы parent ом которых является tabSheet :-)

  4. #4
    ozznob
    Guest

    По умолчанию

    всё народ я разобрался вернее помогли .... если кому интересно то делается это так
    Код:
    procedure TForm1.Button1Click(Sender: TObject);
    var  
      i:integer;
    begin
      for i:=0 to TabSheet1.ControlCount-1 do
        Memo1.Lines.Add(TabSheet1.Controls[i].Name)
    end;
    :-) всем спасибо кто проявил интерес к данному топику :-)

Закрытая тема

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

     

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
Рейтинг@Mail.ru
Администрация сайта не выражает согласия
с высказыванием участников форума и не несет
ответственности за их содержание.

Копирование любого материала возможно только
при наличии ссылки на сайт.