Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ScreenToClient mit Canvas-Handle? (https://www.delphipraxis.net/145044-screentoclient-mit-canvas-handle.html)

Fussball-Robby 22. Dez 2009 17:55


ScreenToClient mit Canvas-Handle?
 
Hey,
ihr kennt sicherlich die Funktion ScreenToClient, mit welcher man die Cursorkoordinaten umrechnen kann, sodass sie beispielsweise relativ zu einem Formular und nicht zum Screen sind.
Ich habe jetzt ein Canvas und möchte die Cursorkoordinaten relativ zu diesem Canvas haben. Ist das möglich?

VT 1. Jan 2010 15:16

Re: ScreenToClient mit Canvas-Handle?
 
naja grundsätzlich ist ja ein Canvas kein Fenster. Also hat der Canvas auch keine Ursprung und man kann das dann nicht berechnen. Demnach muss man erstmal ermitteln welches Control die Instanz von TCanvas benutzt. Also würd ich ansetzen:

1. prüfen ob dein Canvas von TControlCanvas abgeleitet ist
2. wenn ja dann zugreifen auf TControlCanvas.Control um deine Funktion zu nutzen

hoffe das geht :)

SirThornberry 1. Jan 2010 15:27

Re: ScreenToClient mit Canvas-Handle?
 
Wie bereits erwähnt geht das was du vor hast nicht. Ein Beispiel:
Du hast ein Bild in einem TBitmap-Object und dieses hat wiederum ein TCanvas.
Dieses TBitmap wird nicht zwangsläufig auf dem Bildschirm dargestellt also gibt es auch keine feste Position. Und würde es doch auf dem Bildschirm dargestellt werden kann es sein das mehrere Controls dieses Bild verwenden. Dann wäre ein Konflikt vorhanden weil niemand (auch das Programm nicht), nicht erahnen kann von welchem Control, welches das TBitmap und somit das TCanvas nutzt, du die Position umrechnen willst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:54 Uhr.

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