![]() |
Delphi-Version: XE5
Cursor auf Komponente legen
Hi DP !
Ich habe einen TWebBrowser auf meiner Form liegen und möchte den Cursor an der Ecke unten links vom Browser platzieren. D.h. unabhängig von der Desktop-Auflösung oder der Screen-Position der Anwendung wird der Cursor immer an der Ecke unten links vom Browser platziert.
Delphi-Quellcode:
Ich dachte damit kann ich zumindest den Cursor auf den Webbrowser der Anwendung setzen, aber der Cursor verlässt das Fenster der Anwendung.
procedure TFmain.Button1Click(Sender: TObject);
var pt: TPoint; begin WB_ScrollTo(WebBrowser1, wbPosBottom); //Webbrowser: an das ende scrollen pt := WebBrowser1.ScreenToClient(Mouse.CursorPos); e_x.Text:=IntToStr(pt.X); e_y.Text:=IntToStr(pt.Y); SetCursorPos(pt.X,pt.Y); //mouseposition setzen Gibt es eine Methode, den Cursor auf den Ursprung (0/0) einer Komponente zu platzieren ? |
AW: Cursor auf Komponente legen
Hallo,
suchst Du vielleicht etwas in der Richtung?
Delphi-Quellcode:
Gruß
type
TCursorPos = (cpTopLeft, cpTopRight, cpBottomLeft, cpBottomRight, cpCentered); procedure SetControlCursorPos (const Form : TForm; const Control : TControl; const CursorPos : TCursorPos); var p : TPoint; begin case CursorPos of cpTopLeft : p := Form.ClientToScreen (Point (Control.Left, Control.Top)); cpTopRight : p := Form.ClientToScreen (Point (Control.Left + Control.Width, Control.Top)); cpBottomLeft : p := Form.ClientToScreen (Point (Control.Left, Control.Top + Control.Height)); cpBottomRight : p := Form.ClientToScreen (Point (Control.Left + Control.Width, Control.Top + Control.Height)); cpCentered : p := Form.ClientToScreen (Point (Control.Left + Control.Width div 2, Control.Top + Control.Height div 2)); end; SetCursorPos (p.X, p.Y) end; procedure TFmain.Button1Click(Sender: TObject); begin SetControlCursorPos (Self, WebBrowser1, cpBottomLeft) end; |
AW: Cursor auf Komponente legen
Etwas vereinfacht ohne Form-Parameter:
Delphi-Quellcode:
procedure SetControlCursorPos(const Control : TControl; const CursorPos : TCursorPos);
var P: TPoint; begin Assert(Assigned(Control), 'Kein Control zur Ausrichtung übergeben'); case CursorPos of cpTopLeft: P := Control.ClientToScreen(Point(0, 0)); cpTopRight: P := Control.ClientToScreen(Point(Control.Width, 0)); cpBottomLeft: P := Control.ClientToScreen(Point(0, Control.Height)); cpBottomRight: P := Control.ClientToScreen(Point(Control.Width, Control.Height)); cpCentered: P := Control.ClientToScreen(Point(Control.Width div 2, Control.Height div 2)); end; SetCursorPos(P.X, P.Y); end; |
AW: Cursor auf Komponente legen
Guten Morgen DP !
Ja genau das ist was ich versucht habe zu bauen. Von
Delphi-Quellcode:
ausgehend, hätte ich wirklich nur die "Ecken" mit
ClientToScreen(Point(0, 0)
Delphi-Quellcode:
und
Control.Width
Delphi-Quellcode:
selbst errechnen können.
Control.Height
Super Sache, werde ich mir merken. Vielen Dank ! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz