![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Прорисовка формы на панели другой формы
Сатир © (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]а может в сторону фреймов глянуть?