![]() |
Re: ComboBox-Liste anzeigen ohne ComboBox
Nimm ne Listbox und fülle sie mit deinen Daten. Mach sie unsichtbar.
Bei Rechtsklick positionierst du sie unter der Maus (X und Y auf Left und Top - auf den Screen umrechnen nicht vergessen) und machst sie sichtbar. Unsichtbar machen kannst du sie auf ItemChange. Fertig. Alternativ plazierst du sie auf einem Form. Dem Form nimmst du die Titelleiste weg. Dann hast du den selben effekt wie oben, kannst die Listbox aber auf dem ganzen Desktop anzeigen. Über das Form-Objekt kannst du dann von deiner App mit deinem Konstrukt interagieren und notfalls hat sie auch noch ein Handle. Wie? Das ist unsauber? Stimmt vielleicht... Alle anderen Lösungen auch. ;) Gruß, Toni |
Re: ComboBox-Liste anzeigen ohne ComboBox
@Alaitoc:
zunächst einmal danke für Deine Anteilnahme. Nur denke ich, das ein Handle einer Canvas (HDC) doch etwas anders ist als ein Handle eines Fensters (HWND). Und ich dachte da eigentlich daran, das man an diesen Handle ran kommt, der auch intern hier verwendet wird:
Delphi-Quellcode:
Hier wird wohl irgendwie ein Handle verwendet für ein DropDownWindow (FDropHandle). Aber ich weiß auch nicht ob es die richtige Stelle ist und zum zweiten ist der Handle im Protected bereich deklariert. Aber egal, denn ich gehe zunächst den Weg des geringsten Widerstandes wie ich es schon beschrieben hatte und ähnlich wie es Tonic1024 auch meinte -> selber nachbauen was machen braucht.
procedure TCustomCombo.AdjustDropDown;
var Count: Integer; begin Count := ItemCount; if Count > DropDownCount then Count := DropDownCount; if Count < 1 then Count := 1; FDroppingDown := True; try SetWindowPos(FDropHandle, 0, 0, 0, Width, ItemHeight * Count + Height + 2, SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_NOREDRAW or SWP_HIDEWINDOW); finally FDroppingDown := False; end; SetWindowPos(FDropHandle, 0, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_SHOWWINDOW); end; Danke an alle, Greez, Chris |
Re: ComboBox-Liste anzeigen ohne ComboBox
Hm habe doch noch was gefunden, vll hilft es dir ja noch:
![]() MfG Alaitoc |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz