Problem mit Comboboxen

Anfängerfragen zum Programmieren mit PureBasic.
Baba_Smurf
Beiträge: 55
Registriert: 01.03.2015 12:05
Wohnort: Saarland / Püttlingen
Kontaktdaten:

Problem mit Comboboxen

Beitrag von Baba_Smurf »

Hallo,

ich sehe glaube ich im Moment vor lauter Wald die Bäume nicht.
Folgendes ich möchte ein Verzeichnis auslesen, und die Unterverzeichnisse sollen in Comboboxen aufgelistet werden.
Irgendwo ist aber der Wurm drinne, entweder sind die Comboboxen leer, es wird nur in der ersten Box der Eintrag gezeigt Eintrag,
oder es sind je mehr boxen ich auswähle die Einträge öfters drinn.
Wird wahrscheinlich ein Änfängerfehler sein.
Habe das so gelöst, die Verzeichnisse werden eingelesen, aber nicht in den Comboboxen angezeigt

Code: Alles auswählen

 Procedure Verzeichnis()
   
  Directory$= GetCurrentDirectory()+"\Material"
     If ExamineDirectory(0, Directory$, "*.*")  
    While NextDirectoryEntry(0)
      If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory
        Type$ = ""
      
      AddGadgetItem(#Combo1,0,DirectoryEntryName(0))
      AddGadgetItem(#Combo2,0,DirectoryEntryName(0))
      AddGadgetItem(#Combo3,0,DirectoryEntryName(0))
      AddGadgetItem(#Combo4,0,DirectoryEntryName(0))
      AddGadgetItem(#Combo5,0,DirectoryEntryName(0))
      AddGadgetItem(#Combo6,0,DirectoryEntryName(0))
      EndIf
    Wend
    
  EndIf
  FinishDirectory(0)
  EndProcedure
wenn ich aber diesen Weg gehe :

Code: Alles auswählen

 ComboBoxGadget(#Combo1,820,25,150,20)
   Verzeichnis()
 ComboBoxGadget(#Combo2,820,50,150,20)
    Verzeichnis()
 ComboBoxGadget(#Combo3,820,75,150,20)
 ComboBoxGadget(#Combo4,820,100,150,20)
 ComboBoxGadget(#Combo5,820,125,150,20)
 ComboBoxGadget(#Combo6,820,150,150,20)
bekomme ich zwar den Inhalt in den Boxen angezeigt, sieht aber so aus, das in der ersten Box die verzeichnisse zweimal angezeigt werden, in der zweiten Box einmal, je mehr Boxen ich so mache, desto öfters die wiederholen sich die Einträge.
Wer kann mir denn sagen, was ich falsch mache ???

mfg
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: AMD Ryzen 5 7600 6-Core Prozessor 3.80 GHz
16,0 GB Arbeitsspeicher
Windows 11 Pro Betriebssystem
Wohnort: Bremen

Re: Problem mit Comboboxen

Beitrag von Pelagio »

Hallo Baba_Smurf,

Du kannst natürlich nur dann die Combobox füllen, wenn diese auch Initialisiert wurden.

Code: Alles auswählen

ComboBoxGadget(#Combo1,820,25,150,20)
 ComboBoxGadget(#Combo2,820,50,150,20)
 ComboBoxGadget(#Combo3,820,75,150,20)
 ComboBoxGadget(#Combo4,820,100,150,20)
 ComboBoxGadget(#Combo5,820,125,150,20)
 ComboBoxGadget(#Combo6,820,150,150,20)
Verzeichnis()
Wenn Du allerdings verschiedene Unterverzeichnisse in den Comboboxen haben wolltest soolltest Du dies der Procedure auch sagen.

Code: Alles auswählen

Procedure Verzeichnis(vID.i)
   
  Directory$= GetCurrentDirectory()+"\Material"
  If ExamineDirectory(0, Directory$, "*.*") 
    While NextDirectoryEntry(0)
      If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory
        Type$ = ""
         AddGadgetItem(vID,0,DirectoryEntryName(0))
      EndIf
    Wend
  EndIf
  FinishDirectory(0)
  EndProcedure

 ComboBoxGadget(#Combo1,820,25,150,20): Verzeichnis(#Combo1)
 ComboBoxGadget(#Combo2,820,50,150,20): Verzeichnis(#Combo2)
 ComboBoxGadget(#Combo3,820,75,150,20): Verzeichnis(#Combo3)
 ComboBoxGadget(#Combo4,820,100,150,20): Verzeichnis(#Combo4)
 ComboBoxGadget(#Combo5,820,125,150,20): Verzeichnis(#Combo5)
 ComboBoxGadget(#Combo6,820,150,150,20): Verzeichnis(#Combo6)
Jetzt werden allerdings alle Comboboxen mit den gleichen Daten gefüllt.
Der Procedure sollte ansonsten das Unterverzeichnis mitgeteilt werden, welches in welcher Combobox angezeigt werden soll.

Code: Alles auswählen

Procedure Verzeichnis(vID.i, vFolder.s)
   
  Directory$= GetCurrentDirectory()+"\" + vFolder
  If ExamineDirectory(0, Directory$, "*.*") 
    While NextDirectoryEntry(0)
      If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory
        Type$ = ""
         AddGadgetItem(vID,0,DirectoryEntryName(0))
      EndIf
    Wend
  EndIf
  FinishDirectory(0)
  EndProcedure

  ComboBoxGadget(#Combo1,820,25,150,20)
  Verzeichnis(#Combo1, "Material")
:allright:
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win11Pro; PB6.20 LTS]. :allright:
Baba_Smurf
Beiträge: 55
Registriert: 01.03.2015 12:05
Wohnort: Saarland / Püttlingen
Kontaktdaten:

Re: Problem mit Comboboxen

Beitrag von Baba_Smurf »

Hallo und Danke Pelagio,

die Boxen wurden natürlich initialisiert, mein Problem war, das ich das so machen wollte:

Code: Alles auswählen

 ComboBoxGadget(#Combo1,820,25,150,20)
   Verzeichnis()
 ComboBoxGadget(#Combo2,820,50,150,20)
   Verzeichnis()
 ComboBoxGadget(#Combo3,820,75,150,20)
 ComboBoxGadget(#Combo4,820,100,150,20)
 ComboBoxGadget(#Combo5,820,125,150,20)
 ComboBoxGadget(#Combo6,820,150,150,20)
  Verzeichnis()
heisst ich hatte nach jeder Box die Procedure aufrufen wollen, aber der Aufruf erfolgt ja nur am Schluss und nicht jedesmal, jetzt funktioniert es.

Danke....
*schäm
Antworten