Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Rahmen berührt ? (https://www.delphipraxis.net/80837-rahmen-beruehrt.html)

-=cats=- 16. Nov 2006 07:35


Rahmen berührt ?
 
Hi :-)

Gibt es eine Möglichkeit zu überprüfen,
ob der Benutzer mit dem Mauszeiger den rechten Rand
der Form berührt hat ?

Ich habe es mal so probiert:

Delphi-Quellcode:
 procedure TForm1.FormCreate(Sender: TObject);
begin
 if
   (Mouse.CursorPos.X = Self.Width)
 then
   JvNavigationPane1.Visible := true;
end;
Wenn ich es mit Screen.Width probiere, geht es auch nicht :-(
Liegt es vielleicht daran, das ich das in eine Endlosschleife
schreiben müsste ? Damit er das ständig überprüft ?
Aber das wäre ja blöd. Ich kann ja nicht die ganze Zeit so eine
Schleife laufen lassen ...

Gruß,
-=cats=- :coder:

Hawkeye219 16. Nov 2006 08:11

Re: Rahmen berührt ?
 
Hi,

du könntest die Nachricht WM_NCMOUSEMOVE abfangen:

Delphi-Quellcode:
type
  TForm1 = class (TForm)
  private
    procedure WMNCMouseMove (var aMsg: TWMNCMouseMove); message WM_NCMOUSEMOVE;
  end;

procedure TForm1.WMNCMouseMove (var aMsg: TWMNCMouseMove);
begin
  inherited;
  Caption := Format('%d: code=%.8x', [GetTickCount, aMsg.HitTest]);
  if (aMsg.HitTest = HTRIGHT) then
    Caption := Caption + ' *rechter Rand*';
end;
Gruß Hawkeye

-=cats=- 16. Nov 2006 08:15

Re: Rahmen berührt ?
 
Cool vielen Dank !!
Das funktioniert :-)

Nur leider klappt es nicht, wenn die Form Vollbild ist ...

xaromz 16. Nov 2006 10:11

Re: Rahmen berührt ?
 
Hallo,
Zitat:

Zitat von -=cats=-
Nur leider klappt es nicht, wenn die Form Vollbild ist ...

das ist logisch. Im maximierten Zustand besitzt ein Form keinen Rand. Es gibt also nur den Clientbereich.

Gruß
xaromz

Hawkeye219 16. Nov 2006 10:56

Re: Rahmen berührt ?
 
Wenn du lediglich das JvNavigationPanel einblenden möchtest, gibt es vielleicht eine andere Möglichkeit. Setze die Breite des Panels auf beispielsweise 3 Pixel, anstatt es vollständig unsichtbar zu machen. Im MouseOver-Event des Panels kannst du dann wieder dessen ursprüngliche Breite einstellen. Verläßt der Mauszeiger das Panel, setzt du die Breite erneut auf 3 Pixel.

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf