| |

VB.NET - FortgeschritteneRe: kontextmenü | |  | Autor: Snof | Datum: 22.12.03 00:29 |
| Imports System
Imports System.Drawing
Imports System.Windows.Forms
Public Class BMPMenu
Inherits MenuItem
Protected frmParentForm As Form
Protected MaxMenuTextBreite As Short
Protected imgMenuImage As Image
Sub New(ByRef ParentForm As Form)
MyBase.New()
MyBase.OwnerDraw = True
frmParentForm = ParentForm
End Sub
Sub New(ByRef ParentForm As Form, ByVal Image As Image)
MyBase.New()
MyBase.OwnerDraw = True
imgMenuImage = Image
frmParentForm = ParentForm
End Sub
Public Shadows ReadOnly Property OwnerDraw() As Boolean
Get
Return True
End Get
End Property
Public ReadOnly Property ParentForm() As Form
Get
Return frmParentForm
End Get
End Property
Public Property Image() As Image
Get
Return imgMenuImage
End Get
Set(ByVal Value As Image)
imgMenuImage = Value
End Set
End Property
Private Sub BMPMenu_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles MyBase.DrawItem
'Rechteck für die Ausgabefläche definieren, das etwas kleiner ist als
'die Fläche des Menüs
Dim TextGrenzen As New RectangleF(e.Bounds.Left + 24, e.Bounds.Top + 2, e.Bounds.Right, e.Bounds.Bottom - 2)
Dim MenuTextFormat As New StringFormat()
Dim TextFarbe As Color = SystemColors.MenuText
'Erster Tabstop bereits beim 0.ten Zeichen
Dim TabStops() As Single = {0}
'Nr. des anzuzeigenden Bilds aus der Imagelist
Dim inBildNr As Integer
'Auszugebenden Text aufbereiten
With MenuTextFormat
.SetTabStops(MaxMenuTextBreite, TabStops)
.HotkeyPrefix = Drawing.Text.HotkeyPrefix.Show
End With
Dim MenuSelected As Boolean
'Feststellen, ob Eintrag selektiert ist
MenuSelected = (e.State And DrawItemState.Selected) = DrawItemState.Selected
'Wenn ja, dann anderen Hintergrund und Textfarbe anzeigen
If MenuSelected = True Then
e.DrawBackground()
TextFarbe = SystemColors.HighlightText
Else
e.Graphics.FillRectangle(SystemBrushes.Menu, e.Bounds)
End If
'Bitmap nur zeichnen, wenn Menüeintrag BildNr besitzt
If Not (imgMenuImage Is Nothing) Then
'Bitmap in ihrer ursprünglichen Größe anzeigen
e.Graphics.DrawImageUnscaled(imgMenuImage, _
e.Bounds.Left + 1, e.Bounds.Top + 1)
End If
'Zum Schlus auch den Text im Menü "zeichnen"
e.Graphics.DrawString(Me.Text, Me.frmParentForm.Font, _
New SolidBrush(TextFarbe), TextGrenzen, MenuTextFormat)
End Sub
Private Sub BMPMenu_MeasureItem(ByVal sender As Object, ByVal e As System.Windows.Forms.MeasureItemEventArgs) Handles MyBase.MeasureItem
'Größe des Menütextes
Dim TextGröße As Size
'StringFormat kümmert sich um die Formatierung auf "Grafikebene"
Dim TextFormat As New StringFormat()
'Menüshortcuts sollen angezeigt werden
TextFormat.HotkeyPrefix = Drawing.Text.HotkeyPrefix.Show
'Textgröße des Menütextes feststellen
TextGröße = e.Graphics.MeasureString(Me.Text, New Font("Microsoft Sans Serif", 10)).ToSize
'Maximale Breite eines Menüeintrags feststellen
MaxMenuTextBreite = Math.Max(MaxMenuTextBreite, TextGröße.Width + 24)
'Maximale Höhe eines Menüeintrags festlegen
e.ItemHeight = Math.Max(TextGröße.Height + 2, SystemInformation.SmallIconSize.Height + 2)
'Breite festlegen
e.ItemWidth = MaxMenuTextBreite
End Sub
End Class
demn?chst Online: SnofWare.de |  |
 | 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 |
  |
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) sevGraph (VB/VBA) 
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! 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
|
|