Solved

How to change the Status Bar Text format

Posted on 2011-09-14
3
610 Views
Last Modified: 2013-11-29
I know how to change the colour of the status bar text:
      Public Declare Function SetTextColor Lib "gdi32" _
      (ByVal hdc As Long, ByVal crColor As Long) As Long

But how can I change the font format to bold?
0
Comment
Question by:Milewskp
  • 2
3 Comments
 
LVL 15

Accepted Solution

by:
Simon Ball earned 500 total points
ID: 36542273
I foudn an old excel forum thread which details setting font weight in the status bar:

http://www.mrexcel.com/forum/showthread.php?p=733010
Looks like you have to create a font object to apply to the status bar font property....

See the function createFont and

look for this line:

'// Save old Font First!
 hFontOld = SelectObject(hDcStatusBar, hFont)

and this:

hFont = CreateFont(-12, 0, 0, 0, fnWeight.FW_ULTRALIGHT, 1, 0, 0, 0, 0, 0, 0, 0, _
 "MS SansSerif ")



Seems a long winded process....


'// Font weight of the font in the range 0 through 1000.
 '// For example, 400 is normal and 700 is bold. If this value is zero, a default weight is used.
 Enum fnWeight
 FW_DONTCARE = 0
 FW_THIN = 100
 FW_EXTRALIGHT = 200
 FW_ULTRALIGHT = 200
 FW_LIGHT = 300
 FW_NORMAL = 400
 FW_REGULAR = 400
 FW_MEDIUM = 500
 FW_SEMIBOLD = 600
 FW_DEMIBOLD = 600
 FW_BOLD = 700
 FW_EXTRABOLD = 800
 FW_ULTRABOLD = 800
 FW_HEAVY = 900
 FW_BLACK = 900
 End Enum

Open in new window

0
 
LVL 1

Author Comment

by:Milewskp
ID: 36543889
Thanks Sudo!
Here's the procedure I created based on your help:
Public Sub SetSBTColors(Optional MyFont As String = "Tahoma", Optional Italics As Boolean = False, _
Optional Size As Integer = 11, Optional Weight As Integer = 400, Optional Forecolor As Variant, _
Optional Backcolor As Variant)
   'PURPOSE: This proc sets the font style and back color of the Status Bar window.
   '
   'ARGUMENTS:
   ' Weight is font weight; values: 0, 100, 200, ...900. 0 is 'don't care', 400 is normal, 700 is bold.
   '
   'CREDITS:
   'Based on code by:
   ' - Stephen Lebans (Lebans Holdings 1999 Ltd.), and
   ' - jonofisher (http://www.mrexcel.com/forum/showthread.php?p=733010).
   'Modified by MILEWSKP.
   
   Dim rc As RECT 'Window rectangle
   Dim hFont As Long, hFontOld As Long
   Dim hDcStatusBar As Long 'Status Bar's Device Context
   Dim hWndStatusBar As Long 'Handle to Status Bar window
   
   Const API_TRUE As Long = 1&
   
   'INITIALIZE
   
   'Get the Status Bar's window handle
   hWndStatusBar = FindWindowEx(Application.hWndAccessApp, 0&, "OStatbar", vbNullString)
   
   'Set the Status Bar's Device Context properties
   hDcStatusBar = GetDC(hWndStatusBar)
   
   'Get dimensions of the Status Bar window
   Call GetWindowRect(hWndStatusBar, rc)
   With rc
      .Bottom = .Bottom - .top
      .top = 0
      .right = .right - .Left
      .Left = 0
   End With
   
   'Use default colors?
   If IsMissing(Backcolor) Then Backcolor = GetSysColor(conSysBtnFace) 'Current system color (NOTE 1)
   If IsMissing(Forecolor) Then Forecolor = conBlack 'Black

   
   'SET FONT STYLE AND BACK COLOR
   
   'Set font style
   hFont = CreateFont(-1 * Size, 0, 0, 0, Weight, -1 * Italics, 0, 0, 0, 0, 0, 0, 0, MyFont)
   hFontOld = SelectObject(hDcStatusBar, hFont)
   
   'Set font color
   Call SetTextColor(hDcStatusBar, Forecolor)
   
   'Set SBT backcolor
   Call SetBkColor(hDcStatusBar, Backcolor)
   
   'Redraw the SBT
   Call InvalidateRect(hWndStatusBar, rc, API_TRUE)
   

'_________________________________________________________________________________
QuitSub:
   Call ReleaseDC(hWndStatusBar, hDcStatusBar) 'Release the Device Context
'_________________________________________________________________________________
'NOTES:
' 1. Can't include default value for BackColor in procedure header (only constants are allowed there).

End Sub

Open in new window

0
 
LVL 15

Expert Comment

by:Simon Ball
ID: 36544373
superb!

and in my good answer email:
Earn 4,308 more points, and you will become a Wizard in this zone!

very excited!
0

Featured Post

Secure Your Active Directory - April 20, 2017

Active Directory plays a critical role in your company’s IT infrastructure and keeping it secure in today’s hacker-infested world is a must.
Microsoft published 300+ pages of guidance, but who has the time, money, and resources to implement? Register now to find an easier way.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Access custom database properties are useful for storing miscellaneous bits of information in a format that persists through database closing and reopening.  This article shows how to create and use them.
AutoNumbers should increment automatically, without duplicates.  But sometimes something goes wrong, and the next AutoNumber value is a duplicate.  This article shows how to recover from this problem.
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
In Microsoft Access, learn different ways of passing a string value within a string argument. Also learn what a “Type Mis-match” error is about.

680 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question