Toolbar mit Schaltflächen erstellen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Andesdaf
Moderator
Beiträge: 2671
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Toolbar mit Schaltflächen erstellen

Beitrag von Andesdaf »

Hallo!

Ich wollte in eine Toolbar eine editierbare ComboBox (oder eben ein beliebiges anderes Gadget) legen, z.B für eine Art Word-Programm die Auswahlleiste für die Schriftart oder für einen Browser die Adressleiste. Diese sollte in ihren Funktionen nicht eingeschränkt sein, sondern wie normal funktionieren.

Weiß jemand, wie ich so etwas mache?

Suchfunktion habe ich schon genutzt, aber die Qualität der Suche ist ja bekannt und ich war noch nie sehr gut im Finden von Sachen, egal wo. Also bitte nicht böse sein, wenn die Lösung schon existiert und ich sie bloß nicht gefunden habe.
Win11 x64 | PB 6.20
Benutzeravatar
milan1612
Beiträge: 810
Registriert: 15.04.2007 17:58

Beitrag von milan1612 »

Folgendes funktioniert mit Windows einwandfrei:

1. Erstell deine Toolbar
2. Erstell ein Containergadget
3. Plazier dein gewünschtes Gadget darauf
4. Verwende SetParent_(GadgetID(#Container), ToolbarID(#Toolbar))
5. Verwende ResizeGadget() um das Containergadget richtig zu plazieren
Bin nur noch sehr selten hier, bitte nur noch per PN kontaktieren
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

Beitrag von ts-soft »

Wenns für Windows ist:

Code: Alles auswählen

If OpenWindow(0, 100, 200, 195, 260, "ToolBar example", #PB_Window_SystemMenu | #PB_Window_SizeGadget)

  If CreateToolBar(0, WindowID(0))
    ToolBarStandardButton(0, #PB_ToolBarIcon_New)
    ToolBarStandardButton(1, #PB_ToolBarIcon_Open)
    ToolBarStandardButton(2, #PB_ToolBarIcon_Save)

    ToolBarSeparator()

    ToolBarStandardButton(3, #PB_ToolBarIcon_Print)
    ToolBarToolTip(0, 3, "Print")

    ToolBarStandardButton(4, #PB_ToolBarIcon_Find)
    ToolBarToolTip(0, 4, "Find a document")

    ToolBarSeparator()


  EndIf
  
  ; ######################################
  ; hier spielt die Musik
  StringGadget(0, 130, 0, 50, 20, "Hallo")
  SetParent_(GadgetID(0), ToolBarID(0))
  ; ###################################

  If CreateMenu(0, WindowID(0))
    MenuTitle("Project")
    MenuItem(0, "New")
    MenuItem(1, "Open")
    MenuItem(2, "Save")
  EndIf

  ;
  ; Attach our previously created ToolBar to this window
  ;

  DisableToolBarButton(0, 2, 1) ; Disable the button '2'

  ;
  ; The event loop. A ToolBar event is like a Menu event (as tools are shortcut for menu the most
  ; of the time). This is handy, as if the ToolBar buttons and the MenuItem have the same ID, then
  ; the same operation can be done on both action without any adds..
  ;

  Repeat
    Event = WaitWindowEvent()

    Select Event

      Case #PB_Event_Menu
        MessageRequester("Information", "ToolBar or Menu ID: "+Str(EventMenu()), 0)

      Case #PB_Event_CloseWindow  ; If the user has pressed on the close button
        Quit = 1

    EndSelect

  Until Quit = 1

EndIf

End   ; All the opened windows are closed automatically by PureBasic
Hab das Beispiel der Hilfe mal gepimped :lol:
Entscheidende Zeilen sind in ##### REMs
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
Benutzeravatar
milan1612
Beiträge: 810
Registriert: 15.04.2007 17:58

Beitrag von milan1612 »

Mensch Thomas, muss du immer gleich mit Code daherkommen? :lol:
Bin nur noch sehr selten hier, bitte nur noch per PN kontaktieren
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

Beitrag von ts-soft »

milan1612 hat geschrieben:Mensch Thomas, muss du immer gleich mit Code daherkommen? :lol:
Hab ja nur 2 Zeilen eingefügt, den Rest hat Fantaisia Software geschrieben :mrgreen:
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
Andesdaf
Moderator
Beiträge: 2671
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

@milan:
> 4. Verwende SetParent_(GadgetID(#Container), ToolbarID(#Toolbar))
Danke, diese Funktion hat gefehlt. Dass das so einfach ist hätt isch nisch gedacht.

@ts:
auch danke für deinen code

:D
Win11 x64 | PB 6.20
bec
Beiträge: 13
Registriert: 01.03.2007 23:00

Beitrag von bec »

@ts-soft
das Codebeispiel funktioniert bei mir nicht. Es bleibt genau an der Stelle zwischen den Rem-Zeilen hängen.
(Debugger: There is no current Gadget-List)
Geht das möglicherweise erst ab 4.30 ??? Hab hier XP und 4.20.

bec
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

bec hat geschrieben:Geht das möglicherweise erst ab 4.30 ???
japp. In 4.3 fällt CreateGadgetList() weg. Deswegen hat es Thomas nicht im
Code aufgeführt. Einfach hinter OpenWindow(...) ein CreateGadgetList(...)
und fertig :-)

Grüße ... Kiffi
a²+b²=mc²
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

Beitrag von ts-soft »

Kiffi gefälschtes Zitat hat geschrieben:Deswegen hat es Thomas, der faule Sack, es nicht im Code aufgeführt.
So bin ich eben :lol:
Gruß
Thomas
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
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Gefälschtes von Thomas gefälschtes Kiffi-Zitat - Zitat hat geschrieben:Deswegen hat es der progressive Thomas, der als Innovationsmotor ständig
auf der Höhe der Zeit ist und aus diesem Grund auch nur das Neueste vom
Neuen benutzt, es nicht im Code aufgeführt.
;-)

Grüße ... Kiffi (der sich erst heute PB4.3 installiert hat)
a²+b²=mc²
Antworten