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 31.07.2002

Diese Seite wurde zuletzt aktualisiert am 31.07.2002
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...

Unten bunt

Zurück...


Anzeige

(-hg) mailto:hg_statusbarbackcolor@aboutvb.de

Sie hätten gerne eine farbige StatusBar? Kein Problem: Senden Sie ihr einfach die Nachricht SB_SETBACKCOLOR per API-Funktion SendMessage zusammen mit der gewünschten Farbe. Da die StatusBar hier immer "echte" Farbwerte erwartet, müssen Sie gegebenenfalls eine Systemfarben-Konstante zuvor erst noch "übersetzen". Dies erledigt die API-Funktion OleTranslateColor, der Sie die Konstante im ersten Parameter übergeben. Der dritte (letzte) Parameter liefert den übersetzten Wert in der gleichen Variablen zurück.

Im API versteckt: die Farbfähigkeit einer StatusBar

Im API versteckt: die Farbfähigkeit einer StatusBar

Allerdings sollten Sie keine zu dunklen Farben wählen. Denn die Schriftfarbe in den Panels lässt sich leider nicht beeinflussen.

Die folgende Funktion StatusBarBackColor fasst die beiden API-Aufrufe zusammen. Sie übergeben ihr die betreffende StatusBar und (optional) die gewünschte Farbe bzw. Systemfarben-Konstante. Lassen Sie die Farbangabe weg, wird automatisch die Hintergrundfarbe des Containers verwendet. Der Container ist im Normalfall das Form, auf dem die StatusBar platziert ist - er kann aber beispielsweise auch eine PictureBox sein. Sollte der Container ausnahmsweise nicht über eine BackColor-Eigenschaft verfügen, wird ersatzweise automatisch die Systemfarbe vb3DFace verwendet.

Private Declare Function SendMessage Lib "user32" _
 Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
 ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function OleTranslateColor Lib "olepro32" _
 (ByVal clr As OLE_COLOR, ByVal hpal As Long, _
 ByRef pcolorref As Long) As Long

Public Sub StatusBarBackColor(ByRef StatusBar As StatusBar, _
 Optional ByVal Color As OLE_COLOR = -1)

  Const SB_SETBKCOLOR = &H2001
  
  If Color = -1 Then
    On Error Resume Next
    Color = StatusBar.Container.BackColor
    If Err.Number Then
      Color = vb3DFace
    End If
  End If
  OleTranslateColor Color, 0, Color
  SendMessage StatusBar.hwnd, SB_SETBKCOLOR, 0, Color
End Sub

Das Platzieren einer bunt gewordenen StatusBar auf einer PictureBox ist empfehlenswert, wenn sich die StatusBar wie üblich am unteren Rand eines Forms befinden soll. Denn dummerweise wird die dann erscheinende Eckfläche zur Größenänderung des Forms von der Einfärbung ausgenommen. Setzen Sie also die StatusBar auf eine PictureBox - ohne sich um eine genaue Anordnung zu kümmern. Statt dessen sorgen Sie im Resize-Ereignis der PictureBox dafür, dass die StatusBar die PictureBox vollständig ausfüllt. Wenn Sie nun noch die Align-Eigenschaft der PictureBox auf "2 - Unten ausrichten" setzen, landet auch die StatusBar wieder hübsch ausgerichtet unten im Form. Vergessen Sie bitte nicht, die Eigenschaft TabStop bei der PictureBox auf False zu setzen - sie dient ja nur hilfsweise als Container und sollte wie die StatusBar selbst auch nicht den Fokus erhalten können.

Private Sub Picture1_Resize()
  On Error Resume Next
  With Picture1
    StatusBar1.Move 0, 0, .ScaleWidth, .ScaleHeight
  End With
End Sub

Wenn Sie nun noch die Anweisung zum Einfärben im Paint-Ereignis der PictureBox erteilen und dabei die optionale Farbangabe weglassen, können Sie die für die StatusBar gewünschte Farbe bequem als Hintergrundfarbe der PictureBox einstellen. Das hat auch den Vorteil, dass die Farbe automatisch angepasst wird, falls es sich um eine Systemfarbe handelt, und der Anwender die Einstellungen der Systemfarben geändert hat, während die Anwendung läuft.

Private Sub Picture1_Paint()
  StatusBarBackColor StatusBar1
End Sub

Beispiel-Projekt und Modul modStatusBarBackColor (statusbarbackcolor.zip - ca. 3,4 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