Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Прорисовка формы на панели другой формы


Сатир ©   (2006-11-09 16:42:00) 

Как нарисовать форму на панели другой формы?
пусть у меня есть форма, которую я хочу на рисовать на панели другой формы
type
 TPanelForm = class(TForm)
 private
   { Private declarations }
 public
   { Public declarations }
   procedure CreateParams(var Params:TCreateParams);override;
 end;

implementation

{$R *.dfm}

procedure TPanelForm.CreateParams(var Params: TCreateParams);
begin
 inherited CreateParams(Params);
 Params.Style:=WS_THICKFRAME or WS_POPUP or WS_BORDER;
//для того, чтобы у формы не было шапки
end;

и есть форма, на которой есть панель, которая должна отображать первую форму
в обработчике OnCreate пишу такой код:

procedure TForm1.FormCreate(Sender: TObject);
var a:TPanelForm;
begin
  a:=TPanelForm.Create(Panel1);
  a.Parent:=Panel1;

  a.ParentWindow:=Panel1.Handle;
  a.Align:=alclient;
  a.Show;
end;
В результате, форма рисуется не на панели, а сбоку и родительская форма не может принять фокус ввода, поэтому приходится снимать приложение через ctrl+F2
Если не переопределять в дочереней форме метод CreateParams, то всё нормально получается, только на панале=и отображается форма вместе с шапкой, а мне нужно отобразить без шапки.
Кто подскажет, как можно решить эту проблемму?
Заранее благодарен.


Сатир   (2006-11-13 13:50:00) [1]


> TPanelForm.ManualDock(Panel1)

идеально подошло, пасибо... и не нужно переопределять CreateParams


DrPass   (2006-11-09 18:06:00) [2]

А чем не устраивает просто TPanelForm.ManualDock(Panel1)


atruhin   (2006-11-09 17:38:00) [3]

constructor TfrmAbstractChild.CreateChild(AOwner: TComponent);
begin
 FTempParent := TWinControl(AOwner);
 inherited Create (AOwner);
end;

procedure TfrmAbstractChild.CreateParams(var Params: TCreateParams);
begin
 inherited;
 if FAsChild then
   Params.Style := Params.Style or WS_CHILD;
end;

procedure TfrmAbstractChild.Loaded;
begin
 inherited;
 if FAsChild then begin
   Align := alClient;
   BorderStyle := bsNone;
   BorderIcons := [];
   Parent := FTempParent;
   Position := poDefault;
 end;
end;


atruhin   (2006-11-09 17:38:00) [4]

Описано у Тексейры с Пачеко


Сатир   (2006-11-09 16:49:00) [5]


> а может в сторону фреймов глянуть?

нельзя. на фреймах невозможно разместить dxBarManager.
оно изначально было реализовано на фреймах, но фреймы органичены по нескольких аспектах


clickmaker   (2006-11-09 16:46:00) [6]

а может в сторону фреймов глянуть?


Наверх

Титульная страница Поиск, карта сайта Написать письмо