Seite 1 von 2
Panel-AddGadgetItem Problem
Verfasst: 20.09.2004 22:17
von KeyKon
Hi Leute,
ich hab da mal ne Frage, ich schreib da an so nem keinen Programm und da gibts ein Problem, ich hab schon ein bisschen rumprobiert und die "Fehler-Zeile" entdeck weis aber nich was damit nicht stimm (Ist bestimmt irgend so ein dummer Fehler den ich dauernd übersehe!) :
Code: Alles auswählen
...
PanelGadget(0,10,10,620,460)
AddGadgetItem(0,-1,"Hauptordner 1")
PanelGadget(1,10,0,600,430)
AddGadgetItem(1,-1,"Unterordner 1")
For k = 0 To 4
StringGadget(a,10,10,20,20,"Option "+Str(k+1))
a+1
Next
For k = 0 To 14
StringGadget(a,40,10,20,20+k*30,"UnterOption "+Str(k+1))
a+1
Next
;Hier
-> AddGadgetItem(1,0,"Unterordner 2")
;Oben
abs3=1
For k = 0 To 4
StringGadget(a,10,10,20,20+k*30,"Option "+Str(k+1),#PB_String_Numeric)
a+1
Next
For k = 0 To 14
...
Ich hab die Zeile die das Problem verursacht markiert( AddGadgetItem(1,0,"Unterordner 2") ).
Hat von euch irgendjemand ne Idee was da dran falsch ist??
Danke schonmal!
KeyKon
Verfasst: 21.09.2004 12:47
von topsoft
Sollte das nicht heissen:
Gruß Topsoft
Verfasst: 21.09.2004 18:55
von KeyKon
Ja so hab ich es ja auch gemacht es funktioniert aber trotzdem nicht

!
(Das ich im Code-Schnipsel "AddGadgetItem(1,0,"Unterordner 2")" war nur ein versehen also auch mit "AddGadgetItem(1,-1,"Unterordner 2")" funktioniert es nicht) irgendeine Idee warum?
Gruß KeyKon
Verfasst: 22.09.2004 00:23
von redacid
Was funktioniert denn nicht? Gibt es beim compilieren bereits eine Fehlermeldung oder erst beim Start? Oder wird das Gadgetitem nicht angezeigt/erstellt? Oder wie oder was? Nur mit diesem kleinen Code-Schnipsel kann ich nicht viel anfangen (was nicht viel heißt...).
Wenn ich irgendein GUI-Problem habe, das schon bei der Erstellung auftritt, schaue ich mir den vom VD generierten Code an. Zum Beispiel denke ich, dass es bei dir auch so ähnlich (Panel im Panel) aussehen soll:
Code: Alles auswählen
Procedure Open_Window_0()
If OpenWindow(#Window_0, 216, 0, 414, 304, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
If CreateGadgetList(WindowID())
;- Panel0
PanelGadget(#Panel_0, 40, 30, 330, 220)
AddGadgetItem(#Panel_0, -1, "Tab 1")
;- Panel3
PanelGadget(#Panel_1, 18, 18, 270, 160)
AddGadgetItem(#Panel_1, -1, "Tab 1")
AddGadgetItem(#Panel_1, -1, "Tab 2")
CloseGadgetList()
AddGadgetItem(#Panel_0, -1, "Tab 2")
CloseGadgetList()
EndIf
EndIf
EndProcedure
Vielleicht hilft es dir ja auch.
Verfasst: 22.09.2004 15:04
von KeyKon
Hier der gasammte Code:
Code: Alles auswählen
If OpenWindow(0,0,0,640,480,#PB_Window_SystemMenu | #PB_Window_ScreenCentered,"Ordner")
UseWindow(0)
If CreateGadgetList(WindowID())
PanelGadget(0,10,10,620,460)
AddGadgetItem(0,-1,"Hauptordner 1")
PanelGadget(1,10,0,600,430)
AddGadgetItem(1,1,"Unterordner 1")
For k = 0 To 4
StringGadget(a,10,10,20,20+k*30,"Option "+Str(k+1),#PB_String_Numeric)
a+1
Next
For k = 0 To 14
StringGadget(a,40,10,20,20+k*30,"Unteroption "+Str(k+1),#PB_String_Numeric)
a+1
Next
;Hier kommen normalerweise noch mehr "unterordner" hin
dasgehtnoch=1
AddGadgetItem(1,-1,"Unterordner 10")
dasgehtnichtmehr=1
For k = 0 To 4
StringGadget(a,10,10,20,20+k*30,"Option "+Str(k+1),#PB_String_Numeric)
a+1
Next
For k = 0 To 14
StringGadget(a,40,10,20,20+k*30,"Unteroption "+Str(k+1),#PB_String_Numeric)
a+1
Next
AddGadgetItem(0,-1,"Hauptordner 2")
PanelGadget(2,10,0,600,430)
AddGadgetItem(2,-1,"Unterordner 1")
For k = 0 To 14
StringGadget(a,10,10,20,20+k*30,"Option "+Str(k+1),#PB_String_Numeric)
a+1
Next
;Hier kommen normalerweise noch mehr "unterordner" hin
AddGadgetItem(2,-1,"Unterordner 13")
For k = 0 To 14
StringGadget(a,10,10,20,20+k*30,"Option "+Str(k+1),#PB_String_Numeric)
a+1
Next
CloseGadgetList()
EndIf
Repeat
event=WaitWindowEvent()
If event = #PB_Event_CloseWindow
End
EndIf
ForEver
Else
MessageRequester("Error","Can't open Window")
EndIf
Naja der Fehler ist der, dass der Vorgang "aufgrund eines ungültigen Fehlers geschlossen wird" und ich weis nicht warum.
Hat einer von euch vielleicht eine Ahnung
KeyKon

Verfasst: 22.09.2004 15:46
von NicTheQuick
Das ist ja auch ganz logisch.
Zuerst erstellst du ein PanelGadget mit der ID 1 und dann erstellst du mehrere StringGadgets mit den IDs 0 bis 4. Ist ja klar, dass dann das PanelGadget wieder überschrieben wird. So kann da auch kein Panel mehr angehängt werden.
Danach erstellst du übrigens wieder 15 StringGadgets mit den IDs 0 bis 14 und dann das ganze nochmal und nochmal. Die überschreiben sich ja regelmäßig wieder.
Ich würde mir da vorher mal Gedanken drüber machen, welchem Gadget du welche ID gibst.
Verfasst: 22.09.2004 16:36
von redacid
Sehr hilfreich ist dabei die Enumeration-Funktion -> und der Visual Designer. Merke: egal, welcher Art das Gadget ist (String, Panel, Listview, Button etc.), die ID jeden einzelnen Gadgets muss immer eindeutig und einmalig sein.
Verfasst: 22.09.2004 17:59
von KeyKon
Verfasst: 22.09.2004 19:17
von GPI
>Da sieht man auch mal was eine kleine Zeile ( z.B. a=3) ausmachen kann!
Du wirst lachen: Ein fehlendes "#" hatte mal bei meinen Atari ST zur folge gehabt, das das Fat auf meine Festplatte vollständig zerschossen wurde. Ich mußte formatieren.
Das Programm sollte nur eine CRC-Prüfsumme berechnen....
Verfasst: 23.09.2004 02:30
von Falko
@GPI
Noch was zum Lachen. Mir ist vorgestern die 160Gb-Samsung-Fesplatte abgeraucht, nachdem ich den obigen ersten Code im PB-Editor geladen und zum testen ausgeführt hatte (ständig wiederholte Schreibversuche bis zum Reset). CRC-Fehler beim lesen, sobald ich sie in DOS mit FDISK bearbeiten will. Mal sehen ob ich noch Garantie darauf habe.
Hab mir jetzt eine neue 80er Fesplatte von IBM eingebaut und eine weitere dazu bestellt.
Gruß Falko