Absolute Bildschirmposition ermitteln

Vitus

Mitglied
Hallo zusammen,

ich bastel für mein Projekt gerade an einem erweitertem Tooltipp und stieß dabei auf ein Problem. Der Tooltipp wird in einem neuen Form angezeigt (durch Regions in eine Sprechblase umgewandelt). Um nun jeweils die richtige Stelle zu ermitteln, habe ich zwei rekursive Funktionen geschrieben die folgendermaßen aussehen:

Code:
Private Function getLeft(thisObject As Object) As Integer
  Dim ileft As Integer
  If thisObject.Name <> "frmMain" Then _
    ileft = getLeft(thisObject.Parent)
  getLeft = ileft + thisObject.Left
End Function

Private Function getTop(thisObject As Object) As Integer
  Dim iTop As Integer
  If thisObject.Name <> "frmMain" Then _
    iTop = getTop(thisObject.Parent)
  getTop = iTop + thisObject.Top
End Function

aufgerufen werden diese bei einem klick auf ein Controlelement. So in etwa:

Code:
Private Sub btnStartCalibration_Click()
  If HelpMode Then
    frmSmallHelp.Left = getLeft(btnStartCalibration) + btnStartCalibration.Width / 2
    frmSmallHelp.Top = getTop(btnStartCalibration) + btnStartCalibration.Height / 2
  frmSmallHelp.show me
    Exit Sub
  End If
End Sub

Ziel sollte es sein, die absolute Position des zu tooltipppenden (Verben skurilt die Sprache!) Controlelements am Bildschirm zu bestimmen.
Wenn ich also auf der Hauptform (frmMain) ein panel liegen habe, mit einem Button darin, sollte mein frmSmallHelp.left Wert sich errechnen aus: left Wert des Buttons (relativ zum Panel) plus left Wert des Panels (relativ zum form) plus left Wert des Forms (relativ zum Bildschirm).

Tut er aber nicht! Das Panel wird einfach übergangen.

=> parent scheint wohl die falsche Eigenschaft zu sein, wenn es um Abhängigkeiten von controls geht. Aber wie komme ich sonst auf das übergeordnete Element?


Ich hoffe das Problem ist klar und Ihr könnt mir helfen :rolleyes:

Lieben Gruß vom
Vitus
 
Zurück