Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];

Вниз

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

 
Сатир   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.054 c
2-1165740492
ctudent
2006-12-10 11:48
2006.12.31
Изменение позиции MDI окна


8-1147253674
BOGDAN
2006-05-10 13:34
2006.12.31
Эффект воды на битмапе


15-1166000886
Ega23
2006-12-13 12:08
2006.12.31
Как по-английски сказать "прямое направление"?


15-1166004818
Decease
2006-12-13 13:13
2006.12.31
Где скачать компанент типа SystemTray?


9-1140959944
Fenix
2006-02-26 16:19
2006.12.31
Привязка камеры к актеру.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский