Seite 2 von 2
Verfasst: 16.12.2005 20:44
von Ynnus
Jedes Fenster kann erstmal eine Toolbar haben. Also kann man das Problem so lösen, dass man dem Hauptfenster das Menü und die erste Toolbar verpasst, dann erstellt man ein zweites Fenster (als Childfenster zum Hauptfenster ohne Rahmen) und fügt diesem Fenster auch noch eine Toolbar an. Und schon hat man 2 Toolbars.
Das geht natürlich auch mit einem Container-Gadget, da dies ja auch nur ein Fenster ist. So kann man dann tausend von Toolbars (und auch mehrere Menüs) erstellen.
Bin ja mal gespannt ob und wann da noch ein paar mehr Funktionen -
Möglichkeiten hinzukommen.
Schau dir Funktionen der WinAPI an, dann hast du die volle Freiheit um mit der Toolbar zu machen was du willst. Dann brauchst du nicht auf PB zu warten.
Verfasst: 16.12.2005 21:54
von sen-me
kapir ich nicht, dan müsste sich doch beide fenster aber verschieben lassen können, sonst bleibt doch das andre fenster hängen bzw es läuft mit ruckeln dem hauptfenster nach
und das mit den 2 gadgetlists kapir ich net, wie soll man dann abfragen welcher toolbarbutton gedrückt wurde?
Verfasst: 16.12.2005 22:19
von walker
Hi,
was Sunny mein ist, das man mehrere Child-Windows in einem MDI-Window haben kann.... und jedes Fenster mit einer Toolbar versehen kann. Dies war aber hier nicht gefragt... Sondern die Möglichkeit in einem Fenster mehrere Toolbars zu haben. Und dies geht am einfachsten (wenn nicht sogar nur) mit dem ContainerGadget (siehe meinen Beispielcode eine Seite vorher)
Cu
Ulf
Verfasst: 16.12.2005 23:47
von Ynnus
walker hat geschrieben:was Sunny mein ist, das man mehrere Child-Windows in einem MDI-Window haben kann.... und jedes Fenster mit einer Toolbar versehen kann. Dies war aber hier nicht gefragt... Sondern die Möglichkeit in einem Fenster mehrere Toolbars zu haben. Und dies geht am einfachsten (wenn nicht sogar nur) mit dem ContainerGadget (siehe meinen Beispielcode eine Seite vorher)
Nein, ich rede nicht von MDI-Fenster oder sonstwas. Ich rede genau davon, wie man mehrere Toolbars in ein Haupt-Fenster bekommt. Also ein strinknormales Fenster mit Rand, Titelleiste und Menü, von mir aus auch mit bereits vorhandener Toolbar. Will man nun noch eine Toolbar haben, egal wo die erscheinen soll, dann erstellt man einfach ein weiteres Fenster als Childfenster und gibt diesem Fenster eine Toolbar. Sinnvoller Weise ist dieses Childwindow dann Randlos und so groß wie nötig, um genau der Toolbar Platz zu bieten.
Und bitte kommt mir jetzt nicht mit "Aber ein Containergagdet geht doch auch" denn ein Containergadget IST ein Child-Fenster.
Zu der Sache mit dem Verschieben: Ein Childwindow bleibt dort AUF DEM PARENTWINDOW stehen, wo es platziert wurde. Also man kann dann das Hauptfenster bewegen wie man will, das Childwindow bewegt sich mit. Demnach bleibt die Toolbar im Childwindow dann auch dort wo man sie gern haben möchte auf dem Parent-Window und bleibt nicht fest an einer Position des Bildschirms stehen.
Zu dem Auslesen des Buttondrucks: Geht genauso wie mit jeder anderen Toolbar. Einfach den Low-Word Anteil des wParam-Parameters der Message auslesen und mit dem Command-Index des Buttons vergleichen, den man bei der Erstellung der Toolbar angegeben hat.
Verfasst: 17.12.2005 09:26
von walker
Hi,
so geht's natürlich auch...und ist das Verschieben der einzelnen Toolbars (Fenster) während der Programmausführung einfacher zu handhaben, aber da es sich hier um die Rubrik Anfänger handelt, denke ich, das die Variante mit dem ContainerGadget() einfacher ist....
Verfasst: 17.12.2005 20:42
von sen-me
bah ich kapir nix mehr O.o
mit den buttons auszulesen, beispiel bitte
Verfasst: 18.12.2005 00:04
von Ynnus
So zum Beispiel (aus der Hilfe, leicht modifiziert):
Code: Alles auswählen
If OpenWindow(0, 0, 0, 150, 25, #PB_Window_SystemMenu |#PB_Window_ScreenCentered, "ToolBar")
If CreateToolBar(0, WindowID())
ToolBarStandardButton(0, #PB_ToolBarIcon_New)
ToolBarStandardButton(1, #PB_ToolBarIcon_Open)
ToolBarStandardButton(2, #PB_ToolBarIcon_Save)
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Menu
Select EventMenuID()
Case 0:
Debug "1. Button"
Case 1:
Debug "2. Button"
Case 2:
Debug "3. Button"
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf
Verfasst: 18.12.2005 11:20
von sen-me
ja das ist ja wenn man nur 1ne toolbar hat, aber wie das mit 2 O.o
Verfasst: 18.12.2005 16:11
von Ynnus
sen-me hat geschrieben:ja das ist ja wenn man nur 1ne toolbar hat, aber wie das mit 2 O.o
Du musst dann einfach nur für die neuen Buttons neue ID's vergeben (zum Identifizieren der Buttons) und kannst sie dann in der vorhandenen Routine für die erste Toolbar mit einbauen:
(case 0 - 2 : 1.Toolbar)
(case 3 - 5 : 2.Toolbar)
Code: Alles auswählen
If OpenWindow(0, 0, 0, 150, 100, #PB_Window_SystemMenu |#PB_Window_ScreenCentered, "ToolBar")
CreateGadgetList(WindowID())
hwnd_tb = ContainerGadget(0, 0, 0, 100, 40)
If CreateToolBar(0, GadgetID(0))
ToolBarStandardButton(0, #PB_ToolBarIcon_New)
ToolBarStandardButton(1, #PB_ToolBarIcon_Open)
ToolBarStandardButton(2, #PB_ToolBarIcon_Save)
EndIf
CloseGadgetList()
hwnd_tb2 = ContainerGadget(1, 0, 40, 100, 40)
If CreateToolBar(1, GadgetID(1))
ToolBarStandardButton(3, #PB_ToolBarIcon_New)
ToolBarStandardButton(4, #PB_ToolBarIcon_Open)
ToolBarStandardButton(5, #PB_ToolBarIcon_Save)
EndIf
CloseGadgetList()
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Menu
Select EventMenuID()
Case 0:
Debug "1. Button"
Case 1:
Debug "2. Button"
Case 2:
Debug "3. Button"
Case 3:
Debug "4. Button"
Case 4:
Debug "5. Button"
Case 5:
Debug "6. Button"
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf