Combobox-Gadget und Dropdown-arrow

Anfängerfragen zum Programmieren mit PureBasic.
Angelo
Beiträge: 102
Registriert: 20.02.2010 14:47
Wohnort: Berlin

Combobox-Gadget und Dropdown-arrow

Beitrag von Angelo »

Kann man eigentlich beim Combobox-Gadget die Dropdown-Schaltfläche eliminieren oder zumindest deaktivieren? Habe dazu leider nichts gefunden.
PB 5.50; Win 7
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Combobox-Gadget und Dropdown-arrow

Beitrag von c4s »

StringGadget()?
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Re: Combobox-Gadget und Dropdown-arrow

Beitrag 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
Antworten