vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 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, VB605.02.04
Rahmenlose Form mit voller Funktionalität (GES)

Dieser Code zeigt, wie sich eine Rahmenlose Form (BorderStyle = 0) im 3D-Look darstellen lässt mit Icon im SystemTray usw.

Autor:   Guido EisenbeisBewertung:     [ Jetzt bewerten ]Views:  19.298 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Dies ist ein Code, mit dem man ein beliebiges Formular sozusagen mit "Borderstyle = 0" anzeigen kann und mit einem 3D-Rahmen ausstattet.

Das besondere daran ist, dass die SystemMenü-Eigenschaften des Formulars erhalten bleiben. Das bedeutet, dass das Formular auch in der Taskbar "ganz normal" bedient werden kann. Entweder über das Kontextmenü oder indem man es einfach durch Anklicken (in der Taskbar) minimiert und wiederherstellt. (Versuchen Sie das mal bei einem "normalen" Fenster mit Borderstyle = 0 ! *smile)

Fügen Sie nachfolgenden Code in ein Modul ein.

' ===================================================================
'   Rahmenlose Form mit voller Funktionalität (GES)
' 
' 
' Autor:
' Gudio Eisenbeis Software (GES), guidoeisenbeis@web.de, 2003-12-01
' 
' Basierend auf dem Tipp "Fenster ohne Titelzeile"
' von Dieter Otter (25.08.2003)
' ===================================================================
 
Option Explicit
 
' benötigte API-Deklarationen
Private Declare Function GetWindowLong Lib "user32" _
  Alias "GetWindowLongA" ( _
  ByVal hwnd As Long, _
  ByVal nIndex As Long) As Long
 
Private Declare Function SetWindowLong Lib "user32" _
  Alias "SetWindowLongA" ( _
  ByVal hwnd As Long, _
  ByVal nIndex As Long, _
  ByVal dwNewLong As Long) As Long
 
Private Const GWL_STYLE = (-16)
Private Const WS_CAPTION = &HC00000
Private Const WS_BORDER = &H800000
Public Sub MakeNoBorder_And_3D(ByVal fForm As Form)
  Dim nStyle As Long 'Fensterstil
 
  With fForm
    ' Formgrösse anpassen
    .Width = .ScaleWidth
    .Height = .ScaleHeight
 
    ' aktuellen Fensterstil emitteln
    nStyle = GetWindowLong(.hwnd, GWL_STYLE)
 
    ' Titelleiste entfernen
    nStyle = nStyle And Not WS_CAPTION
 
    ' Neuen Fensterstil setzen
    SetWindowLong .hwnd, GWL_STYLE, nStyle
  End With
End Sub
Public Sub MoveControl(ctrControl As Object, Button As Integer, _
  Shift As Integer, X As Single, Y As Single)
 
  Static OldX As Single
  Static OldY As Single
 
  If Not Button = 1 Then
    OldX = X
    OldY = Y
  Else 
    ' Wenn rechte Maus-Taste gedrückt, dann Elemente verschieben.
    ctrControl.Left = ctrControl.Left + (X - OldX)
    ctrControl.Top = ctrControl.Top + (Y - OldY)
  End If
End Sub

Im Form_Load-Ereignis wird die Form "umgewandel":

Private Sub Form_Load()
  ' Form1 rahmenlos machen und 3D-Effekt aktivieren
  Call MakeNoBorder_And_3D(Me)
End Sub

Und damit die Form zur Laufzeit mit der Maus verschoben werden kann, platzieren Sie beispielsweise ein beliebiges Control auf die Form und fügen im MouseMove-Ereignis folgenden Aufruf ein:

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, _
  X As Single, Y As Single)
 
  ' Verschieben der rahmenlosen Form
  Call MoveControl(Me, Button, Shift, X, Y)
End Sub

Eine andere Möglichkeit wäre, die Form beim gedrückter rechter Maustaste auf die Form selbst zu verschieben. Aber auch das ist kein Problem. Einfach die MoveControl-Prozedur im MouseMove-Ereignis einfügen

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _
  X As Single, Y As Single)
 
  ' Verschieben der rahmenlosen Form
  Call MoveControl(Me, Button, Shift, X, Y)
End Sub

Dieser Tipp wurde bereits 19.298 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