SWT: Liste einer Combo automatisch öffnen

Codemeier

Grünschnabel
Hallo!

Ich habe folgendes Problem: Ich möchte gerne in einer Combo während der Texteingabe die DropDown-Liste automatisch mit passenden Items füllen und so dem Benutzer die Eingabe erleichtern. Das mit dem automatischen befüllen der Liste funktioniert auch schon einwandfrei. Nur finde ich leider keine Möglichkeit, sie automatisch anzuzeigen. Jetzt habe ich mir gedacht, dass das vielleicht mit einem künstlich erzeugten MouseEvent funktionieren könnte (das dann praktisch einen Mausklick auf den DropDown-auslösenden Button simuliert). Doch hier komme ich auch nicht weiter, weil ich nicht weiß, wie man ein solches MouseEvent an ein Widget weitergibt. :(

Ich hoffe es kann mir jemand helfen!
 
Zuletzt bearbeitet:
Kann mir wirklich niemand weiterhelfen? Es muss doch irgendwie möglich sein, die Drop-Down Liste einzublenden, da es ja bei einem Mausklick auch funktioniert. D.h. es muss doch irgendeinen API-Aufruf an die Combo geben, der die Liste erscheinen lässt, oder?
Leider kenne ich mich mit SWT noch nicht so aus, aber vielleicht gibt es ja jemanden hier, der mir ein bisschen auf die Sprünge helfen könnte ;).
Vielen Dank im Voraus!
 
Hi,

leider etwas spät gesehen, aber falls Du es nicht ohnehin schon selber gefunden hast:

HTML:
 import org.eclipse.swt.widgets.*;
 import org.eclipse.swt.internal.win32.OS;
 
 public static void showPopup(Combo combo, boolean show) {
     if (!combo.isDisposed()) {
       OS.SendMessage(combo.handle, OS.CB_SHOWDROPDOWN, show ? 1 : 0, 0);
     }
 
   }
 
   public static boolean isPopupShowing(Combo combo) {
     boolean result = false;
     if (!combo.isDisposed()) {
       result = (OS.SendMessage(combo.handle, OS.CB_GETDROPPEDSTATE, 0,
                                0) != 0);
     }
     return result;
   }
Anwendung wie folgt: showPopup(meineCombo, !isPopUpShowing(meineCombo));

Cheers,

Snake
 
Danke für den Tipp! Ich habe es jetzt schon anders gelöst, in dem ich mir so eine Combo selber aus Textfeld, Button und Popup-Menü zusammengebaut habe. Das hat den Vorteil, dass es plattformunabhängig bleibt, aber dein Lösungsansatz wäre natürlich vom Programmieraufwand her viel einfacher und schneller zu implementieren.

Danke,

Codemeier
 
Zurück