Seite 1 von 1

Combobox-Gadget und Dropdown-arrow

Verfasst: 09.09.2010 20:29
von Angelo
Kann man eigentlich beim Combobox-Gadget die Dropdown-Schaltfläche eliminieren oder zumindest deaktivieren? Habe dazu leider nichts gefunden.

Re: Combobox-Gadget und Dropdown-arrow

Verfasst: 09.09.2010 22:49
von c4s
StringGadget()?

Re: Combobox-Gadget und Dropdown-arrow

Verfasst: 13.09.2010 11:08
von Shardik
Den einfachsten Weg zur Deaktivierung eines ComboBoxGadget bietet die PB-Anweisung
DisableGadget(ComboBoxID, #True). Nachteil: man kann den ausgegrauten Text des
ComboBoxGadgets dann unter Windows XP (mit oder ohne XP-Skin) kaum noch lesen.
Unter Windows 7 ist der ausgegraute Text (mit oder ohne XP-Skin) schon besser lesbar.
Im englischen Forum habe ich dazu bereits zwei Lösungen veröffentlicht. Die erste Lösung
setzt den Hintergrund auf Weiß, sodaß der ausgegraute Text besser lesbar wird. Die zweite
Lösung setzt die Farbe des deaktivierten ComboBox-Eintrags auf Schwarz:
http://www.purebasic.fr/english/viewtopic.php?t=33044

Ich habe die zweite Lösung an PB 4.50 angepaßt (mittlerweile wird beim ComboBoxGadget
durch die Angabe der Höhe nicht mehr die Höhe der Dropdown-Box angegeben, sondern
die Höhe der ungeöffneten ComboBox):

Code: Alles auswählen

ComboBoxEnabled.L = #True

OpenWindow(0, 0, 0, 270, 190, "Enable/Disable ComboBox", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
ComboBoxGadget(0, 10, 40, 250, 20, #PB_ComboBox_Editable) 
ButtonGadget(1, 70, 10, 120, 20, "Disable ComboBox")
    
For i = 1 To 9
  AddGadgetItem(0, -1, "Eintrag " + Str(i))
Next i
  
SetGadgetState(0, 6)

ComboBoxHandle = GadgetID(0)
ComboBoxEditControlHandle = GetWindow_(ComboBoxHandle, #GW_CHILD)

Repeat
  WindowEvent = WaitWindowEvent()

  If WindowEvent = #PB_Event_Gadget
    If EventGadget() = 1
      If ComboBoxEnabled
        DisableGadget(0, #True)
        SetGadgetText(1, "ComboBox aktivieren")
        EnableWindow_(ComboBoxEditControlHandle, #True)
        ComboBoxEnabled = #False
      Else
        DisableGadget(0, #False)
        SetGadgetText(1, "ComboBox deaktivieren")
        ComboBoxEnabled = #True
      EndIf
    EndIf
  EndIf
Until WindowEvent = #PB_Event_CloseWindow