![]() |
ComboBox-Liste anzeigen ohne ComboBox
Hallo,
irgendwo hatte ich es mal gesehen, das man die DropDownListe einer ComboBox aufrufen konnte ohne das die ComboBox sichtbar war / wurde. Es gibt ja das hier:
Delphi-Quellcode:
Beides macht aber die ComboBox selber sichtbar. Ich brauche aber nur die AuswahlListe der ComboBox an der Stelle an der User klickt. Ein Popup-Menü könnte zu groß / lang werden, daher wollte ich so ein DropDown-Liste einer ComboBox zur Auswahl verwenden. Aber ich finde das nicht mehr :wall:
ComboBox1.Perform(CB_SHOWDROPDOWN, Integer(True), 0);
// bzw. ComboBox1.DropDown := TRUE; Weiß da jemand was? THX, Chris |
Re: ComboBox-Liste anzeigen ohne ComboBox
Du könntest die Liste auslesen und ein Popupmenü zur Anzeige verwenden
|
Re: ComboBox-Liste anzeigen ohne ComboBox
Hallo mkinzler,
Zitat:
Aber danke. Greez, Chris |
Re: ComboBox-Liste anzeigen ohne ComboBox
ist dann nicht eher TListBox was für dich ?
|
Re: ComboBox-Liste anzeigen ohne ComboBox
Hallo,
Zitat:
Bei meinem Problem gibt viele Einträge - wie bei einer Liste.Diese Einträge erzeuge ich derzeit über Frames. Bei diesen Einträge soll man die Möglichkeit haben diese anzupassen. Hier soll aber keine Freitext-Eingabe erstellt werden sondern eine Auswahl verschiedener vordefinierter Elemente. Dies können nur 2 sein aber eben auch sehr viele. Ein Beispiel wie ich mir es Wünsche ist z.B. die ShortCut-Liste im OI. Da geht so eine ComboBox-Liste auf, man wählt aus und dann steht der Text des ShortCuts in dem Feld drinne. Bei mir ist es ein Button der eine Caption hat und den Wert anzeigt. Drücke ich den Button, wird die entsprechend eingestellte Aktion ausgelöst. Neben dran ist ein Kleiner Button (Pfeil nach unten) zum ändern der Aktion des Buttons. Wird dieser gedrückt, soll der Nutzer die entsprechende Aktion auswählen können aus einer solchen Liste. Nun, ich werde mir Wohl durch ein rahmenloses Fenster mit einer Listbox behelfen und dem Fenster noch ein bisschen Funktionalität mit geben, damit es sich so verhält wie eine Liste von ner ComboBox. Aber mich würde das trotzdem interessieren wie das ging, das man die Liste der ComboBox aufruft ohne die ComboBox an zu zeigen. Da gab es was - ich finde es nur nicht mehr :evil: Greez, Chris |
Re: ComboBox-Liste anzeigen ohne ComboBox
Zitat:
Wie soll denn das bitte gehen?? |
Re: ComboBox-Liste anzeigen ohne ComboBox
Zitat:
Zitat:
Greez, Chris |
Re: ComboBox-Liste anzeigen ohne ComboBox
Ich behaupte einfach mal es geht nicht, da die Box zum Ausklappen ja ein Teil der Komponente ist
und halt mitgezeichnet wird. Wenn also die Komponente nicht sichtbar ist, kann auch die Box zum Ausklappen nicht angezeigt werden. Bei meiner Komponente wo ich ein Fenster zum Darstellen des Treeviews meiner Combobox nutze, würde es theorethisch gehen...da es halt in gewisser Weise eine eigenständige Komponente ist und nicht ein Bestandteil der Komponente. Hoffe es war annährend verständlich ^_° MfG Alaitoc |
Re: ComboBox-Liste anzeigen ohne ComboBox
Nun ja,
ich gehe eigentlich davon aus, dass diese Liste die da angezeigt wird ein eigenen Fensterhandle hat. Den will ich irgendwie bekommen und dann nur dieses "Fenster" anzeigen. Und ich hatte die Hoffnung, dass dieses Fenster wie von alleine verschwindet wie man es kennt bei einer ComboBox und ich dann die Combobox nur noch "Fragen" muss welcher Eintrag Selektiert ist :-( Das war die Idee. Greez, Chris |
Re: ComboBox-Liste anzeigen ohne ComboBox
Dafür ist diese Komponente halt einfach nicht gedacht ;)
Delphi-Quellcode:
Hier sieht man das das Handle vom Canvas der Combox genommen wird. ( Bzw das Handle wird benutzt das dem Canvas zugewiesen wird, aber läuft ja im Endeffekt auf das gleiche hinaus ... )
procedure TCustomComboBox.CNDrawItem(var Message: TWMDrawItem);
var State: TOwnerDrawState; begin with Message.DrawItemStruct^ do begin State := TOwnerDrawState(LongRec(itemState).Lo); if itemState and ODS_COMBOBOXEDIT <> 0 then Include(State, odComboBoxEdit); if itemState and ODS_DEFAULT <> 0 then Include(State, odDefault); FCanvas.Handle := hDC; // <----------------------- Handle FCanvas.Font := Font; FCanvas.Brush := Brush; if (Integer(itemID) >= 0) and (odSelected in State) then begin FCanvas.Brush.Color := clHighlight; FCanvas.Font.Color := clHighlightText end; if Integer(itemID) >= 0 then DrawItem(itemID, rcItem, State) else FCanvas.FillRect(rcItem); if odFocused in State then DrawFocusRect(hDC, rcItem); FCanvas.Handle := 0; end; end; Ne Listbox ist da im Endeffekt wohl einfach besser für geeignet :) MfG Alaitoc |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 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