Panel-AddGadgetItem Problem

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Panel-AddGadgetItem Problem

Beitrag 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
topsoft
Beiträge: 67
Registriert: 16.09.2004 11:55
Wohnort: nrw

Beitrag von topsoft »

Sollte das nicht heissen:

Code: Alles auswählen

AddGadgetItem(1,-1,"Unterordner 2")
Gruß Topsoft
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag 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
Benutzeravatar
redacid
Beiträge: 581
Registriert: 29.08.2004 17:06

Beitrag 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.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag 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:
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag 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.
Bild
Benutzeravatar
redacid
Beiträge: 581
Registriert: 29.08.2004 17:06

Beitrag 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.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag 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
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag 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....
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Beitrag 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
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Antworten