Главная страница
    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.47 MB
Время: 0.057 c
6-1128849804
Galiaf
2005-10-09 13:23
2006.01.22
Socket, отправить клиенту данные зная только его Ip.


4-1131393148
MAXHO
2005-11-07 22:52
2006.01.22
Как поместить все значки из трея на форму?


3-1132822268
Drizhenko
2005-11-24 11:51
2006.01.22
Пингование по базе данных


1-1134465907
Asail
2005-12-13 12:25
2006.01.22
Корректное закрытие приложения ...


14-1135977049
sergey1
2005-12-31 00:10
2006.01.22
ура, и все таки я ее сделал





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский