Combobox Headertext

Für allgemeine Fragen zur Programmierung mit PureBasic.
BSP
Beiträge: 203
Registriert: 01.02.2009 14:04

Combobox Headertext

Beitrag von BSP »

Hallo.

Gibt es eine Möglichkeit,
bei einem nichteditierbarem Comboboxgadget
einen Text in den Kopf zu setzen,
der nicht in der Comboliste steht?

Ich möchte das quasi als Titel für die Liste benutzen.
Und der Titel soll eben nicht in der Liste stehen.

Vielen Dank schon mal im Voraus.
Gruß: BSP

Ups: Glatt vergessen.
PB 4.51 Window Vista.
PB 5.31 (x86) & (x64) Win10
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Combobox Headertext

Beitrag von RSBasic »

So direkt ist es nicht möglich, sondern eher nur mit WinAPI, falls du sowas meinst:

Code: Alles auswählen

EnableExplicit

Define EventID
Define Alternativtext$

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ComboBoxGadget(1,10,10,200,20,0)
  AddGadgetItem(1,-1,"Item 1",0,0)
  AddGadgetItem(1,-1,"Item 2",0,0)
  AddGadgetItem(1,-1,"Item 3",0,0)
  
  Alternativtext$="Deine Nachricht..." 
  PokeS(@Alternativtext$,"Deine Nachricht...",Len(Alternativtext$),#PB_Unicode) 
  SendMessage_(GadgetID(1),#CB_SETCUEBANNER,0,Alternativtext$)
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
BSP
Beiträge: 203
Registriert: 01.02.2009 14:04

Re: Combobox Headertext

Beitrag von BSP »

Spitze.
Ja, Danke. So wars gesucht.
Allerdings läuft das so nur ein mal.
Aber kein Problem.
Nach der Gadgetabfrage den Status einfach auf -1 setzen,
dann geht das wieder.

Code: Alles auswählen

EnableExplicit

Define EventID
Define Alternativtext$

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ComboBoxGadget(1,10,10,200,20,0)
  AddGadgetItem(1,-1,"Item 1",0,0)
  AddGadgetItem(1,-1,"Item 2",0,0)
  AddGadgetItem(1,-1,"Item 3",0,0)
  
  Alternativtext$="Deine Nachricht..." 
  PokeS(@Alternativtext$,"Deine Nachricht...",Len(Alternativtext$),#PB_Unicode) 
  SendMessage_(GadgetID(1),#CB_SETCUEBANNER,0,Alternativtext$)
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
    Select EventID
    
    Case #PB_Event_Gadget
      Select EventGadget()
      
      Case 1
        If Not SendMessage_(GadgetID(1), #CB_GETDROPPEDSTATE, 0, 0)
          Debug GetGadgetText(1)
          SetGadgetState(1,-1)
          SendMessage_(GadgetID(1),#CB_SETCUEBANNER,0,Alternativtext$)
        EndIf
        
      EndSelect
      
    EndSelect
  ForEver
EndIf
Gruß & Dank : BSP
PB 5.31 (x86) & (x64) Win10
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Combobox Headertext

Beitrag von RSBasic »

Ja, es liegt daran, dass diese Nachricht ein Alternativtext ist. D.h. der Text erscheint nur dann, wenn nichts ausgewählt wurde. Wenn man aber bereits einen Eintrag ausgewählt hat, kann man aber nicht mehr dafür sorgen, dass man einen "leeren" (=keinen) Eintrag auswählt, sondern nur die Vorhandene. Also musst du, wie du bereits erkannt hast, die Auswahl manuell mit "-1" zurücksetzen. :wink:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
dige
Beiträge: 1247
Registriert: 08.09.2004 08:53

Re: Combobox Headertext

Beitrag von dige »

mmmmh, also mit PB4.6 ist da nix zu sehen...
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
Shardik
Beiträge: 752
Registriert: 25.01.2005 12:19

Re: Combobox Headertext

Beitrag von Shardik »

dige hat geschrieben:mmmmh, also mit PB4.6 ist da nix zu sehen...
Das liegt nicht an PB 4.60 Beta 3, sondern wahrscheinlich an Deiner Windows Version.
Ich tippe darauf, daß Du das Beispiel unter Windows XP getestet hast. Und dort ist
wirklich nichts zu sehen, da CB_SETCUEBANNER erst ab Windows Vista vorhanden ist:
MSDN hat geschrieben:Minimum operating systems: Windows Vista
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Combobox Headertext

Beitrag von RSBasic »

Shardik hat geschrieben:
MSDN hat geschrieben:Minimum operating systems: Windows Vista
Ach wie blöd. :| Dachte, es wäre ebenfalls ab Windows XP, wie bei: EM_SETCUEBANNER
Schade. Vielleicht finde ich eine andere Möglichkeit, die auch unter WinXP funktioniert, wenn ich Zeit habe.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten