vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Oberfläche · Fenster   |   VB-Versionen: VB4, VB5, VB628.05.03
Form exakt positionieren

Dieses Beispiel zeigt, wie sich eine Form an der aktuellen Mauszeigerposition oder unterhalb eines bestimmten Controls positionieren lässt.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  14.986 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Manchmal soll eine 2. Form aus der Hauptanwendung heraus nicht unbedingt "irgendwo" angezeigt werden, sondern z.B. direkt an der aktuellen Mauszeigerposition... oder auch unterhalb eines bestehenden Controls auf der Hauptform.

Wie das geht, erfahren Sie jetzt

Form an der aktuellen Mauszeigerposition anzeigen
Hierzu müssen wir lediglich die aktuelle Mauszeigerposition bezogen auf den Desktop ermitteln, und können dann die Form via Move-Methode neu positionieren.

' Benötigte API-Deklaration
Private Declare Function GetCursorPos Lib "user32" ( _
  lpPoint As POINTAPI) As Long
 
Private Type POINTAPI
  x As Long
  y As Long
End Type
' Form an Mauszeiger positioniern
Dim P As POINTAPI
 
' Aktuelle Mausposition ermitteln
GetCursorPos P
 
' 2. Form laden und positionieren
Load Form2
Form2.Move P.x * Screen.TwipsPerPixelX, _
  P.y * Screen.TwipsPerPixelY
Form2.Show vbModal

Form unterhalb eines Controls auf der Hauptform positionieren
Hier müssen wir zunächst die Größe und Position des Controls ermitteln. Auch diesmal benötigen wir wieder das Windows-API. Danach wird die Form direkt unterhalb des Controls positioniert. Im nachfolgenden Beispiel wird die Form unterhalb eines Buttons positioniert (Command1).

' Benötigte API-Deklaration
Private Declare Function GetCursorPos Lib "user32" ( _
  lpPoint As POINTAPI) As Long
 
Private Declare Function GetWindowRect Lib "user32" ( _
  ByVal hwnd As Long, _
  lpRect As RECT) As Long
 
Private Declare Function ClientToScreen Lib "user32" ( _
  ByVal hwnd As Long, _
  lpPoint As POINTAPI) As Long
 
Private Type POINTAPI
  x As Long
  y As Long
End Type
 
Private Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type
Dim P As POINTAPI
Dim R As RECT
 
' Größe des Controls ermitteln
GetWindowRect Command1.hwnd, R
 
' Koordinaten bezogen auf den Screen
ClientToScreen Command1.hwnd, P
 
' 2. Form laden und positionieren
Load Form2
Form2.Move P.x * Screen.TwipsPerPixelX, _
  (P.y + (R.Bottom - R.Top)) * Screen.TwipsPerPixelY
Form2.Show vbModal

Dieser Tipp wurde bereits 14.986 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel