Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамический PageControl и TabSheet [D6, 2000]


stocker ©   (2005-12-27 17:19:00) 

Динамически создаю PageControl и вкладки, причем PageControl может быть несколько. Например (имена присваиваю динамически) :
PC1,PC2:TPageControl;
TS1_1,TS1_2,TS2_1:TTabSheet;

создал PC1 и TS1_1 на нем, затем создал PC2 и TS2_1 на нем.
Вернулся на форме к PC1 и по кнопке хочу создать TS1_2, но для этого
мне нужен Parent (PC1).
Вопрос: как получить реализовать такую задачку?
Если не решение, то помогите ссылками, пожалуйста.
Заранее спасибо за ответ.


stocker   (2005-12-29 16:15:00) [1]

никто не подскажет?


stocker   (2005-12-28 16:29:00) [2]

хорошо указатель сохранили, как мне узнать что я нахожусь на PC1 а не на PC2?
Или осуществить поиск в коллекции контролов?


Johnmen   (2005-12-27 21:34:00) [3]

После второго создания просто изменится значение переменной p1.
Отсюда:
либо сохраняем указатели на созданные объекты для дальнейшего использования,
либо каждый раз ищем в коллекции контролов тот, который необходим в текущий момент.


stocker   (2005-12-27 18:44:00) [4]

Опечатка в строке

// первая вкладка
  WinC:=CreateTabSheet(TS,'Общие','TS'+inttostr(CountVS)+'_1', P1);


stocker   (2005-12-27 18:41:00) [5]

Да будет он, но если

for CountVS:=1 to 2 do
 begin
    WinC:=CreateTabSheet(TabSh,'Пространство ' + inttostr(CountVS),'TS'+inttostr(CountVS),p);

  // PageControl дочерние
    p1:= TPageControl.Create(Self);
      with p1 do
         begin
            Parent := WinC;
            Align:=alClient;
            Name:='PC'+inttostr(CountVS);
        end;
   // первая вкладка
   WinC:=CreateTabSheet(TS,'Общие','TS1_'+inttostr(CountVS), P1);
end;


для TS2_1 Parent тоже будет p1


Johnmen   (2005-12-27 18:11:00) [6]

Я так понял, что для создаваемого TS1_2  
Parent:=p1;
:)


stocker   (2005-12-27 18:08:00) [7]


procedure TForm1.ToolButton1Click(Sender: TObject);

function CreateTabSheet(TS:TTabSheet;CapTS,NameTS:string; PgCtrl:TPageControl):TWinControl;
begin
 TS := TTabSheet.Create(PgCtrl);
 with TS do
   begin
     Visible := True;
     Caption := CapTS;
     PageControl := PgCtrl; // Назначаем Tab в Page Control
     Name:=NameTS;
     Result:=TS;
   end;
end;

var i,CountVS: integer; WinC:TWinControl;Sg:TStringGrid; p1,P:TPageControl;
   TabSh:TTabSheet;
begin
 // Создаем PageControl - родительский
  P := TPageControl.Create(application);
     with P do
       begin
         Name:='PCSpace';
         Parent := Form1.Panel2;
         Align:=alClient;
       end;

 CountVS:=1;

 WinC:=CreateTabSheet(TabSh,'Пространство '+inttostr(CountVS),'TS'+inttostr(CountVS),p);

 // PageControl дочерние
 p1:= TPageControl.Create(Self);
 with p1 do
   begin
     Parent := WinC;
     Align:=alClient;
     Name:='PC'+inttostr(CountVS);
   end;

 // первая вкладка
 WinC:=CreateTabSheet(TS,'Общие','TS1_'+inttostr(CountVS), P1);

 inc(CountVS);

end;


Johnmen   (2005-12-27 17:48:00) [8]

>stocker ©   (27.12.05 17:46) [2]

Приведи код создания PC.


stocker   (2005-12-27 17:46:00) [9]

2 Johnmen
до запуска программы PC1 не существует, PC1 имя компонента TPageControl и оно генерируется динамически (по нажанию кнопки).
TabSheet.Parent:=PC1 вызывает ошибку компилятора.


Johnmen   (2005-12-27 17:39:00) [10]

TabSheet.Parent:=PC1 ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо