Seite 3 von 4
Verfasst: 17.10.2007 16:35
von Thomas
Wie kann man so eine Toolbar programmieren?
http://www.purebasic.fr/english/viewtop ... ht=toolbar
(Die ist aber schon in PB geprogt, oder?)
Verfasst: 17.10.2007 17:00
von edel
Mit etwas Eigeninitiative, Hirn und einer Sprache deiner Wahl.
Verfasst: 17.10.2007 17:15
von Fluid Byte
Mit etwas Eigeninitiative, Hirn und einer Sprache deiner Wahl.
Falsch! Er kauft sich einfach ProGUI und fertig ist die Laube.
Verfasst: 17.10.2007 19:11
von Thomas
Also ich vermute mal das ist mit PB und viel API gemacht.
Auch glaube ich, dass er Rebar verwendet hat.
Liege ich da richtig?
Verfasst: 17.10.2007 19:13
von edel
Deswegen ist es trotzdem eine Toolbar.
Verfasst: 17.10.2007 19:38
von Thomas
Code: Alles auswählen
#TB_SETIMAGELIST = #WM_USER + 48
#TB_GETIMAGELIST = #WM_USER + 49
LoadImage(1, "Image.ico")
Procedure MakeLong(LowWord.W, HighWord.W)
ProcedureReturn (HighWord * $10000) | (LowWord & $FFFF)
EndProcedure
If OpenWindow(0, 0, 0, 300, 200, "Große Toolbar-Schaltflächen", #PB_Window_SystemMenu |#PB_Window_SizeGadget | #PB_Window_ScreenCentered)
hTB = CreateToolBar(0, WindowID(0))
hOldIList = SendMessage_(hTB, #TB_GETIMAGELIST, 0, 0);
hNewIList = ImageList_Duplicate_(hOldIList)
ImageList_Destroy_(hOldIList)
ImageList_SetIconSize_(hNewIList, 32, 32)
SendMessage_(hTB, #TB_SETIMAGELIST, 0, hNewIList)
SendMessage_(hTB, #TB_SETBITMAPSIZE, 0, MakeLong(32,32))
SendMessage_(hTB, #TB_SETBUTTONSIZE, 0, MakeLong(36,36))
SendMessage_(hTB, #TB_AUTOSIZE, 0, 0)
ToolBarImageButton(0, ImageID(1))
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Menu
Debug "ToolBar ID: "+Str(EventMenu())
EndIf
Until EventID = #PB_Event_CloseWindow
ImageList_Destroy_(hNewIList)
EndIf
Hier kann man doch eigentlich die beiden Zeilen weglassen:
Code: Alles auswählen
SendMessage_(hTB, #TB_SETBITMAPSIZE, 0, MakeLong(32,32))
SendMessage_(hTB, #TB_SETBUTTONSIZE, 0, MakeLong(36,36))
oder mach das nen Unterschied?
Verfasst: 17.10.2007 19:58
von Thomas
Wenns so richtig klappt:
Dann hab ich hier mal ein Bsp:
Code: Alles auswählen
;LoadImage(1, "Image.ico")
Procedure SetToolbarHeight(ToolbarID.l, Width.l, Height.l)
OldListID.l = SendMessage_(ToolbarID, #TB_GETIMAGELIST, 0, 0)
Global NewListID.l = ImageList_Duplicate_(OldListID)
ImageList_Destroy_(OldListID)
ImageList_SetIconSize_(NewListID, Width, Height)
SendMessage_(ToolbarID, #TB_SETIMAGELIST, 0, NewListID)
SendMessage_(ToolbarID, #TB_AUTOSIZE, 0, 0)
EndProcedure
Procedure FreeNewToolBar()
ImageList_Destroy_(NewListID)
EndProcedure
If OpenWindow(0, 0, 0, 300, 100, "Große Toolbar-Schaltflächen", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ToolbarID.l = CreateToolBar(0, WindowID(0))
SetToolbarHeight(ToolbarID, 32, 32)
;ToolBarImageButton(0, ImageID(1))
ToolBarImageButton(1, 5)
ToolBarImageButton(2, 7)
ToolBarImageButton(3, 9)
ToolBarImageButton(4, 11)
ToolBarImageButton(5, 21)
Repeat
EventID = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow
FreeNewToolBar()
EndIf
End
Verfasst: 17.10.2007 20:26
von edel
Mach es lieber so :
Code: Alles auswählen
Procedure CreateToolBarEx(ID.l, Width.l, Height.l,parent)
ToolbarID.l = CreateToolBar(ID,parent)
OldListID.l = SendMessage_(ToolbarID, #TB_GETIMAGELIST, 0, 0)
ImageList_SetIconSize_(OldListID, Width, Height)
SendMessage_(ToolbarID, #TB_SETIMAGELIST , 0, OldListID)
SendMessage_(ToolbarID,#TB_AUTOSIZE,0,0)
ProcedureReturn ToolbarID
EndProcedure
If OpenWindow(0, 0, 0, 300, 100, "Große Toolbar-Schaltflächen", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateToolBarEx(0,32,32,WindowID(0))
ToolBarImageButton(2, 7)
Repeat
EventID = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow
EndIf
End
Verfasst: 17.10.2007 21:09
von Thomas
Und was ist mit diesen Zeilen:
Code: Alles auswählen
OldListID.l = SendMessage_(ToolbarID, #TB_GETIMAGELIST, 0, 0)
Global NewListID.l = ImageList_Duplicate_(OldListID)
ImageList_Destroy_(OldListID)
und
Werden die nicht mehr benötigt (was machen die genau

?)?

Verfasst: 18.10.2007 04:14
von edel
Ist unnoetig. Zumal in dem Code sowieso nichts geloscht wurde, da
hNewIList nicht global war.