Prüfen, ob Combobox ausgeklappt.

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

Prüfen, ob Combobox ausgeklappt.

Beitrag von BSP »

Hallo.
Folgendes Prg aus der WinAPILibrary
funktioniert in PB4.51, aber nicht mehr in PB4.60 (aktueller Download)

Kann das jemannd bestätigen
und weiss jemannd Abhilfe?

Gruß & Dank:
Bernd

Code: Alles auswählen

EnableExplicit

Define EventID

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ComboBoxGadget(1,10,10,100,20,0)
  AddGadgetItem(1,-1,"Test-Eintrag")
  TextGadget(2,10,50,200,20,"ComboBox ist eingeklappt.",0)
  
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
  Select EventGadget()
    Case 1
      If SendMessage_(GadgetID(1), #CB_GETDROPPEDSTATE, 0, 0)
        SetGadgetText(2,"ComboBox ist ausgeklappt.")
      Else
        SetGadgetText(2,"ComboBox ist eingeklappt.")
      EndIf
  EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf
PB 5.31 (x86) & (x64) Win10
Benutzeravatar
dige
Beiträge: 1247
Registriert: 08.09.2004 08:53

Re: Prüfen, ob Combobox ausgeklappt.

Beitrag von dige »

Beim ausklappen wird kein Event durchgereicht. Du musst entweder
per Callback die Message abfangen oder den Status periodisch
prüfen:

Code: Alles auswählen

EnableExplicit

Define EventID

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ComboBoxGadget(1,10,10,100,20,0)
  AddGadgetItem(1,-1,"Test-Eintrag")
  TextGadget(2,10,50,200,20,"ComboBox ist eingeklappt.",0)
  
  Repeat
    EventID=WaitWindowEvent(1000)
    
    If SendMessage_(GadgetID(1), #CB_GETDROPPEDSTATE, 0, 0)
      SetGadgetText(2,"ComboBox ist ausgeklappt.")
    Else
      SetGadgetText(2,"ComboBox ist eingeklappt.")
    EndIf
    
  Until EventID = #PB_Event_CloseWindow
EndIf
"Papa, ich laufe schneller - dann ist es nicht so weit."
BSP
Beiträge: 203
Registriert: 01.02.2009 14:04

Re: Prüfen, ob Combobox ausgeklappt.

Beitrag von BSP »

Danke, dige.
Ja, so funktionierts.
Merkwürdig ist das aber trotzdem.
Denn unter PB4.5 funktioniert das noch.
Erst der Compiler 4.60 macht da nicht mit.

Dann muss das bitte in der WinAPILibrary auch geändert werden.
(Schade, hatte ich doch damals gedacht, auch einen kleinen Beitrag geleistet zu haben. Smile).

Gruß: Bernd
PB 5.31 (x86) & (x64) Win10
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Prüfen, ob Combobox ausgeklappt.

Beitrag von RSBasic »

Habs notiert. Wird #Lieblingswort geändert

#Lieblingswort = "demnächst"
<)
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: Prüfen, ob Combobox ausgeklappt.

Beitrag von dige »

Naja, eigentlich sollte PB das Event durchreichen.
Habs mir mal mit PB 4.50 angeschaut, da kommt ein:

EventType() = 7 beim ausklappen
EventType() = 8 beim einklappen

Ich werde das als Bug im englischen Forum posten...

PS: Vermutlich ist das im Zuge der erweiterten Combobox
mit Bildern (#PB_ComboBox_Image) weggefallen oder
nicht mehr möglich?
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Prüfen, ob Combobox ausgeklappt.

Beitrag von ts-soft »

Ich denke, das wegen der neuen Crossplattform events, musste das Gadget gesubclassed werden, so das die API messages nicht
mehr im EventLoop ankommen. Ist Imho ein akzeptabler Kompromiss. Wer die Events benötigt, sollte selber Subclassen.
Also definitiv kein Bug.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten