Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.31;
Скачать: CL | DM;

Вниз

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

 
Сатир   (2006-11-09 16:42) [0]

Как нарисовать форму на панели другой формы?
пусть у меня есть форма, которую я хочу на рисовать на панели другой формы
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, то всё нормально получается, только на панале=и отображается форма вместе с шапкой, а мне нужно отобразить без шапки.
Кто подскажет, как можно решить эту проблемму?
Заранее благодарен.


 
clickmaker ©   (2006-11-09 16:46) [1]

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


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


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

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


 
atruhin ©   (2006-11-09 17:38) [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) [4]

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


 
DrPass ©   (2006-11-09 18:06) [5]

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


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


> TPanelForm.ManualDock(Panel1)

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



Страницы: 1 вся ветка

Текущий архив: 2006.12.31;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.032 c
2-1165921849
max999
2006-12-12 14:10
2006.12.31
Вопрос по TTable


2-1165836388
said46
2006-12-11 14:26
2006.12.31
TList.Sort и переполнение стека


15-1165594151
Kerk
2006-12-08 19:09
2006.12.31
Какнить вообще можно бороться с такими уродами?


2-1166076722
Клара
2006-12-14 09:12
2006.12.31
Связи таблиц


1-1163315458
Axis_of_Evil
2006-11-12 10:10
2006.12.31
TListBox с ручной отрисовкой