Главная страница
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.03 c
2-1165666026
xela
2006-12-09 15:07
2006.12.31
Передача текста в браузер


2-1165992803
031178
2006-12-13 09:53
2006.12.31
SaveDialog


2-1166001845
mfender
2006-12-13 12:24
2006.12.31
Перечисляемые свойства


15-1165440373
Arturrr
2006-12-07 00:26
2006.12.31
задача по физике


2-1165594616
a1lex
2006-12-08 19:16
2006.12.31
Работа с DBGrid