Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Combobox Problem
Ziltoid - Sa 24.11.07 23:13
Titel: Combobox Problem
Ich habe ein Problem bei der unten stehenden Prozedur, diese soll sAdd an erster Stelle in die Dropdown Liste einfügen und die Eigenschaft Text soll auch noch mit sAdd gesetzt werden. Das Problem ist sobald "ComboBox.Items.Delete(i1)" ausgeführt wird lässt sich Text nicht mehr ändern und wird zu '' (leere string).
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure ComboBoxReplace(ComboBox:TComboBox; sAdd:String); var i1,i2 :Integer; begin for i1:= ComboBox.Items.Count-1 downto 0 do if AnsiCompareText(ComboBox.Items.Strings[i1],sAdd) = 0 then ComboBox.Items.Delete(i1); ComboBox.Items.Insert(0,sAdd); ComboBox.Text:=sAdd; end; |
Für ein paar Tipps wäre ich dankbar
EDIT: ComboBox:=sAdd --> ComboBox.Text:=sAdd; Sry war ein Tippfehler
Lannes - So 25.11.07 00:34
Hallo,
bin etwas erstaunt das der Code bei Dir compiliert werden kann.
ComboBox:=sAdd; :arrow: ComboBox.Text := sAdd;
Ansonsten funktioniert es eigentlich.
Delete - So 25.11.07 01:36
Kann es gerade leider nicht testen, daher eine Vermutung. Aber ich hoffe ich kann dir trotzdem helfen.
Wenn ich richtig liege, wird die ComboBox durch das Löschen eines Items neu gezeichnet und DADURCH wird auch dessen Textfeld gelöscht. Mein erster Gedanke war, dass das Neuzeichnen erst nach dem Beenden der Prozedur ausgelöst wird und dadurch der neue Wert für Text nicht angenommen wird. Aber da die Eigenschaft Text bei Dir im Nachhinein zugewiesen wird, sollte es ein weiteres Neuzeichnen auslösen und dieses sollte dann den Text in die ComboBox schreiben.
Möglichkeiten:
1. Setze nach "ComboBox.Delete()" ein "ComboBox.ReFresh" ein. Dies sollte das 1. Neuzeichnen VOR dem Beenden der Prozedur erzwingen. Jetzt bin ich aber selber gespannt.
2. Anstatt "ComboBox.Text := sAdd" schreibe "ComboBox.ItemIndex := 0", damit wird das erste (ersetzte) Item auch gleich ausgewählt.
Ziltoid - So 25.11.07 02:41
Zitat: |
2. Anstatt "ComboBox.Text := sAdd" schreibe "ComboBox.ItemIndex := 0", damit wird das erste (ersetzte) Item auch gleich ausgewählt. |
Danke funktioniert so wie beschrieben =)
Delete - So 25.11.07 03:08
Ich möchte interessehalber noch mal nachhaken. Die 1. Möglichkeit hat nicht funktioniert?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!