Форум: "Основная";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
ВнизСоздание формы (фрейма) Найти похожие ветки
← →
uncle SAM (2005-01-21 23:51) [0]Имеем PageControl у которого будет много однотипных вкладок, типов этих одинаковых вкладок будет тоже несколько. Имеет смысл создать массив нужных объектов и по необходимости создавать нужную страницу в PageControl и присваивать ей этот объект. Вопрос как это должно быть реализовано? Можно ли создать форму, чтобы ее владельцем был другой обект? Или это должен быть фрейм?
Отобразить на вкладке форму мне никак не удалось, хотя она создаеться и InsertControl()..., и никаких оштбок. С фреймом интереснее... он отлично отображаеться, так как и надо, но только если на нем есть ограниченный набор компонент (TButton, TEdit) если допустим добавить TMemo, он перестаёт отображаться полностью.... :-/
TabSheet := TTabSheet.Create(PageControl1);
TabSheet.PageControl := PageControl1;
Frame2 := TFrame2.Create(TabSheet);
TabSheet.InsertControl(Frame2);
Как это долно выглядеть?
← →
jack128 © (2005-01-22 00:54) [1]uncle SAM (21.01.05 23:51)
если допустим добавить TMemo, он перестаёт отображаться полностью.... :-/
В смысле? Скролы появляются? Ну а что ж ты хотел - компактнее контролы на фрейме размещай..
← →
uncle SAM (2005-01-22 11:35) [2]Нет не скролы. Полностью в смысле "вообще", он в смысле фрейм :)
Фрейм исчезает со всеми своими компанентами! Вот такой вот эффект.
Проверьте пожалуйста код (см. выше) с TMemo на фрейме и без него.
← →
uncle SAM (2005-01-22 16:15) [3]Как добавить форму или фрейм на TTabSheet ?
← →
jack128 © (2005-01-22 16:33) [4]Frame1.Parent := MyTabSheet;
Frame1.Align := alClient;
Frame1.Visible := True;
uncle SAM (22.01.05 11:35) [2]
Фрейм исчезает со всеми своими компанентами! Вот такой вот эффект.
Э-э-э.. Даже не знаю, чтоо сказать. Очень часто использую фреймы, но ни разу такого не видел..
← →
begin...end © (2005-01-22 16:42) [5]> uncle SAM (21.01.05 23:51)
> Можно ли создать форму, чтобы ее владельцем был другой обект?
Можно. Но владелец и родитель - это разные вещи. Владелец будет следить за последующим уничтожением объекта (в принципе, владельца может и не быть вообще). А родитель - это компонент, "содержащий в себе" данный компонент.
> Отобразить на вкладке форму мне никак не удалось, хотя она
> создаеться и InsertControl()..., и никаких оштбок.
Во-первых, читаем справку:
Applications should not need to call InsertControl directly. Child controls are automatically inserted and removed when added or deleted at design time. At runtime, use the Parent property of the child control to insert it in the Controls array. If the child control is already the child of another control, setting the Parent property ensures that the child is removed from the Controls of the original parent.
Во-вторых, при создании TabSheet владельца можно не указывать, т.к. фактически он присваивается в строке TabSheet.PageControl := PageControl1.
Во-третьих, Вы, возможно, просто не показываете форму (Visible, Show).
Вот такой пример работает:begin
TabSheet := TTabSheet.Create(NIL);
TabSheet.PageControl := PageControl;
Form := TForm.Create(Application);
Form.Parent := TabSheet;
Form.Show
end.
Но - оно Вам надо? :-)
← →
uncle SAM (2005-01-22 16:49) [6]jack128 ©
Parent, насколько я понимаю указываеться в Create. Align и Visible ни при чем, т.к. я уже говорил, что фрейм нормально СОЗДАЕТЬСЯ и ПОЯВЛЯЕТЬСЯ, только если на нем ограниченный набор компонент (TButton, TEdit etc.) Если просто на фрейм добавить TMemo (DBGrid etc.) получаеться просто пустой TabSheet !!!
Попробуйте пожалуйста именно с PageControl, будет у вас такой эффект? Потому что, что ловить даже не предполагаю.
← →
begin...end © (2005-01-22 16:51) [7]> [6] uncle SAM (22.01.05 16:49)
> Parent, насколько я понимаю указываеться в Create.
Вы заблуждаетесь настолько глубоко, что заблуждаетесь даже на счёт глубины своего заблуждения (© не помню чей).
← →
begin...end © (2005-01-22 16:52) [8]> [5] begin...end © (22.01.05 16:42)
Текст:
> Во-вторых, при создании TabSheet владельца можно не указывать,
> т.к. фактически он присваивается в строке TabSheet.PageControl
> := PageControl1.
считать недействительным.
← →
uncle SAM (2005-01-22 16:57) [9]begin...end © (22.01.05 16:42) [5]
За код спасибо получилось (с остальным разбираюсь), НО там форма прям с заголовком, с системными кнопками... :-), мне такое не надо..., видимо все же надо использовать фрейм.
Идея в том чтобы эту форму(фрейм) использовать как заготовку для однотипных TabSheet
← →
uncle SAM (2005-01-22 17:06) [10]Вроде получаеться, иду разбираться...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c