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