Einzelnen Beitrag anzeigen

DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#1

tedit.onchange schluckt ersten Wert bei Iteration

  Alt 2. Apr 2012, 20:51
Hi,
ein Problem beim Iterieren bei Nutzung von onchange-Ereignis:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    button1:tbutton;
    edit1:tedit;
    memo1:tmemo;// nur zur Darstellung
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure Edit1Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);

  end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
memo1.lines.Add(tedit(sender).text)
end;

procedure TForm1.Button1Click(Sender: TObject);
 var i:integer;
begin
    if tbutton(sender).tag =0 then
      for I := 1 to 3 do
         begin
// memo1.lines.Add(inttostr(i));
         edit1.text:=inttostr(i)
         end
    else
      for I := 3 downto 1 do
       begin
// memo1.lines.Add(inttostr(i));
       edit1.text:=inttostr(i);

       end;

memo1.lines.Add('_____');

if tbutton(sender).tag=0 then tbutton(sender).tag:=1 else tbutton(sender).tag:=0;
end;
Beim Betätigen des Tbutton wird der jeweils erste Wert der Iteration nicht bearbeitet in onchange - d.h. onchange wird gar nicht gerufen.
Verändert man Tag nicht, werden immer alle Werte bearbeitet.

Das direkte Eifügen mit "memo1.lines.Add(inttostr(i))" führt zum richtigen Ergebnis.

Auch wenn man zwei tbutton nutzt - einen für die "to"-, den anderen für die "downto"-Iteration passiert beim Wechseln zwischen diesen Buttons das Gleiche!

Woran liegt das ?


MfG Uwe

Geändert von DrUArn ( 2. Apr 2012 um 20:53 Uhr)
  Mit Zitat antworten Zitat