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

Вниз

Плавающие окна   Найти похожие ветки 

 
Hooch   (2002-09-06 07:25) [0]

День добрый !
Проблема такова: есть mdiChid форма, поверх неё должна плавать форма, не выходя за пределы mdiChild. Если в качестве ParentWindow плавающей формы задать mdiChild, то все работает нормально, но начинаются проблемы с фокусом, в частности, если мышкой кликать на Edit-ах, расположеных на плавающем окне, на них не переходит фокус и если фокус находится на компоненте плавающего окна он не всегда возвращается в родительское. Не подскажет ли кто решение проблемы с фокусом или другой, относительно простой, способ реализации плавающего окна, не выходящего за пределы родителя ?


 
msts   (2002-09-06 13:59) [1]

//----------------

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
uses Unit2;

procedure TForm1.Button1Click(Sender: TObject);
begin
with TForm2.Create(Self) do begin
ManualDock(Self);
Visible := true;
Left := 10;
Top := 10;
end;
end;

end.

//----------------
unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm2 = class(TForm)
Memo1: TMemo;
Edit1: TEdit;
Label1: TLabel;
Panel1: TPanel;
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTESt;
procedure Panel1Enter(Sender: TObject);
procedure Label1MouseLeave(Sender: TObject);
procedure Label1MouseEnter(Sender: TObject);
private
{ Private declarations }
procedure CreateParams(var Params: TCreateParams); override;
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
Style := Style or ({WS_CAPTION or} WS_THICKFRAME{ or WS_MINIMIZEBOX or
WS_MAXIMIZEBOX or WS_SYSMENU})
//WS_CAPTION - изза этого флага фокус не переходит - почему ? - не знаю - не искал
end;

procedure TForm2.WMNCHitTest(var Message: TWMNCHitTest);
begin
inherited;
//вариант 1 таскаем за форму
//if Message.Result = HTCLIENT then Message.Result := HTCAPTION;
//вариант 2 таскаем за надпись
if PtInRect(Label1.BoundsRect ,Self.ScreenToClient(Point(Message.Pos.x,Message.Pos.y)))
then Message.Result := HTCAPTION;
end;

procedure TForm2.Panel1Enter(Sender: TObject);
begin
// на Panel1 лежат компоненты кроме Label1
Self.BringToFront;
end;

procedure TForm2.Label1MouseLeave(Sender: TObject);
begin
TLabel(Sender).Font.Color:=clWindowText;
end;

procedure TForm2.Label1MouseEnter(Sender: TObject);
begin
TLabel(Sender).Font.Color:=clRed;
end;

end.



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

Форум: "Основная";
Текущий архив: 2002.09.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.006 c
3-60966
Kurt
2002-08-27 13:14
2002.09.19
У меня очень долго отрабатываются запросы (в частности пытаюсь вы


14-61272
Кузнецов
2002-08-23 11:10
2002.09.19
халява


14-61304
Руссу Михаил
2002-08-24 00:40
2002.09.19
Показ информации из реестра!


1-61206
Anar
2002-09-08 23:28
2002.09.19
Кнопки как в


1-61205
Hiking
2002-09-08 19:09
2002.09.19
Как из строки S удалить все пробелы кроме первых двух?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский