Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi alten Wert im TEdit-Feld anzeigen (https://www.delphipraxis.net/70356-alten-wert-im-tedit-feld-anzeigen.html)

Q-Dog 29. Mai 2006 10:39


alten Wert im TEdit-Feld anzeigen
 
Hallo,

ich hab die Forensuche schon benutzt, aber leider nichts gefunden.

Ich zergrübel mir grad den Kopf über ein scheinbar einfaches Problem, komm aber absolut nicht auf die Lösung.

Also, ich möchte ganz einfach den alten Wert (der Zwischendurch auf '1' geändert wird) im Edit-Feld anzeigen lassen.

Delphi-Quellcode:
var AktText: string;
begin
if Gebaeude.ItemIndex = 0 then
  begin
    AktText := HHStufe.Text; // der erfolglose Versuch das Problem zu lösen
    HHStufe.Text := '1';
    HHStufe.Visible := false;
  end
else
  begin
    HHStufe.Text := AktText;
    HHStufe.Visible := true;
  end;
end;
Es geht um eine Combobox.
Das Edit-Feld soll den Wert von der Variable AktText haben, es sei denn Gebaeude.ItemIndex = 0, dann soll das Edit-Feld den Wert 1 haben.
Wenn ich jetzt zum nächsten Item runterscrolle ist aber immernoch der Wert 1 da, anstatt der Wert davor.

Beispiel.
HHStufe.Text ist '5'
Gebaeude.ItemIndex = 0 wird ausgewählt
HHStufe.Text ist dann '1'
Gebaeude.ItemIndex = 1 wird nun ausgewählt
HHStufe.Text ist immernoch '1', soll aber wieder '5' sein.


Klingt einfach, ich komm aber einfach nicht drauf :wall:



Mfg Q-Dog

RavenIV 29. Mai 2006 11:00

Re: alten Wert im TEdit-Feld anzeigen
 
musst Du halt mal durch-debuggen, ob der else-Zweig überhaupt durchlaufen wird...

Q-Dog 29. Mai 2006 11:03

Re: alten Wert im TEdit-Feld anzeigen
 
jo wird er, visible klappt ja soweit.

Das Problem ist nur, dass die Variable AktText keinen Wert besitzt, sobald ItemIndex <> 0 ist (der Wert wird ja bei =0 zugewiesen)

Aber ich find einfach keine Möglichkeit das zu umgehen.



Mfg Q-Dog

marabu 29. Mai 2006 11:33

Re: alten Wert im TEdit-Feld anzeigen
 
Das Problem könnte eine fehlende bzw. falsche Initialisierung der Variable AktWert sein. Schade, dass du nicht schreibst, wann der von dir gezeigte Code ausgeführt wird. Ich vermute, dass er zum event handler OnChange() der ComboBox gehört. Die Variable AktWert ist dann eine lokale Variable und der Inhalt überlebt höchstens zufällig zwischen zwei Ausführungen des Codes. Alles Raterei, weil du die wichtigen Informationen unterschlägst.

Freundliche Grüße vom marabu

HuxXx 29. Mai 2006 11:54

Re: alten Wert im TEdit-Feld anzeigen
 
Mhmm..., irgendwie versteh ich dein Problem nicht so ganz.
In welchen Event-Handler schreibst du es denn?
Wird ein Code überhaupt ausgeführt?
Probiere es mal mit einer MessageDlg aus.

Achja, dein Fehler ist, dass AktText den Wert '' bekommt, weil du hast zuerst AktText den Wert des Leeren Edits zugewiesen, und erst danach dem Edit den Wert '1'...

Delphi-Quellcode:
var AktText: string;
begin
if Gebaeude.ItemIndex = 0 then
  begin
    HHStufe.Text := '1';  // Hab mal die beiden hier vertauscht.
    AktText := HHStufe.Text; // nur so bekommt akttext den Wert '1'
    HHStufe.Visible := false;
  end
else
  begin
    HHStufe.Text := AktText;
    HHStufe.Visible := true;
  end;
end;
Greetz by Hux :dp:

Q-Dog 29. Mai 2006 12:13

Re: alten Wert im TEdit-Feld anzeigen
 
Zitat:

Zitat von marabu
Das Problem könnte eine fehlende bzw. falsche Initialisierung der Variable AktWert sein. Schade, dass du nicht schreibst, wann der von dir gezeigte Code ausgeführt wird. Ich vermute, dass er zum event handler OnChange() der ComboBox gehört. Die Variable AktWert ist dann eine lokale Variable und der Inhalt überlebt höchstens zufällig zwischen zwei Ausführungen des Codes. Alles Raterei, weil du die wichtigen Informationen unterschlägst.

Freundliche Grüße vom marabu

oh sry, hab ich vergessen mitzukopieren, es ist das OnClick Ereignis, nicht OnChange.


@HuxXx,
ich habs mit absicht davor geschrieben, da AktText ja nicht '1' bekommen soll, sondern den Wert der vorher im Edit-Feld stand (z.B. 5 / 7 / 15 was auch immer).



Mfg Q-Dog

marabu 29. Mai 2006 12:32

Re: alten Wert im TEdit-Feld anzeigen
 
Zitat:

Zitat von Q-Dog
es ist das OnClick Ereignis, nicht OnChange.

Der Fehler bleibt der selbe - eine (falsch initialisierte) lokale Variable. Schau mal genau hin.

marabu

Q-Dog 29. Mai 2006 12:40

Re: alten Wert im TEdit-Feld anzeigen
 
ja du meinst, dass der Inhalt der Variable nur für die nächsten 2 Zeilen besteht, was ja auch logisch ist.
Doch dies ist ja genau meine Frage, ich komm absolut auf keine Möglichkeit dies zu ändern.

Wenn ichs vor die Schleife schreibe, ist der Inhalt weiterhin '1'.
Wenn ichs in die If-Schleife schreib, stirbt sie.
Wenn ichs in die Else-Schleife pack, ist es logischerweise wieder '1'.



Mfg Q-Dog

Steve 29. Mai 2006 12:45

Re: alten Wert im TEdit-Feld anzeigen
 
Hi,

das Problem ist ganz einfach, dass es eine lokale Variable ist und somit jedesmal, wenn OnClick bzw eben die entsprechende Prozedur aufgerufen wird, diese neu initalisiert wird. Pack die Variable in den Private-Abschnitt der entsprechenden Klasse -vermutlich Deine Form- und dann bleibt der Wert der Variablen auch nach Verlassen der Prozedur erhalten.


Gruß
Stephan :dance:

Q-Dog 29. Mai 2006 12:59

Re: alten Wert im TEdit-Feld anzeigen
 
*gegenkopfklatsch*

natürlich, dankeschön :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 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