ToolBar

Previous Next

Язык программирования 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



http://mneniya.ucoz.ru/

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