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

Вниз

Динамический PageControl и TabSheet   Найти похожие ветки 

 
stocker ©   (2005-12-27 17:19) [0]

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

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


 
Johnmen ©   (2005-12-27 17:39) [1]

TabSheet.Parent:=PC1 ?


 
stocker ©   (2005-12-27 17:46) [2]

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


 
Johnmen ©   (2005-12-27 17:48) [3]

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

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


 
stocker ©   (2005-12-27 18:08) [4]


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 18:11) [5]

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


 
stocker ©   (2005-12-27 18:41) [6]

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

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


 
stocker ©   (2005-12-27 18:44) [7]

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

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


 
Johnmen ©   (2005-12-27 21:34) [8]

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


 
stocker ©   (2005-12-28 16:29) [9]

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


 
stocker ©   (2005-12-29 16:15) [10]

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



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

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

Наверх




Память: 0.49 MB
Время: 0.026 c
14-1135465488
Bakset
2005-12-25 02:04
2006.01.22
Вопрос про сервисы для гуру...


11-1117438691
mmn
2005-05-30 11:38
2006.01.22
Секция {$I name.inc} в .DPR файле


14-1135694392
Digitman
2005-12-27 17:39
2006.01.22
Rayzoon Jamstix VSTi v1.01c


2-1135430288
аматор
2005-12-24 16:18
2006.01.22
работа с FileStream


6-1129213867
KSergey
2005-10-13 18:31
2006.01.22
Как определить установленность QoS для сетевого адаптера