Форум: "Начинающим";
Текущий архив: 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.067 c