Главная страница
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.056 c
2-1165594661
Серый
2006-12-08 19:17
2006.12.31
StrigGrid


3-1161069250
Polegoner
2006-10-17 11:14
2006.12.31
Помогите написать SQL запрос


15-1165500303
Караед
2006-12-07 17:05
2006.12.31
ПОМОГИТЕ РАЗОБРАТЬСЯ С ЗАДАЧЕЙ


15-1165585217
Сатир
2006-12-08 16:40
2006.12.31
Удалиние лишних bpl-ок


2-1165762818
addi
2006-12-10 18:00
2006.12.31
FloatToInt