Язык программирования FreeBasic |
Поскольку ToolBar сам по себе элемент не самый простой, я решил написать примеров для него побольше. Все эти примеры протестированы в системе Windows 7. Возможно какой то пример не будет работать корректно из-за отсутствия каких либо иконок в системных файлах на более старых системах.
Пример1 (тулбар со строками внизу):
#Include "window9.bi"
Dim As Integer hwToolBar
var hwnd=OpenWindow("",10,10,100,100)
CenterWindow(hwnd)
hwToolBar=CreateToolBar()
ToolBarStandardButton(hwToolBar,1,STD_FILEOPEN,"Open")
ToolBarStandardButton(hwToolBar,2,STD_CUT, "Cut")
ToolBarStandardButton(hwToolBar,3,STD_COPY, "Copy")
Do
Var ev=WaitEvent
If ev=EventClose Then
End
ElseIf ev=EventGadget Then
Select Case EventNumberToolBar
Case 1 To 3
MessBox("","Тулбар номер " & EventNumberToolBar)
End Select
EndIf
Loop

Пример2 (тулбар со строками сбоку):
#Include "window9.bi"
Dim As Integer hwToolBar
var hwnd=OpenWindow("",10,10,185,100)
CenterWindow(hwnd)
hwToolBar=CreateToolBar(,TBSTYLE_LIST)
ToolBarStandardButton(hwToolBar,1,STD_FILEOPEN,"Open")
ToolBarStandardButton(hwToolBar,2,STD_CUT, "Cut")
ToolBarStandardButton(hwToolBar,3,STD_COPY, "Copy")
Do
Var ev=WaitEvent
If ev=EventClose Then
End
ElseIf ev=EventGadget Then
Select Case EventNumberToolBar
Case 1 To 3
MessBox("","Кнопка с номером " & EventNumberToolBar)
End Select
EndIf
Loop

Пример2 (тулбар с ToolTip (подсказками) и плоской панелью):
#Include "window9.bi"
Dim As Integer hwToolBar
var hwnd=OpenWindow("",10,10,185,100)
CenterWindow(hwnd)
hwToolBar=CreateToolBar(,TBSTYLE_FLAT Or 256)
ToolBarStandardButton(hwToolBar,1,STD_FILEOPEN)
ToolBarStandardButton(hwToolBar,2,STD_CUT)
ToolBarStandardButton(hwToolBar,3,STD_COPY)
ToolBarToolTip(hwnd,1,"Open")
ToolBarToolTip(hwnd,2,"Cut")
ToolBarToolTip(hwnd,3,"Copy")
Do
Var ev=WaitEvent
If ev=EventClose Then
End
ElseIf ev=EventGadget Then
Select Case EventNumberToolBar
Case 1 To 3
MessBox("","Кнопка с номером " & EventNumberToolBar)
End Select
EndIf
Loop

Пример3: (Вертикальный тулбар):
#Include "window9.bi"
Dim As Integer hwToolBar
var hwnd=OpenWindow("",10,10,185,100)
CenterWindow(hwnd)
hwToolBar=CreateToolBar(,256)
ToolBarStandardButton(hwToolBar,1,STD_FILEOPEN,,,TBSTATE_WRAP Or TBSTATE_ENABLED)
ToolBarStandardButton(hwToolBar,2,STD_CUT,,,TBSTATE_WRAP Or TBSTATE_ENABLED)
ToolBarStandardButton(hwToolBar,3,STD_COPY,,,TBSTATE_WRAP Or TBSTATE_ENABLED)
ToolBarToolTip(hwnd,1,"Open")
ToolBarToolTip(hwnd,2,"Cut")
ToolBarToolTip(hwnd,3,"Copy")
Do
Var ev=WaitEvent
If ev=EventClose Then
End
ElseIf ev=EventGadget Then
Select Case EventNumberToolBar
Case 1 To 3
MessBox("","Номер кнопки " & EventNumberToolBar)
End Select
EndIf
Loop

Пример4: (Тулбар внизу окна с другим стилем кнопок и подсказками)
#Include "window9.bi"
Dim As Integer hwToolBar
Dim As String sArray(11)
var hwnd=OpenWindow("",10,10,400,100)
CenterWindow(hwnd)
hwToolBar=CreateToolBar(IDB_VIEW_LARGE_COLOR,256 Or TBSTYLE_FLAT Or CCS_BOTTOM)
For m As Integer=0 To 11
ToolBarStandardButton(hwToolBar,m+1,m)
sArray(m) = "button " & Str(m+1)
ToolBarToolTip(hwnd,m+1,sArray(m))
Next
Do
Var ev=WaitEvent
If ev=EventClose Then
End
ElseIf ev=EventGadget Then
Select Case EventNumberToolBar
Case 1 To 12
MessBox("","Кнопка номер " & EventNumberToolBar)
End Select
EndIf
Loop

Пример5: ( Тулбар с кнопками, на которых можно отображать свои битмапы. В данном примере извлекаем стандартные битмапы из файла)
#Include "window9.bi"
#Include once "win/shellapi.bi"
Dim As Integer hwToolBar
Dim As String sArray(10)
var hwnd=OpenWindow("",10,10,400,300)
CenterWindow(hwnd)
hwToolBar=CreateToolBar(, 256)
For m As Integer=0 To 10
ToolBarImageButton(hwToolBar,m+1,Cast(Integer,LoadBitmap(0,Cast(lpstr,32744+m))))
sArray(m) = "button " & Str(m+1)
ToolBarToolTip(hwnd,m+1,sArray(m))
Next
Do
Var ev=WaitEvent
If ev=EventClose Then
End
ElseIf ev=EventGadget Then
Select Case EventNumberToolBar
Case 1 To 12
MessBox("","Button Number " & EventNumberToolBar)
End Select
EndIf
Loop

Пример6: ( Тулбар с кнопками, на которых можно отображать свои битмапы. В этом примере извлекаем иконки из файла SetupAPI.dll и при окончании строки автоматический перенос кнопок, а так же использование разделителей(сепараторов))
#Include "window9.bi"
Dim As Integer hwToolBar
Dim sArray(42) As String
Var hwnd=OpenWindow("",10,10,406,400)
CenterWindow(hwnd)
hwToolBar=CreateToolBar(,TBSTYLE_WRAPABLE Or TBSTYLE_FLAT Or 256)
For m As Integer=0 To 42
If m=10 Or m=21 Or m=32 Or m=34 Then
ToolBarSeparator(hwToolBar,-1)
Else
ToolBarImageButton(hwToolBar,m+1,CInt(Extract_Icon(GetSystemDir & "\SetupAPI.dll",m+1,&hf0f0f0)),,,,6,32)
sArray(m) = "button " & Str(m+1)
ToolBarToolTip(hwnd,m+1,sArray(m))
EndIf
Next
Do
Var ev=WaitEvent
If ev=EventClose Then
End
ElseIf ev=EventGadget Then
Select Case EventNumberToolBar
Case 1 To 46
MessBox("","Кнопка с номером " & EventNumberToolBar)
End Select
EndIf
Loop

Пример7: (Использование других гаджетов в тулбаре. Возможно есть и другие варианты, но мне пришла в голову пока что только такая идея размещения. Принцип: выделение места с помощью разделителей и установка по нужным размерам требуемых гаджетов)
#Include "window9.bi"
Dim As Integer hwToolBar
Var hwnd=OpenWindow("",10,10,200,200)
CenterWindow(hwnd)
hwToolBar=CreateToolBar(,TBSTYLE_FLAT)
ToolBarStandardButton(hwToolBar,1,STD_FILEOPEN)
ToolBarSeparator(hwToolBar)
ToolBarSeparator(hwToolBar)
ToolBarStandardButton(hwToolBar,2,STD_CUT)
ToolBarSeparator(hwToolBar,-1)
SetParent(CheckBoxGadget(10,26,2,20,20),Cast(hwnd,hwToolBar))
SetParent(ComboBoxGadget(11,62,0,50,100),Cast(hwnd,hwToolBar))
For a As Integer=1 To 5
ToolBarSeparator(hwToolBar)
AddComboBoxItem(11,Str(a),-1)
Next
ToolBarStandardButton(hwToolBar,3,STD_COPY)
Do
Var ev=WaitEvent
If ev=EventClose Then
End
ElseIf ev=EventGadget Then
Select Case EventNumberToolBar
Case 1 To 3
MessBox("","Тулбар номер " & EventNumberToolBar)
End Select
If EventNumber=10 Then
MessBox("CheckBox","CheckBox")
EndIf
EndIf
Loop

Created with the Personal Edition of HelpNDoc: Single source CHM, PDF, DOC and HTML Help creation