Seite 1 von 2

ComboBox nachträglich editierbar machen?

Verfasst: 24.02.2009 16:23
von Thorsten1867
Wie kann ich nach dem Öffnen des Fensters (je nach gewählter Option) die ComboBox editierbar machen bzw. umgekehrt?

Anwendung:
Verschiedene Listen sollen je nach Auswahl in der ComboBox gefiltert werden.
Problem:
Manche Listen können nur nach festen Kriterien gefiltert werden (ComboBox readonly) und andere nach Vorgaben oder freier Eingabe (ComboBox editable)


PS: Mit SendMessage laut Forenbeitrag von 2005 funktioniert es nicht bzw. nicht unter Vista.

Re: ComboBox nachträglich editierbar machen?

Verfasst: 24.02.2009 16:33
von Kiffi
Thorsten1867 hat geschrieben:Wie kann ich nach dem Öffnen des Fensters (je nach gewählter Option) die ComboBox editierbar machen bzw. umgekehrt?
die Combobox mit der selben GadgetID (mit ensprechendem Flag) neu erstellen:

Code: Alles auswählen

Procedure CreateComboboxGadget(IsEditable)
  
  If IsEditable
    ComboBoxGadget(0, 10, 10, 250, -1, #PB_ComboBox_Editable)
    AddGadgetItem(0, -1, "ComboBox editable...")
  Else
    ComboBoxGadget(0, 10, 10, 250, -1)
    AddGadgetItem(0, -1, "ComboBox not editable...")
  EndIf
  
  SetGadgetState(0, 0)
  
EndProcedure

If OpenWindow(0, 0, 0, 270, 140, "ComboBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  CreateComboboxGadget(#False)
  
  ButtonGadget(1, 10, 30, 100, 20, "Toogle")
  
  Repeat 
    
    Select WaitWindowEvent()
        
      Case #PB_Event_Gadget
        
        Select EventGadget()
            
          Case 1 ; Toogle-Button
            
            If Editable = #True
              Editable = #False
            Else
              Editable = #True
            EndIf
            
            CreateComboboxGadget(Editable)
            
        EndSelect
        
      Case #PB_Event_CloseWindow
        Break
        
    EndSelect
    
  ForEver
  
EndIf
Grüße ... Kiffi

Verfasst: 24.02.2009 16:38
von Thorsten1867
Vielen Dank!
Den Gedanken hatte ich schon mal, aber ich dachte das wäre nicht "legal" :wink: ein Gadget einfach zu überschreiben.

Verfasst: 24.02.2009 17:42
von Kiffi
Thorsten1867 hat geschrieben:aber ich dachte das wäre nicht "legal" :wink: ein Gadget einfach zu überschreiben.
öhm, vielleicht kann jemand was dazu sagen, der mehr Ahnung davon hat
(freak?), aber meines Erachtens ist das einer der grossen Vorteile, die mir
PB bietet :-)

Grüße ... Kiffi

Verfasst: 24.02.2009 17:45
von ts-soft
Wenn Du ein neues Gadget mit einer bereits verwendeten ID erstellst, wird
das alte autom. Freigegeben. FreeGadget find ich aber schöner :mrgreen:

Verfasst: 24.02.2009 17:46
von AND51
Natürlich ist es legal, Gadgets mit derselben ID zu überschreiben.
Das gilt übrigens auch für Images, Files, Windows, XML Dateien, also eben alles, was in PB eine ID haben kann.
Ich mache das sogar öfter.

Verfasst: 24.02.2009 17:47
von Andesdaf
Ab und zu kommt das bei mir auch zum Einsatz. Wenn es schon geht, wieso
sollte man es dann nicht nutzen?

Verfasst: 24.02.2009 17:53
von Thorsten1867
Das eröffnet ganz neue Möglichkeiten. :mrgreen:

Wenn das vorherige Gadget automatisch freigegeben wird, ist ja alles bestens. Genau das waren meine Bedenken, leider kenne ich mich in den Interna noch zu wenig aus.

Dann gleich noch eine Frage, die in gleiche Richtung geht:
Werden Gadgets und v.a. Menüs auch automatisch freigegeben, wenn ein Fenster geschlossen wird?

Verfasst: 24.02.2009 18:02
von ts-soft
Thorsten1867 hat geschrieben: Dann gleich noch eine Frage, die in gleiche Richtung geht:
Werden Gadgets und v.a. Menüs auch automatisch freigegeben, wenn ein Fenster geschlossen wird?
Wenn ein Fenster geschlossen wird, gibt Windows auch alle Childs usw. frei.
PB streicht es natürlich auch vom ObjectManager (hoffe ich mal :mrgreen: )

Verfasst: 24.02.2009 18:25
von Kaeru Gaman
[offtopic]
"interna" ist bereits Plural!
...nämlich von "internum".
[/offtopic]