Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1106677482
Aldor_
2005-01-25 21:24
2005.02.06
Можно ли с помощью GDI получить полноэкранный режим?


1-1106480936
Mirror
2005-01-23 14:48
2005.02.06
Строка под курсором мышки в RichEdit


1-1106341498
Oddin
2005-01-22 00:04
2005.02.06
TrackBar


14-1105702737
DimaK
2005-01-14 14:38
2005.02.06
BDE и профили пользователей в XP


1-1106546496
Mielofon
2005-01-24 09:01
2005.02.06
EXE, DLL и ShareMem





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