Delphi - TComboBox legördülő listájának a mérete

forráskód letöltése
Egy TComboBox komponens legördülő listájának a méretét egyszerűen meghatározhatjuk, csupán meg kell kérdeznünk az objektumtól ezt a méretet. Mivel viszont erre nincs lehetőségünk a Delphi TComboBox komponensen belül, ezért egy apró trükköt kell alkalmaznunk. A példaprogramban arra is láthatunk megoldást, hogy hogyan tudjuk programból legördíteni a TComboBox listáját. Egy TComboBox komponens legördülő listájának a méretét egyszerűen meghatározhatjuk, csupán meg kell kérdeznünk az objektumtól ezt a méretet. Mivel viszont erre nincs lehetőségünk a Delphi TComboBox komponensen belül, ezért egy apró trükköt kell alkalmaznunk. A példaprogramban arra is láthatunk megoldást, hogy hogyan tudjuk programból legördíteni a TComboBox listáját.

Ha e komponensnek küldünk egy CB_GETDROPPEDCONTROLRECT üzenetet, akkor pontosan a kívánt méretet fogja szolgáltatni TRect típusban a képernyő koordinátákra vonatkoztatva.

Ezt az értéket viszont csak az első legördítés után tudja a komponens szolgáltatni. Ezért a program indításakor CB_SHOWDROPDOWN üzenetet elküldve legördítjük, majd rögtön vissza is csukjuk a listát. Ezek után már ki tudjuk olvasni a szükséges információt.

Mivel az adatokat a képernyő koordináta rendszerében kapjuk meg, ezért a felhasználásuk előtt azokat konvertálnunk kell az adott ablak koordináta rendszerébe. Ehhez a ScreenToClient függvényt tudjuk felhasználni.

A Form OnPaint eseményénél, mely minden olyan esetben létrejön, mikor a Form területét ki kell rajzolni, meg tudjuk jeleníteni a legördülő lista által elfoglalt terület körvonalát.