ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 11.12.2001

Diese Seite wurde zuletzt aktualisiert am 11.12.2001
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Uniforme Sperrung

Zurück...


Anzeige

(-hg) mailto:hg_label3denabled@aboutvb.de

Welche Absicht auch immer dahinter gestanden haben mag - die Beschriftung einer gesperrten (Enabled = False) CheckBox oder eines gesperrten Option-Buttons sieht anders aus als ein gesperrtes Label. Der Text in letzterem erscheint schlicht in der "Ausgrau"-Systemfarbe (vbGrayText), während die Beschriftung der CheckBox und des OptionButtons ein wenig eingeprägt erscheinen: Die Beschriftung erscheint dahinter noch einmal, um ein Pixel nach rechts und unten versetzt und in der 3D-Systemfarbe "Schaltflächenmarkierung" (vb3DHighlight).

Ein gesperrtes Label in CheckBox-Optik

Ein gesperrtes Label in CheckBox-Optik

Um ein Label, das etwa als Erweiterung einer CheckBox-Beschriftung verwendet werden soll, mit der gleichen Optik in gesperrtem Zustand aufwarten zu lassen, brauchen Sie lediglich ein zweites Label, das im nicht gesperrten Zustand unsichtbar ist. Zur Darstellung des gesperrten Zustandes setzen Sie dieses "Schatten-Label" hinter das eigentliche Label, wie gesagt um ein Pixel nach rechts und unten verschoben. Weisen Sie ihm noch (sicherheitshalber) den gleichen Text zu, während Sie das eigentliche Label noch auf durchsichtig (BorderStyle = 0) setzen und natürlich sperren (Enabled = False). Zum Entsperren setzen Sie beim eigentlichen Label Enabled einfach wieder auf True und verbergen das Schatten-Label.

Die Hilfsprozedur Label3DEnabled bündelt diese Aufgabe. Sie versucht zudem noch, den 1-Pixel-Versatz in die Maßeinheit (ScaleMode) des Containers bzw. Parents (wenn dieser der Container ist) umzurechnen, falls Sie die optionale, ausdrückliche Angabe eines ScaleModes im letzten Parameter der Prozedur weglassen.

Public Sub Label3DEnabled(Label As Label, _
 ShadowLabel As Label, _
 ByVal Enabled As Boolean, _
 Optional ByVal ScaleMode As ScaleModeConstants = -1)

  Dim nPixelX As Single
  Dim nPixelY As Single
  
  Select Case Enabled
    Case False
      With Label
        .BackStyle = 0
        .Enabled = False
        .ZOrder 0
      End With
      With ShadowLabel
        If ScaleMode < 0 Then
          On Error Resume Next
          ScaleMode = .Container.ScaleMode
          If Err.Number Then
            Err.Clear
            ScaleMode = .Parent.ScaleMode
            If Err.Number Then
              ScaleMode = vbTwips
            End If
          End If
        End If
        With .Parent
          nPixelX = .ScaleX(1, vbPixels, ScaleMode)
          nPixelY = .ScaleY(1, vbPixels, ScaleMode)
        End With
        .Move Label.Left + nPixelX, Label.Top + nPixelY
        . UseMnemonic = Label.UseMnemonic
        .Caption = Label.Caption
        .ForeColor = vb3DHighlight
        .Visible = True
      End With
    Case True
      ShadowLabel.Visible = False
      Label.Enabled = True
  End Select
End Sub

Beachten Sie, dass das Schatten-Label bei der Darstellung des "gesperrten" Zustands selbst nicht gesperrt ist. Klicks und Doppelklicks als auch Mausereignisse (MouseDown, MouseMove, MouseUp) landen beim Schatten-Label. Sie müssen die Ereignisse gegebenenfalls weiterleiten und die entsprechenden Koordinaten relativ zur Position des Schatten-Labels umrechnen. Denken Sie dabei daran, dass die Positionsangaben des Schatten-Labels in der Maßeinheit des Containers vorliegen, während die Maßeinheit der Koordinaten eines Mausereignisses bei einem Label immer Twips lautet.


Beispiel-Projekt und Modul modLabel3DEnabled (label3denabled.zip - ca. 3,3 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer