![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамический 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 ?