Taschenrechner in der grafischen Oberfläche
-
Hallo leute. haben mit der GUI des Borland C++ 6.0 in der schule angefangen.
Am Anfang sollten wir einen Taschenrechner mit 2 eingabefeldern erstellen wo man über die Tastatur die Ziffern einträgt. Da ich ein bisschen neugierig geworden bin habe ich mir mal eine Oberfläche gemacht und zwar mit Buttons von 0-9. Mein problem isses nun wenn ich auf einen dieser buttons klicke soll in einem EDIT Feld z.b. eine 1 erscheinen.
Bekomme es aber nicht hin das ich mehr als eine Ziffer eingeben kann also z.b. eine 11 da ich nicht weiß wie ich eine schleife dort einbaue. Mein programm sieht derzeit wiefolgt aus:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::ButtonPlusClick(TObject *Sender) { LabelAusgabe->Caption = EditEingabe1->Text.ToDouble() + EditEingabe2->Text.ToDouble(); LabelOperand->Caption = " +"; return; } //--------------------------------------------------------------------------- void __fastcall TForm1::ButtonExitClick(TObject *Sender) { Close(); return; } //--------------------------------------------------------------------------- void __fastcall TForm1::ButtonResetClick(TObject *Sender) { EditEingabe1->Text = "0"; EditEingabe2->Text = "0"; LabelAusgabe->SetTextBuf(00); return; } //--------------------------------------------------------------------------- void __fastcall TForm1::ButtonMinusClick(TObject *Sender) { LabelAusgabe->Caption = EditEingabe1->Text.ToDouble() - EditEingabe2->Text.ToDouble(); LabelOperand->Caption = " -"; return; } //--------------------------------------------------------------------------- void __fastcall TForm1::ButtonMalClick(TObject *Sender) { LabelAusgabe->Caption = EditEingabe1->Text.ToDouble() * EditEingabe2->Text.ToDouble(); LabelOperand->Caption = " *"; return; } //--------------------------------------------------------------------------- void __fastcall TForm1::ButtonGeteiltClick(TObject *Sender) { LabelAusgabe->Caption = EditEingabe1->Text.ToDouble() / EditEingabe2->Text.ToDouble(); LabelOperand->Caption = " /"; return; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { EditEingabe1->Text = 1; return; } //---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) { EditEingabe1->Text = 1; return; }
Durch diese Funktion wird in das Edit Feld eine 1 eingetragen. wenn ich jedoch nochmals die 1 drücke, erscheint keine weitere 1 sonder die vorhandene 1 wird überschrieben.
wäre echt dankbar wenn mir einer helfen könnte und mir vielleicht ein wenig erläutern könnte, wie ich es hinbekomme das ich auch 11 , 111 usw. machen kann. Hab schon alles ausprobiert was mir eingefallen ist, hat aber leider nichts davon funktioniert *g*
MFG bob_der_Baumeister und schonmal thx
-
EditEingabe1->Text = EditEingabe1->Text + "1";
Dran denken, dass du eine Zahl nicht direkt zu einem String hinzu "addieren" kannst, deshalb die Anführungszeichen um die 1.
-
Joo super danke!! hat mir sehr geholfen. glaube auf das plus wäre ich nie gekommen
Hätte da aber noch eine frage *g*
Und zwar habe ich das ja nun so hinbekommen wie du es gesagt hast. funzt super. wenn ich nun aber z.b. ne zahl eingebe die ich net wollte, habe ich nun einen button CE gemacht mit dem er eine stelle zurück soll.
Wenn ich z.b. eine 111 stehen habe wollte aber nur eine 11, will ich den CE button klicken sodass aus der 111 eine 11 wird.
Habe es bisher nur so hinbekommen das der durch nen klick auf den CE button das komplette edit feld löscht und zwar mit dem befehl
EditEingabe1->Clear();
hast du da vllcht auch ne ahnung von ?!
MFG
-
Probiers mal so:
Edit1->Text = Edit1->Text.SubString(1, Edit1->Text.Length()-1);
Du musst also vom String im Edit-Feld, das letzte Zeichen entfernen. Dies kann man über die Funktion SubString(int Start-Index, int Länge) erreichen.
Sollte eigentlich funktionieren!
-
jooo super thx!!! funzt genau so wie ich es mir vorgestellt habe!!
big thx!