Seite 1 von 1

Prüfen, ob Combobox ausgeklappt.

Verfasst: 04.06.2012 23:40
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

Re: Prüfen, ob Combobox ausgeklappt.

Verfasst: 05.06.2012 07:42
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

Re: Prüfen, ob Combobox ausgeklappt.

Verfasst: 05.06.2012 12:45
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

Re: Prüfen, ob Combobox ausgeklappt.

Verfasst: 05.06.2012 14:16
von RSBasic
Habs notiert. Wird #Lieblingswort geändert

#Lieblingswort = "demnächst"
<)

Re: Prüfen, ob Combobox ausgeklappt.

Verfasst: 05.06.2012 14:55
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?

Re: Prüfen, ob Combobox ausgeklappt.

Verfasst: 05.06.2012 15:36
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.