Seite 1 von 2
Gadgetliste vollführt unlogische Sachen
Verfasst: 04.03.2013 18:23
von Chimorin
Hallo,
gleich mal Entschuldigung für den Titel, ein passenderer ist mir nicht eingefallen. Mein Problem besteht darin, dass ich einem Containergadget später im Programm ein Panelgadget hinzufügen möchte. Ohne OpenGadgetlist() geht es, mit nicht Oo
Code: Alles auswählen
;OpenGadgetList(#Container_0)
PanelGadget(#Panel_0, Breite - 190, Hoehe - 500 + 20, 180, 420)
AddGadgetItem(#Panel_0, -1, "Punktuell")
AddGadgetItem(#Panel_0, -1, "Delta")
AddGadgetItem(#Panel_0, -1, "Limit")
AddGadgetItem(#Panel_0, -1, "Smooth")
CloseGadgetList()
CloseGadgetList()
Wenn ich nun OpenGadgetlist() reinmache, erstellt es kein Panelgadget. Ohne schon.
Code: Alles auswählen
ContainerGadget(#Container_0, Breite - 190, Hoehe - 500 + 20, 180, 420, #PB_Container_Single)
CloseGadgetList()
Sonst gibt es nur noch ein Treegadget und ein Menü in meinem Programm. Das Panel ist genauso groß wie der Container.
Ich kenne mich mit der Gadgetliste nicht aus, kann mich jemand darüber aufklären, ob ich etwas Spezielles beachten muss?
Gruß,
Banane
Re: Gadgetliste vollführt unlogische Sachen
Verfasst: 04.03.2013 18:29
von NicTheQuick
Wie immer gilt die Bitte ein lauffähiges Beispiel zu posten, damit man nicht selbst den Rest drum herum programmieren muss, nur um den Fehler zu reproduzieren.
Re: Gadgetliste vollführt unlogische Sachen
Verfasst: 04.03.2013 19:54
von Andesdaf
folgender Code funktioniert:
Code: Alles auswählen
If OpenWindow(0, 0, 0, 230, 400, "Panel hinzufügen", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget (1, 10, 10, 200, 20, "Klick mich")
ContainerGadget(2, 10, 40, 210, 350, #PB_Container_Single)
CloseGadgetList()
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 1
OpenGadgetList(2)
PanelGadget(3, 0, 0, 180, 200)
AddGadgetItem(3, -1, "Punktuell")
AddGadgetItem(3, -1, "Delta")
AddGadgetItem(3, -1, "Limit")
AddGadgetItem(3, -1, "Smooth")
CloseGadgetList()
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
wo kommt übrigens das zweite CloseGadgetList in deinem Codefragment her?
Re: Gadgetliste vollführt unlogische Sachen
Verfasst: 04.03.2013 22:17
von STARGÅTE
ach das zweite CloseGadgetList() ist meiner Meinung nach wichtig.
Denn nach AddGadgetItem() in einem PanelGadget wird ja auch eine Gadgetliste geöffnet, welche geschlossen werden muss.
Wenn es also in deinem Code nicht geht, muss ja schon weiter "vorne" was schief gelaufen sein.
Bei PB muss halt halt aufpassen, dass man nach ContainerGadget(), PanelGadget() und ScrollAreaGadget() immer ein dazugehöriges CloseGadgetList() einfügen.
Re: Gadgetliste vollführt unlogische Sachen
Verfasst: 04.03.2013 23:06
von Andesdaf
ach stimmt.
ich hab vorhin beim schnellen Testen einen Fehler bei dem
zweiten CloseGadgetList bekommen, da war wohl aber was
anderes dran schuld.
vielleicht sind hier irgendwelche Gadgetlisten durcheinander
gebracht worden, aber um das festzustellen, bräuchte man
einen ordentlichen Beispielcode.
Re: Gadgetliste vollführt unlogische Sachen
Verfasst: 05.03.2013 21:11
von Chimorin
Ihr habt natürlich recht, aber es hätte ja sein können, dass das ein bisschen verbuggt ist (Wie gesagt, mir ist das neu... Sind die Befehle neu?).
Code: Alles auswählen
EnableExplicit
Global.i Breite = 1920, Hoehe = 1080, Event, pruefOffen, arbeitsModus
#Window_Screen = 0
#Menu_0 = 0
Enumeration
#Tree_0
#Container_0
#Panel_0
EndEnumeration
Enumeration
#Item_0
#Item_1
#Item_2
EndEnumeration
Procedure Fehlerbehandlung(Ergebnis.i, Text.s)
If Ergebnis = 0
MessageRequester("Fehler", Text)
End
EndIf
EndProcedure
Procedure Open_Window_Screen()
Fehlerbehandlung(OpenWindow(#Window_Screen, 0, 0, Breite, Hoehe, "Bsp", #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget), "Fenster konnte nicht geöffnet werden.")
Fehlerbehandlung(CreateMenu(#Menu_0, WindowID(#Window_Screen)), "Menü konnte nicht erstellt werden.") ;Menü für die allgemeinen Sachen mit Dateien
MenuTitle("Datei")
MenuItem(#Item_0, "Neu")
MenuItem(#Item_1, "Speichern")
DisableMenuItem(#Menu_0, #Item_1, 1) ;Speichern ist zu Anfang disabled
MenuItem(#Item_2, "Laden")
Fehlerbehandlung(TreeGadget(#Tree_0, Breite - 190, 10, 180, Hoehe - 500, #PB_Tree_AlwaysShowSelection), "TreeGadget konnte nicht erstellt werden.")
AddGadgetItem(#Tree_0, -1, "Nichts")
AddGadgetItem(#Tree_0, -1, "Gelände erhöhen/absenken")
;DisableGadget(#Tree_0, 1)
Fehlerbehandlung(OpenWindowedScreen(WindowID(#Window_Screen), 10, 10, Breite, Hoehe, #True, 200, 10, #PB_Screen_SmartSynchronization), "Screen konnte nicht erstellt werden.")
Fehlerbehandlung(ContainerGadget(#Container_0, Breite - 190, Hoehe - 500 + 20, 180, 420, #PB_Container_Single), "Containergadget konnte nicht erstellt werden.")
CloseGadgetList()
EndProcedure
;Fehlerbehandlung(InitEngine3D(), "Die OGRE-Engine konnte nicht initialisiert werden!")
Fehlerbehandlung(InitSprite(), "DirectX konnte nicht initialisiert werden!")
;Fehlerbehandlung(InitKeyboard(), "Es wurde keine Tastatur gefunden!")
Open_Window_Screen()
Repeat
Event = WindowEvent()
Select Event
Case 0 ;-später weg
Delay(5)
Case #PB_Event_CloseWindow
Select GetActiveWindow()
Case #Window_Screen
If pruefOffen
Debug "tralala"
Else
End
EndIf
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case #Tree_0
arbeitsModus = GetGadgetState(#Tree_0)
Select arbeitsmodus
Case 1
;FreeGadget(#Container_0)
;Fehlerbehandlung(ContainerGadget(#Container_0, Breite - 190, Hoehe - 500 + 20, 180, 420, #PB_Container_Single), "Containergadget konnte nicht erstellt werden.")
Debug "2"
OpenGadgetList(#Container_0)
Fehlerbehandlung(PanelGadget(#Panel_0, Breite - 190, Hoehe - 500 + 20, 180, 420), "Konnte PanelGadget nicht erstellen.")
AddGadgetItem(#Panel_0, -1, "Punktuell")
AddGadgetItem(#Panel_0, -1, "Delta")
AddGadgetItem(#Panel_0, -1, "Limit")
AddGadgetItem(#Panel_0, -1, "Smooth")
CloseGadgetList()
CloseGadgetList()
EndSelect
EndSelect
EndSelect
ForEver
Der Code ist extrem gekürzt. Hier tritt aber der selbe Fehler auf. Macht man OpenGadgetlist() weg, wird es gezeichnet, klar. Ganz normal... (Gibt es sowas wie Repaint()?).
Re: Gadgetliste vollführt unlogische Sachen
Verfasst: 05.03.2013 21:31
von Kiffi
Dein PanelGadget() hat die falschen X- und Y-Koordinaten.
so sieht man das PanelGadget zumindest:
Code: Alles auswählen
Fehlerbehandlung(PanelGadget(#Panel_0, 0, 0, 180, 420), "Konnte PanelGadget nicht erstellen.")
Grüße ... Kiffi
Re: Gadgetliste vollführt unlogische Sachen
Verfasst: 05.03.2013 21:37
von ts-soft
Was wird gezeichnet? Sehe keinen Code für irgendwelches Zeichnen.
Bei mir funktioniert es, wie es sein sollte. Panel wird im Container erstellt.
Re: Gadgetliste vollführt unlogische Sachen
Verfasst: 05.03.2013 21:43
von Kiffi
ts-soft hat geschrieben:Bei mir funktioniert es, wie es sein sollte. Panel wird im Container erstellt.
ja, aber außerhalb des sichtbaren Bereiches, weswegen
Bananenfreak davon ausgeht, dass es nicht erstellt wird.
Grüße ... Kiffi
Re: Gadgetliste vollführt unlogische Sachen
Verfasst: 05.03.2013 22:02
von ts-soft
Achso, der ist von den Fensterkoordinaten ausgegangen, statt von den Koordinaten im Container
