Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ComboBox.click und voriger Text - wie? (https://www.delphipraxis.net/129209-combobox-click-und-voriger-text-wie.html)

Mattze 14. Feb 2009 16:14


ComboBox.click und voriger Text - wie?
 
Hi,

eigentlich dachte ich, das wäre problemlos. Aber...

Wenn ich einen Eintrag der Combobox anclicke, so wird dieser Eintrag als Text zurückgeliefert.
Ich brauche aber im Click den Eintrag, der VORHER als Text ausgewählt war.
Ist das möglich?
(OnSelect und OnChange scheinen das auch nicht zu machen. Oder habe ich da was übersehen?)

Gruß
Mattze

mkinzler 14. Feb 2009 16:16

Re: ComboBox.click und voriger Text - wie?
 
Merke dir den Index des vorher gewählten Eintrages manuell in einer Variablen

Mattze 14. Feb 2009 16:27

Re: ComboBox.click und voriger Text - wie?
 
Hallo,

na, das war ja eine schnelle Antwort.
Die Idee hatte ich natürlich auch. Fragt sich nur, wo ich mir die merken muss.
Ich dachte, dass es da vielleicht einen direkten Weg gäbe, den ich übersehen habe. Wäre einfach eleganter als mit Zwischenvariable.

Gruß
Mattze

Helmi 14. Feb 2009 17:06

Re: ComboBox.click und voriger Text - wie?
 
Hallo,

ich stand mal vor dem gleichen Problem und so wie es mkinzler schon richtig sagte, du musst dir den letzten Index speichern und zwar so:

Delphi-Quellcode:
{...}
private
  letzte_Auswahl: Integer;

{...}
procedure TMainForm.ComboBox_Select(Sender: TObject);
var
  S_alt: String;
  S_neu: String;

begin
  //letzte Auswahl
  S_alt := ComboBox.Strings[letzte_Auswahl];

  ShowMessage(Format('alter Text: %s', [S_alt]));

  S_neu := ComboBox.Text;

  ShowMessage(Format('neuer Text: %s', [S_neu]));

  //letzte Auswahl speichern
  letzte_Auswahl := ComboBox.ItemIndex;
end;
Dürft kein Fehler drin sein...

Ach ja - ich setz im OnCreate der Form immer noch die Variable, hier "letzte_Auswahl" auf 0, damit sie definiert ist.

Mattze 14. Feb 2009 19:00

Re: ComboBox.click und voriger Text - wie?
 
Hallo,

vielen Dank.
Das Problem war ja nur, an welcher Stelle des Programms das eingestellt werden muss.
(In der Onselect ging das nicht.)
Inzwischen habe ich aber eine ganz einfache Lösung in der anderen Komponente, die das braucht, gefunden.
Da gibt es genau das richtige Ereignis dafür!

Gruß
MJattze

PS: Ähh... Kann man den itemindex im OnDropDown vorgeben bzw. überhaupt vorgeben. Will bei mir nicht. Sobald ich die Liste öffne, wird der erste Eintrag markiert und nicht der, der auch im Text steht.
(Oder doch besser ein neuer Thread? Ist ja eine grundsätzlich andere Frage.)

Dunkel 14. Feb 2009 19:05

Re: ComboBox.click und voriger Text - wie?
 
Zitat:

Zitat von Helmi
du musst dir den letzten Index speichern und zwar so:

Delphi-Quellcode:
{...}
private
  letzte_Auswahl: Integer;
{...}

Warum extra eine neue Variable anlegen wenn jede (?) Komponente eine Tag-Eigenschaft besitzt, in der man (richtig gecastet) so ziemlich alles ablegen kann?!

Helmi 14. Feb 2009 19:24

Re: ComboBox.click und voriger Text - wie?
 
Zitat:

Zitat von Dunkel
Warum extra eine neue Variable anlegen wenn jede (?) Komponente eine Tag-Eigenschaft besitzt, in der man (richtig gecastet) so ziemlich alles ablegen kann?!

Hast recht - Tag kann man auch verwenden!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz