vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Anfängerproblem(e) mit Klassen 
Autor: B772Fred
Datum: 25.10.04 16:33

Hallo,

zuerst einmal den Code den ich mir bis jetzt zusammen gebastelt habe:

Public Class MFD_Comm
    Public Sub CommDrw(ByVal a As Single, ByVal b As Single, ByVal c As Single, _
      ByVal d As Single, ByVal thk As Integer, ByVal fill As Boolean, ByVal col _
      As Color, ByVal txt1 As String, ByVal txt2 As String, ByVal g As Graphics)
 
        Dim x As Single
        Dim y As Single
 
        x = c
        y = d
 
        x = x / 2
        y = y / 2
 
        Dim r As New Rectangle(a, b, c, d)
        Dim fnt As New Font("Arial Narrow", 11)
 
        If txt2 = Nothing Then
            Dim siz As SizeF = g.MeasureString(txt1, fnt)
 
            If fill = False Then
                Dim mypen As New Pen(Color.DeepSkyBlue, thk)
                g.DrawRectangle(mypen, r)
                mypen.Dispose()
                g.DrawString(txt1, fnt, Brushes.DeepSkyBlue, x + a - siz.Width _
                  / 2, y + b - siz.Height / 2)
                fnt.Dispose()
            Else
                Dim mypen As New Pen(col, thk)
                Dim mybrush As Brush
                mybrush = New SolidBrush(col)
                g.DrawRectangle(mypen, r)
                g.FillRectangle(mybrush, r)
                mypen.Dispose()
                g.DrawString(txt1, fnt, Brushes.White, x + a - siz.Width / 2, y _
                  + b - siz.Height / 2)
                fnt.Dispose()
            End If
        Else
            Dim siz1 As SizeF = g.MeasureString(txt1, fnt)
            Dim siz2 As SizeF = g.MeasureString(txt2, fnt)
 
            If fill = False Then
                Dim mypen As New Pen(Color.DeepSkyBlue, thk)
                g.DrawRectangle(mypen, r)
                mypen.Dispose()
                g.DrawString(txt1, fnt, Brushes.DeepSkyBlue, x + a - siz1.Width _
                  / 2, y + b - 7.8 - siz1.Height / 2)
                g.DrawString(txt2, fnt, Brushes.DeepSkyBlue, x + a - siz2.Width _
                / 2, y + b + 6.2 - siz2.Height / 2)
                fnt.Dispose()
            Else
                Dim mypen As New Pen(col, thk)
                Dim mybrush As Brush
                mybrush = New SolidBrush(col)
                g.DrawRectangle(mypen, r)
                g.FillRectangle(mybrush, r)
                mypen.Dispose()
                g.DrawString(txt1, fnt, Brushes.White, x + a - siz1.Width / 2, _
                  y + b - 7.8 - siz1.Height / 2)
                g.DrawString(txt2, fnt, Brushes.White, x + a - siz2.Width / 2, _
                y + b + 6.2 - siz2.Height / 2)
                fnt.Dispose()
            End If
        End If
    End Sub
End Class
Public Class B772_MFD
 
    Protected Overrides Sub OnPaint(ByVal e As _
      System.Windows.Forms.PaintEventArgs)
        Dim rect As New MFD_Comm()
        Dim act As New MFD_Comm()
        rect.CommDrw(10, 10, 130, 28, 1, True, Color.Gray, "ATC", Nothing, _
          e.Graphics)
        act.CommAct(9, 9, 133, 31, e.Graphics)
        rect.CommDrw(145, 10, 130, 28, 1, False, Color.Gray, "FLIGHT", _
          "INFORMATION", e.Graphics)
        rect.CommDrw(280, 10, 130, 28, 1, True, Color.LimeGreen, "COMPANY", _
        Nothing, e.Graphics)
        rect.CommDrw(10, 43, 130, 28, 1, False, Color.Gray, "REVIEW", Nothing, _
        e.Graphics)
        rect.CommDrw(145, 43, 130, 28, 1, True, Color.Gray, "MANAGER", Nothing, _
        e.Graphics)
        rect.CommDrw(280, 43, 130, 28, 1, False, Color.Aquamarine, "NEW" & _
        "MESSAGES", Nothing, e.Graphics)
    End Sub
End Class
Bei dem oberen Code-Fragment handelt es sich um eine Klasse mit zwei Funktionen (wobei ich nicht wirklich weis ob man das eine Funktion nennt. Kenne mich mit der ganzen Terminologie noch nicht so aus) die Rechtecke mit Text oder ohne Text auf der Form zeichnen. Mein Problem: Ich möchte, wenn sich die Mouse über einem dieser Rechtecke befindet, einen weißen Rahmen um eben dieses Rechteck zeichen welches bei verlassen der Maus des Rechtecks wieder verschwindet. Ich finde aber weder eine Methode die Rechtecke schlau abzuspeichern so das ich einfach eine Funktion habe die beim Ereigniss MouseOver (oder MouseHover. Keine Ahnung welches jetzt das richtig ist) nachschaut ob sich die Mouse auch über dem jew. Rechteck befindet und dann den weißen Rahmen zeichnet (und beim verlassen wieder weg macht), noch kann ich die Funktion CommDrw aus der Ereignissprozedur MouseHover(Over) aufrufen weil das "e" nicht wie jetzt bei der Protected Overrides Sub OnPaint als "e As System.Windows.Forms.PaintEventArgs" definiert ist.

Vielen Dank schon mal im Vorraus!
Fred
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Anfängerproblem(e) mit Klassen722B772Fred25.10.04 16:33
Re: Anfängerproblem(e) mit Klassen444spike2425.10.04 17:22
Re: Anfängerproblem(e) mit Klassen692B772Fred25.10.04 17:42
Re: Anfängerproblem(e) mit Klassen492ModeratorFZelle25.10.04 18:15
Re: Anfängerproblem(e) mit Klassen510leth25.10.04 18:31

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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