edit=panel

ice_thunder

Grünschnabel
Ich bin gerade dabei einen taschenrechner zu schreiben und ich möchte das ein panel(name=panel1) simultan anzeigt was im editfeld(name=edit1) geschrieben wird. Das war auch kein großes problem. Nun kann es aber sein das im panel1 schon was steht und der text einfach hinzugefügt werden soll das hab ich dan so gemacht:

procedure TForm1.Edit1Change(Sender: TObject);
begin

panel1.Caption:=panel1.Caption+edit1.Text;

end;

aber jetzt hab ich das problem das, wenn ich eine 2 stellige zahl in das edit feld eintrage er insgesamt drei zahlen in das panel schreibt. Z.B. ich schreibe 23 in das editfeld und im panel addiert er zuerst die 2 und wenn ich die drei eingegeben habe addiert er 23 also insgesamt 223 und nicht 23. Gibt es irgendeine Möglichkeit zu verhindern das er die 2 zweimal schreibt?
 

Thomas Kuse

Erfahrenes Mitglied
Du solltest doch bei einem Taschenrechner auf Knöpfe drücken oder nicht?
Ohne Komma's rechnet man dann das Panel * 10 + Wert des Knopfes.
 

ice_thunder

Grünschnabel
ich habe auch knöpfe drin, aber wenn man will kann man die zahlen auch per Hand eingeben.
ich bin aber gerade auf eine idee gekommen wie es klappen könnte, das werd ich jetzt versuchen und wenns nicht klappt melde ich mich nochmal
 

ice_thunder

Grünschnabel
Ok, es hat geklappt. Für alle die dasselbe problem ahben hier der queltext:


procedure TForm1.Edit1Change(Sender: TObject);
begin
if length(edit1.text)>1 then
begin
panel1.caption:= Copy(panel1.caption, 1, Length(panel1.caption) -(length(edit1.text)-1));
panel1.Caption:=panel1.Caption+edit1.Text;
end
else
panel1.Caption:=panel1.Caption+edit1.Text;
end;