Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];

Вниз

Динамический 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.041 c
4-1131958325
Чапаев
2005-11-14 11:52
2006.01.22
Отловить момент запуска приложений


2-1136405133
lex85
2006-01-04 23:05
2006.01.22
закладки


6-1129031960
ThermiT
2005-10-11 15:59
2006.01.22
Borland Socket Server - можно ли обойтись без него?


8-1123783761
Grief
2005-08-11 22:09
2006.01.22
DirectX SDK


14-1135845793
oleggar
2005-12-29 11:43
2006.01.22
alfa filemonitor





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский