![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
PageControl на Form1 + Form2 на TabSheet... [D7, WinXP]
Apophis © (2004-11-17 18:45:00)Господа!
Ситуация такая. Есть Форма1, на ней PageControl. Есть форма2. Изначально немного неправильно продумал логику работы, так вот, можно ли теперь Форму2 перенести со всеми компонентами и их событиями на страницу PageControl-а Формы1 ??? Или как лучше такое сделать?
Спасибо!
Ihor Osov'yak (2004-11-18 00:30:00) [1]Примерно так:
var
idxNewTab: integer;
...
procedure InsertForm2(aParentTab: TTabSheet);
var
form: TForm2;
begin
form := TForm2.Create(nil);
with form do
begin
BorderStyle := bsNone; {зачем нам капшен здесь :-)}
Parent := aParentTab; {собственно - ключевой момент}
Align := alClient; {это очевидно}
Visible := true;
end;
end;
procedure AddWBMsgRoutersTab;
var
ts: TTabSheet;
begin
// создаем закладку в рантайме
inc(idxNewTab);
ts := TTabSheet.Create(self);
with ts do
begin
Name := 'ts' + IntToStr(idxNewTab); {имя либо вообще не присваеваем, либо оно должно біть уникально в пределах формы, хостещей соотв. пейдконтрол }
Align := alClient;
Caption := 'tab #' + IntToStr(idxNewTab);
PageControl := PageControlMain; // PageControlMain - пейджонтрол
Visible := true;
end;
PageControlMain.ActivePage := ts;
InsertForm2(ts);
...
зы. Написано по памяти, возможны мелкие ошибки синтаксиса, не искажающие сути..
зы2. Примерно такую технику использую довольно часто, иногда есть преимущество по сравнению с использованием фреймов.
Apophis (2004-11-17 22:15:00) [2]ОК, попробую. Спасибо!
Defunct (2004-11-17 22:03:00) [3]Apophis © (17.11.04 21:53) [5]
переносятся. просто TForm1. замените на TFrame1.
Apophis (2004-11-17 21:53:00) [4]wnew
Но только в этом случае события элементов не переносятся. Придется заново переписывать (а вот именно это и влом:) )
wnew (2004-11-17 20:02:00) [5]
> Перенести все с формы2 в фрейм. Фрейм вставить в
> TabSheet
А перенести один к одному проще всего, удерживая нажатой Shift кликнуть мышью по каждому компоненту, далее Ctrl+C, а потом сделать активным создаваемый фрейм или прямо TabSheet и - Ctrl+V.
Defunct (2004-11-17 19:35:00) [6]> Или как лучше такое сделать?
Создать фрейм.
Перенести все с формы2 в фрейм. Фрейм вставить в TabSheet
Shaman_Naydak (2004-11-17 19:31:00) [7]или поправь для формы2, чтобы она наследовалась от TFrame, а не от TForm.. И далее вставишь как фрейм.. только делай на копии сперва, если не пробовал так баловаться
Гаврила (2004-11-17 19:15:00) [8]Можно
создать форму, присвоить парентом TabSheet, выставить размеры