AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Position von ContextMenu

Ein Thema von MathiasSimmack · begonnen am 10. Apr 2005 · letzter Beitrag vom 11. Apr 2005
Antwort Antwort
MathiasSimmack
(Gast)

n/a Beiträge
 
#1

Position von ContextMenu

  Alt 10. Apr 2005, 23:44
Ganz kurze Frage: Ich habe eine Ereignisfunktion für einen speziellen Tree-View, der mir den angeklickten Knoten und die Koordinaten liefert. Lasse ich das Popupmenü bei den gelieferten Koordinaten mit Delphi anzeigen, erscheint es exakt am Mauscursor. So wie es soll. Bei CSharp heißt es aber, dass das ContextMenu bzw. die Koordinaten relativ zum Control (1. Parameter) gelten:
Code:
Point p = new Point(e.x, e.y);
printPopup.Show(this, p);
Und damit sitzt mein Popupmenü leider ein Stück zu tief. Gibt´s so was wie "ClientToScreen" (API) auch im .NET Framework? Ich denke, ich muss anstelle von this entweder das Desktop-Control bzw. -Handle angeben (), oder ich muss die Koordinaten eben relativ zum Desktop umwandeln.
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#2

Re: Position von ContextMenu

  Alt 10. Apr 2005, 23:54
hallo mathias. das aus meiner d2005 hilfe
Zitat:

TControl.ScreenToClient Methode

Wandelt die Bildschirmkoordinaten eines bestimmten Punktes in Client-Koordinaten um.
Klasse
TControl

Syntax


[Delphi] public function ScreenToClient(const Point: TPoint): TPoint;


Beschreibung
Mit ScreenToClient können Sie die Bildschirmkoordinaten eines Punktes in lokale bzw. Client-Koordinaten umwandeln. In Client-Koordinaten bezeichnet (0, 0) die linke obere Ecke des Client-Bereichs des Steuerelements. In Bildschirmkoordinaten entspricht (0, 0) der linken oberen Ecke des Bildschirms.

Mit den Methoden ScreenToClient und ScreenToClient können Sie Konvertierungen zwischen den Koordinatensystemen verschiedener Steuerelemente durchführen. Ein Beispiel:

[Delphi] P := TargetControl.ScreenToClient(SourceControl.ClientT oScreen(P));
Im folgenden Beispiel werden die Koordinaten des Punktes P vom Koordinatensystem der Komponente SourceControl in das System des Steuerelements TargetControl umgewandelt:

wohlgemerkt als net referenz

raik

edit // sage nicht du brauchst es anderst herum
edit2 // da scheint delphi bloss die winapi irgenndwie integriert zu haben
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#3

Re: Position von ContextMenu

  Alt 11. Apr 2005, 00:10
Nee, das ist kein echtes .NET. Guck mal das T vor TControl. Ich habe gerade die Suche vom .NET Framework SDK gequält. Da ist in der Hinsicht nichts zu finden.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: Position von ContextMenu

  Alt 11. Apr 2005, 11:19
Ich hab´s jetzt mal mit
Code:
printPopup.Show(this.TopLevelControl, p);
probiert. Damit ist es zwar immer noch ein Stückchen weg, aber immerhin dichter dran als noch zuvor. Der Zwischenraum entspricht, wenn ich das richtig sehe, genau einem Eintrag im Tree-View. Tja, wenn mir einer helfen könnte, diese Lücke noch zu entfernen ...
Miniaturansicht angehängter Grafiken
bild1_104.png  
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#5

Re: Position von ContextMenu

  Alt 11. Apr 2005, 12:23
Ahhhhh, "PointToScreen" und "PointToClient" heißt das im Framework
Code:
Point p = new Point(e.x, e.y);
p      = this.PointToClient(p);
printPopup.Show(this, p);
Und voilà: das Menü erscheint beim Cursor.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:46 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