ToolBar Image ändern

Anfängerfragen zum Programmieren mit PureBasic.
IronEagle
Beiträge: 64
Registriert: 13.10.2012 14:41
Wohnort: Berlin

ToolBar Image ändern

Beitrag von IronEagle »

Hallo Leute,

gibt es eine einfache Möglichkeit, dass Image eines "ToolBarImageButton" zur Laufzeit zu ändern ohne das ich den Button freigeben und neu erstellen muss ?

Ich hoffe ihr könnt mir weiterhelfen :)
PureBasic 5.71 | Windows 10 Home (x64)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: ToolBar Image ändern

Beitrag von ts-soft »

Nativ ist es wie mit Menüs, Toolbar freigeben und Neu erstellen.
Sollte aber kein Problem sein und fällt auch normalerweise nicht auf.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
IronEagle
Beiträge: 64
Registriert: 13.10.2012 14:41
Wohnort: Berlin

Re: ToolBar Image ändern

Beitrag von IronEagle »

ts-soft hat geschrieben:Nativ ist es wie mit Menüs, Toolbar freigeben und Neu erstellen.
Sollte aber kein Problem sein und fällt auch normalerweise nicht auf.
Erstmal vielen Dank für die schnelle Antwort :allright:

Ist das dann jetzt eine gängige Methode oder eher eine "Von hinten durch die Brust ins Auge" Sache? :D
PureBasic 5.71 | Windows 10 Home (x64)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: ToolBar Image ändern

Beitrag von RSBasic »

Oder natürlich mit Hilfe von WinAPI:

Code: Alles auswählen

EnableExplicit

Define EventID

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If CreateToolBar(1, WindowID(0))
    ToolBarStandardButton(0, #PB_ToolBarIcon_New)
    ToolBarStandardButton(1, #PB_ToolBarIcon_Open)
    ToolBarStandardButton(2, #PB_ToolBarIcon_Save)
  EndIf
  
  ButtonGadget(1, 10, 30, 200, 20, "Bild eines ToolBar-Items ändern", 0)
  
  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget
      Select EventGadget()
        Case 1
          SendMessage_(ToolBarID(1), #TB_CHANGEBITMAP, 2, 5)
      EndSelect
    EndIf
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: ToolBar Image ändern

Beitrag von ts-soft »

IronEagle hat geschrieben:Ist das dann jetzt eine gängige Methode oder eher eine "Von hinten durch die Brust ins Auge" Sache? :D
Hab ich bisher immer so gehandhabt und kann da auch keinen Unterschied erkennen, ob die ganze Toolbar oder nur ein
Button neugezeichnet wird. Bei Extremen Toolbars mags wohl nicht stimmen, aber die sind sowieso nur per API zu
erstellen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
IronEagle
Beiträge: 64
Registriert: 13.10.2012 14:41
Wohnort: Berlin

Re: ToolBar Image ändern

Beitrag von IronEagle »

Code: Alles auswählen

SendMessage_(ToolBarID(1), #TB_CHANGEBITMAP, 2, 5)
Wäre es bei diesem API-Befehl auch möglich, ein mit "CatchImage" geladenes Icon zu verwenden.

Habe gerade mal probiert als lParam meine ImageID zu verwenden... Leider ohne Erfolg :cry:
PureBasic 5.71 | Windows 10 Home (x64)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: ToolBar Image ändern

Beitrag von ts-soft »

Dafür mußt Du eine ImageList erstellen. Wenn Du diese aber der PB Toolbar zuweist, wirst Du die Images nicht
mehr freigeben können, also Speicherleak.
Hilft also nur eine komplett per API erstellte Toolbar, gibts wohl auch Beispiele im engl. Forum.

Viel Aufwand für nichts :mrgreen:

Ansonsten hier mal schauen: http://msdn.microsoft.com/en-us/library ... 85%29.aspx

oder einen Container mit flachen Buttons, siehe: http://www.purebasic.fr/english/viewtop ... 35#p405635
das wäre wieder Crossplattform.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten