| |

Fortgeschrittene ProgrammierungMenüeinträge eines Forms verändern | |  | Autor: Tolwyn | Datum: 16.11.01 07:10 |
| Hi,
vor einiger Zeit kam in einem Posting bezüglich dem Umgang mit Formular-Menüs die Frage auf, ob es möglich ist das Aussehen von Menüeinträgen (Schriftart, Gräße, etc) zu verändern.
Leider hab das Posting nicht mehr gefunden, in jedem Fall ist hier eine Lösung. Vielleicht erinnert sich ja wer an die Frage und kann die Antwort gebrauchen.
Einfach ein neues Form mit mehreren Menüs erstellen. Menü 2 muss 3 Unterpunkte haben (bei mir mnuTest1, mnuTest2 und mnuTest3). Dann brauchen wir noch eine Picture Box mit dem Namen "picMenu" und der Eigenschaft "Index = 0". Nun nur noch diesen Code ins Form kopieren und fertig.
Option Explicit
' API Deklarationen
Private Declare Function GetMenu Lib "user32" _
(ByVal hwnd As Long) As Long
Private Declare Function GetSubMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function GetMenuItemID Lib "user32" _
(ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function ModifyMenu Lib "user32" Alias "ModifyMenuA" _
(ByVal hMenu As Long, ByVal nPosition _
As Long, ByVal wFlags As Long, ByVal wIDNewItem As _
Long, ByVal lpString As Any) As Long
' API Konstanten
Const MF_BYCOMMAND = &H0&
Const MF_BITMAP = &H4&
Private Sub Form_Load()
'--------------------------------------------------
Dim i As Long
Dim hMenu As Long ' Handle des Form Menüs
Dim hSubMenu As Long ' Handle betreffenden "SubMenüs"
Dim lMenuItemID As Long ' Das jeweilige Menü Items
Dim lFont As Long ' Laufende Nummer der Schriftart
Dim lHeightMax As Long ' Maximale Höhe
Dim lWidthMax As Long ' Maximale Breite
Dim sMenuText As String ' Der jeweilige Menütext
'--------------------------------------------------
On Error GoTo Error_
lFont = -2
For i = 0 To Screen.FontCount
If Screen.Fonts(i) = "Verdana" Then
lFont = i
Exit For
End If
Next i
If lFont = -1 Then lFont = 1 ' Sicher ist sicher
'--------------------------------------------------
hMenu = GetMenu(Me.hwnd)
hSubMenu = GetSubMenu(hMenu, 1)
'--------------------------------------------------
For i = 1 To 3
sMenuText = CStr("SubMenü Test " & i)
Load picMenu(picMenu.Count)
With picMenu(picMenu.Count - 1)
.Font.Name = lFont
.Font.Size = 12
' Höhe
.Height = .TextHeight(sMenuText)
If .Height > lHeightMax Then lHeightMax = .Height
' Breite
.Width = .TextWidth(sMenuText)
If .Width > lWidthMax Then lWidthMax = .Width
' Text des Menüeintrages in die Picture Box
picMenu(picMenu.Count - 1).Print sMenuText
.Picture = .Image
' Picture in das Menü setzten
lMenuItemID = GetMenuItemID(hSubMenu, i - 1)
Call ModifyMenu(hSubMenu, lMenuItemID, MF_BYCOMMAND Or MF_BITMAP, _
lMenuItemID, CLng(.Picture))
' und schon ist der Dekel auf dem Topf
End With
Next i
'--------------------------------------------------
Exit Sub
Error_:
'...
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim i As Long
For i = 1 To 3
Unload picMenu(i)
Next i
End Sub
Private Sub mnuTest1_Click()
Debug.Print "mnuTest1"
End Sub
Private Sub mnuTest2_Click()
Debug.Print "mnuTest2"
End Sub
Private Sub mnuTest3_Click()
Debug.Print "mnuTest3"
End Sub Der Code sollte eigentlich verständlich sein
Gruß
Tolwyn |  |
 Menüeinträge eines Forms verändern | 86 | Tolwyn | 16.11.01 07:10 |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) sevOutBar 4.0 
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere Infos
|
|
|
Copyright ©2000-2025 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
|
|