![]() |
ComboBoxItem auswählen ohne den ComboBox.Text zu verändern
Hi,
ich möchte gern folgendes realisieren: Gegeben ist eine Combobox, in der der User wie in einem Edit Daten eingeben kann. Über das Pulldown soll er dann verschiedene Zustände auswählen können. Diese werden dann über Symbole, die im Editbereich der Combobox zeichnet werden, dargestellt. Der eigentliche Combobox.Text-Inhalt soll dabei aber nicht verändert werden. Bisher hatte ich das mit einem stinknormalen Edit, einem Speedbutton und einem Popupmenu gelöst. Bei dem Projekt würde ich das gerne über eine Combobox allein lösen. Ich habe das einfach mal so versucht:
Delphi-Quellcode:
Dann habe ich zwar im OnChange-Event in FTempValue den ursprünglichen Text stehen, aber nach der Zuweisung setzt die CompboBox trotzdem den ItemIndex.
procedure TTest.cbbTestChange(Sender: TObject);
begin // cbbText.ItemIndex:=-1; //bringt nichts cbbTest.Text:=FTempValue; end; procedure TTest.cbbTestDropDown(Sender: TObject); begin FTempValue:=cbbTest.Text; end; Hat jemand eine Idee, wie ich das lösen könnte? |
AW: ComboBoxItem auswählen ohne den ComboBox.Text zu verändern
Hallo,
vielleicht hilft Dir folgender Code weiter:
Delphi-Quellcode:
Ist nicht gerade eine elegante Lösung, aber es funktioniert. :?
const
WM_MYEVENT = WM_USER + 1; type TForm1 = class(TForm) ComboBox1: TComboBox; procedure ComboBox1DropDown(Sender: TObject); procedure ComboBox1CloseUp(Sender: TObject); private { Private-Deklarationen } FCombo: string; procedure MyEvent(var Msg: TMessage); Message WM_MYEVENT; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ComboBox1CloseUp(Sender: TObject); begin ComboBox1.ItemIndex:=-1; PostMessage(Handle,WM_MYEVENT,0,0); end; procedure TForm1.ComboBox1DropDown(Sender: TObject); begin FCombo:=ComboBox1.Text; end; procedure TForm1.MyEvent(var Msg: TMessage); begin ComboBox1.Text:=FCombo; end; |
AW: ComboBoxItem auswählen ohne den ComboBox.Text zu verändern
Danke. Ja, nicht schön, aber funktionell.
Alternative wäre mir eine spezielle, eigenen Komponente zu schreiben. Von daher gefällt mir die "schnelle" Lösung doch ganz gut. (Zumal ich's nur an einer Stelle benötige). |
AW: ComboBoxItem auswählen ohne den ComboBox.Text zu verändern
Hallo,
mir ist gerade eine unschöne Sache bei meinem Beispiel aufgefallen. :? Wenn man in der gestarteten Anwendung mit dem Mauszeiger direkt auf das Editierfeld der Combobox geht und dann das Scrollrad der Maus bewegt, werden die einzelnen Item-Einträge im Editierfeld angezeigt und der zuvor eingegebene Text ist futsch. Da weis ich jetzt auch keine Lösung zu. :( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:40 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