15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту




Как настроить цвета и шрифт в панели Statusbar

Делается это при помощи контрола PictureBox и API функций. Каждая панель statusbar может отображать объект Picture, поэтому Вы можете использовать невидимый элемент управления PictureBox с фоном, шрифтом и видимыми элементами, и связать картинку PictureBox с объектом Picture в панели статуса. Объект Panel имеет свойство Width, не не имеет свойства Height. При помощи API функции SendMessage можно получить высоту. Поместите PictureBox на форму и назовите её picStatus, установив AutoRedraw в True, а Visible в False.

 

Private Type RECT
	Left As Long
	Top As Long
	Right As Long
	Bottom As Long
End Type

Private Declare Function SendMessage Lib _
	"user32" Alias "SendMessageA" (ByVal hWnd As _
	Long, ByVal wMsg As Long, ByVal wParam As _
	Long, lParam As Any) As Long

Private Const WM_USER = &H400
Private Const SB_GETRECT = (WM_USER + 10)

Private Sub PanelText(sb As StatusBar, Index As _
	Long, aText As String, bkColor As Long, _
	fgColor As Long)
	Dim R As RECT
	SendMessage sb.hWnd, SB_GETRECT, Index - 1, R
	With picPanel
		Set .Font = sb.Font
		.Move 0, 0, (R.Right - R.Left + 1) * _
			Screen.TwipsPerPixelX, (R.Bottom - _
			R.Top + 1) * Screen.TwipsPerPixelY
		.BackColor = bkColor
		.Cls
		.ForeColor = fgColor
		picPanel.Print aText
		sb.Panels(Index).Text = aText
		sb.Panels(Index).Picture = .Image
	End With
End Sub

Private Sub Form_Load()
	PanelText StatusBar1, 1, "Panel Message", _
		QBColor(1), QBColor(15)
End Sub