Seite 1 von 2

OptionGadgets mit Mehrfachauswahl durch Gruppentrennung

Verfasst: 16.08.2005 16:29
von Peter aus der Nordheide
Hallo zusammen,

ich habe jetzt zwei Tage herumexperimentiert, weil die zwischen den OptionGadgets eingefügten Frame3DGadgets NICHT als Gruppenabschluß funktioniert haben.

Leider aber auch nicht eindeutig.

Nur das Gadget 1 hat beim Anklicken das Gadget 2 ausgeschaltet (Ausschließlichkeit).

Das Gadget 2 hingegen konnte wahlweise - wie gewünscht - hinzugeschaltet werden (Mehrfachauswahl).
Beim ersten Aufruf dieser Funktion wird eine Gruppe erstellt und alle folgenden Aufrufe von OptionGadget() fügen dieser Gruppe ein Gadget hinzu. Um die Gruppe abzuschließen, rufen Sie einfach einen anderen Gadgettyp auf. Diese Art von Gadgets sind sehr nützlich, da zur gleichen Zeit immer nur ein Gadget der Gruppe selektiert sein kann.
Nun habe ich probeweise ein TextGadget dazwischengelegt, und sieh da, es funktioniert !

Gilt denn das Frame3DGadget im Sinne der Hilfe nicht als ein anderer Gadgettyp ?

An anderer Stelle im Programm funktioniert das Frame3DGadget als Gruppentrennung übrigens einwandfrei ?!

Code: Alles auswählen

Die Aufgabenstellung war : - Mehrfachauswahl
                         : - Zurücknahme einer Auswahl

Ich weiß, daß für diese Aufgabenstellung eigentlich das CheckBoxGadget vorgesehen ist und sich auch viel einfacher handhaben läßt.

Aus "Schönheitsgründen" (kann man streiten) habe ich mich aber für die OptionGadgets entschieden.

Hat jemand für solche "abartigen" Sonderwünsche eine Lösung, bezw. kann mir jemand zeigen, wo denn bei mir der Fehler liegt ?

Gruß Peter

Code: Alles auswählen

 
If OpenWindow(0,0,0,500,300,#PB_Window_Systemmenu," OptionGadgets mit Mehrfachauswahl ")
EndIf                                              

If CreateGadgetList(WindowID())

Frame3DGadget(2, 20, 20, 440, 50, "", 0)

OptionGadget(3, 50, 100, 150, 20, " Gadget 1 ")

Frame3DGadget(4, 20, 80, 210, 50, "", 0)      

; TextGadget(1, 50, 40, 400, 20, " Erst dieses TextGadget bewirkt die Gruppentrennung der OptionGadgets ")

OptionGadget(5, 270, 100, 125, 20, " Gadget 2 ")

Frame3DGadget(6,250, 80, 210, 50, "", 0) 

Frame3DGadget(7, 20,140, 440, 50, "", 0)

TextGadget(8, 50,160, 400, 20, " Nur Gadget 1 wirkt gruppenabhängig mit Ausschließlichkeit, - - - Gadget 2 NICHT ! ")

Repeat 

   Select WaitWindowEvent() 
      Case #PB_EventCloseWindow 
      
         EventID = #PB_Event_CloseWindow
         Break 
    
    
      Case #PB_Event_Gadget 
            
         EventID=EventGadgetID() 

         Select EventID  
         
            Case 3
        
               If MitLfd = 0
             
                  MitLfd = 1
                  Dateitext00$ = " mit lfd Nummer "
                  SetGadgetState(3,1)
               
  Debug EventID 
  Debug MitLfd 
  Debug MitNull   
            
               ElseIf MitLfd = 1
            
                  MitLfd = 0
                  Dateitext00$ = ""
                  SetGadgetState(3,0)
               
  Debug EventID 
  Debug MitLfd 
  Debug MitNull  
               
               EndIf 
         
            Case 5                            ;" Mit führender Null"
            
               If MitNull = 0
                      
                  MitNull = 1
               
                  SetGadgetState(5,1)
               
  Debug EventID 
  Debug MitLfd 
  Debug MitNull   
             
               ElseIf MitNull = 1
                     
                  MitNull = 0
               
                  SetGadgetState(5,0)  
                 
  Debug EventID 
  Debug MitLfd 
  Debug MitNull 
            
               EndIf 
     
         EndSelect   
               
   EndSelect 
   
Until  EventID = #PB_Event_CloseWindow


EndIf
End

Verfasst: 16.08.2005 17:16
von bobobo
Dekommentier das erste Textgadget und mach den Text dafür leer .

Dann funktionierz

Verfasst: 16.08.2005 18:23
von Peter aus der Nordheide
bobobo hat geschrieben:Dekommentier das erste Textgadget und mach den Text dafür leer .

Dann funktionierz
Hallo bobobo,
ja, genau das hatte ich ja rausgefunden, aber warum geht es mit den Rahmen nicht ?
Gruß Peter

Re: OptionGadgets mit Mehrfachauswahl durch Gruppentrennung

Verfasst: 16.08.2005 18:30
von rolaf
Hallo,

steht doch alles in der Hilfe (Auszug):
... Beim ersten Aufruf dieser Funktion wird eine Gruppe erstellt und alle folgenden Aufrufe von OptionGadget() fügen dieser Gruppe ein Gadget hinzu. Um die Gruppe abzuschließen, rufen Sie einfach einen anderen Gadgettyp auf. ...
Edit: Pack doch einfach jede Optionsgruppe in ein ContainerGadget, läßt sich auch besser positionieren (da immer der komplette Container mit allen OptionGadget verschoben wird).

Re: OptionGadgets mit Mehrfachauswahl durch Gruppentrennung

Verfasst: 16.08.2005 18:38
von Peter aus der Nordheide
Falo hat geschrieben:Hallo,

steht doch alles in der Hilfe (Auszug):
... Beim ersten Aufruf dieser Funktion wird eine Gruppe erstellt und alle folgenden Aufrufe von OptionGadget() fügen dieser Gruppe ein Gadget hinzu. Um die Gruppe abzuschließen, rufen Sie einfach einen anderen Gadgettyp auf. ...
Hallo Falo,

guck doch mal bitte meinen Beitrag an.

Da hatte ich doch auch schon aus der Hilfe zitiert.

Die Frage ist, warum geht die Gruppentrennung mit einem TextGadget, - - - und mit dem Frame3DGadget NICHT ?

Gruß Peter

Re: OptionGadgets mit Mehrfachauswahl durch Gruppentrennung

Verfasst: 16.08.2005 18:45
von rolaf
Peter aus der Nordheide hat geschrieben: Hallo Falo,

guck doch mal bitte meinen Beitrag an.

Da hatte ich doch auch schon aus der Hilfe zitiert.

Die Frage ist, warum geht die Gruppentrennung mit einem TextGadget, - - - und mit dem Frame3DGadget NICHT ?

Gruß Peter
Da sich mein Edit mit Deinen Post hier überschnitten hat nochmals:

"Pack doch einfach jede Optionsgruppe in ein ContainerGadget, läßt sich auch besser positionieren (da immer der komplette Container mit allen OptionGadget verschoben wird)."

Warum es mit den Frame3DGadget nicht geht, weis ich nicht, PB ist nicht immer vollkommen - aber meistens schon.

Verfasst: 16.08.2005 19:15
von ts-soft
PureBasic.chm hat geschrieben: Diese Art von Gadget dient nur zur dekorativen Zwecken
Erfüllt also auch nicht dem Zweck eine neue Gruppe aufzurufen

Verfasst: 16.08.2005 19:38
von Peter aus der Nordheide
ts-soft hat geschrieben:
PureBasic.chm hat geschrieben: Diese Art von Gadget dient nur zur dekorativen Zwecken
Erfüllt also auch nicht dem Zweck eine neue Gruppe aufzurufen
Hallo Thomas,

muß meine Behauptung, daß es an anderer Stelle mit den Frame3DGadgets geht, zurücknehmen.

Auf Grund Deiner Antwort habe ich mir das Hauptlisting noch mal angesehen und habe feststellen müssen, daß im Anschluß einer Gruppe OptionGadgets ein ButtonGadget ist, und erst dann das Rahmengadget kommt.

Ich hatte aber geglaubt :mrgreen: , daß das RahmenGadget den Gruppenabschluß bildet.

Also vielen Dank für Deine kurze und zutreffende Antwort. :allright:

Gruß Peter

Re: OptionGadgets mit Mehrfachauswahl durch Gruppentrennung

Verfasst: 16.08.2005 19:47
von Peter aus der Nordheide
Falo hat geschrieben: "Pack doch einfach jede Optionsgruppe in ein ContainerGadget, läßt sich auch besser positionieren (da immer der komplette Container mit allen OptionGadget verschoben wird)."
Hallo Falo,

habe Deinen Vorschlag in der Zwischenzeit mal getestet. Haut alles so hin, wie ich mir das vorstelle.

Werde dann wohl auch das Hauptlisting entsprechend ändern, dann ist wenigstens eine Eindeutigkeit gegeben und es kann nichts mehr passieren.

Und die Verschiebemöglichkeit des ganzen Containers, hat natürlich auch was für sich.

Also auch Dir ein großes Dankeschön

Gruß Peter

Verfasst: 16.08.2005 20:12
von rolaf
ts-soft hat geschrieben:
PureBasic.chm hat geschrieben: Diese Art von Gadget dient nur zur dekorativen Zwecken
Erfüllt also auch nicht dem Zweck eine neue Gruppe aufzurufen
Hallo,

nunja ob dekorativ oder nicht, dennoch ist es ein Gadget. In Sinne der Einheitlichkeit wäre es daher schon besser wenn dies auch für das OptionGadget als Trenner fungieren könnte.

In VB zum Beispiel dient dieses "3D-Ding" übrigens tatsächlich als Container. Eigendlich könnte man ContainerGadget und Frame3DGadget auch vereinigen. Dazu müßte man im ContainerGadget nur den Standard-3D-Rahmen und den möglichen Text-Parameter als weitere Option einbauen - fertig wärs und äußerst praktisch dazu.