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:

Code: Alles auswählen

AddGadgetItem(1,-1,"Unterordner 2")
Gruß Topsoft

Verfasst: 21.09.2004 18:55
von KeyKon
Ja so hab ich es ja auch gemacht es funktioniert aber trotzdem nicht :cry: !
(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 :cry:

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
Danke!
Das ist mir jetzt natürlich erst mal peinlich :oops: :oops: :oops: :oops: :oops: :oops: :oops: :( Vielleicht sollte ich Hausaufgaben machen und proggen ab jetzt etwas strenger trennen. Da sieht man auch mal was eine kleine Zeile ( z.B. a=3) ausmachen kann!

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