![]() |
taschenrechner mit 1 editfeld
hallo,
Also ich möchte in mein Programm einen kleinen Taschenrechner einbinden, der aussieht, wie der windows taschenrechern. also d.h. mit 1 editfeld. ich hab leider überhaupt keinen ahnung, wie man das anstellen soll... so dass man unendlich mal auf plus klicken kann und er immernur 5 dazurechnet. Ich konnta bisher nur taschenrechner mit 2 editfelder proggen. ich hoffe irgendeiner hat sowas schonmal gemacht und kann mir helfen. danke schonma im vorraus |
Re: taschenrechner mit 1 editfeld
hi,
du musst halt jedesmal wenn du auf + - * / klickst, den wert in einer variablen merken und dann das edit feld leeren.... |
Re: taschenrechner mit 1 editfeld
Hi,
das Geheimnis ist: du benötigst einen Speicher für dein letztes Ergebnis:
Delphi-Quellcode:
Nur getippt, nicht getestet, aber vielleicht fällt ja jetzt bei dir schon der Groschen...
type
TCalculator = class(TForm) NumEdit: TEdit; ... private FMemory: double; procedure SetMemory(memory: double); public property Memory: double read FMemory write SetMemory; ... end; procedure TCalculator.SetMemory(memory: double); begin FMemory := memory; NumEdit.Text := FloatToStr(memory); end; procedure TCalculator.ResetButtonClick(Sender: TObject); begin Memory := 0; end; procedure TCalculator.PlusButtonClick(Sender: TObject); begin Memory := FMemory + StrToFloat(NumEdit.Text); end; Grüße vom marabu |
Re: taschenrechner mit 1 editfeld
hm naja... weiss net genau wie du das meinst. ich hab das auch schon mit speichern gemacht. aber ich bekomm es nie so hin, dass das teil wie der windows taschenrechner funktioniert.
|
Re: taschenrechner mit 1 editfeld
Ich habe den Rechner schon einmal programmiert, mit Punkt vor Strichrechnung ( aber die wirst du noch nicht benötigen, wenn ich das richtig verstanden habe ), aber wie man das mit + löst kannst du meinem Code entnehmen, den ich freigegeben habe.
![]() |
AW: taschenrechner mit 1 editfeld
Liste der Anhänge anzeigen (Anzahl: 1)
Das ist der ganze Code. Bei den Bild das durch gestrichene weglassen.
Der Taschenrechner funktioniert auch zu 100%
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) bt0: TButton; bt9: TButton; bt8: TButton; bt7: TButton; bt6: TButton; bt5: TButton; bt4: TButton; bt3: TButton; bt2: TButton; bt1: TButton; btPunkt: TButton; bt00: TButton; Edit1: TEdit; Panel1: TPanel; btPlus: TButton; btMal: TButton; btGeteilt: TButton; btMinus: TButton; btGleich: TButton; btClear: TButton; Label1: TLabel; btMplus: TButton; btMminus: TButton; btMR: TButton; btMC: TButton; procedure ZeiButtonClick(Sender: TObject); procedure opButtonClick(Sender: TObject); procedure btClearClick(Sender: TObject); procedure btGleichlik(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} var strBuff1, strBuff2: string; op: Char; var mode: Byte = 1; procedure TForm1.btClearClick(Sender: TObject); begin if mode = 1 then StrBuff1 := '' else StrBuff2 := ''; edit1.text := '' end; procedure TForm1.ZeiButtonClick(Sender: TObject); var zei: Char; begin if Sender = bt0 then zei := '0'; if Sender = bt1 then zei := '1'; if Sender = bt2 then zei := '2'; if Sender = bt3 then zei := '3'; if Sender = bt4 then zei := '4'; if Sender = bt5 then zei := '5'; if Sender = bt6 then zei := '6'; if Sender = bt7 then zei := '7'; if Sender = bt8 then zei := '8'; if Sender = bt9 then zei := '9'; if Sender = btPunkt then zei := '.'; if mode = 1 then begin strBuff1 := strBuff1 + zei; edit1.text := strBuff1 end else begin strBuff2 := strBuff2 + zei; edit1.text := strBuff2 end; end; procedure TForm1.opButtonClick(Sender: TObject); begin if mode = 1 then begin if Sender = btPlus then op := '+'; if Sender = btMinus then op := '-'; if Sender = btGeteilt then op := '/'; if Sender = btMal then op := '*'; StrBuff2 := ''; mode := 2 end end; procedure TForm1.btGleichlik(Sender: TObject); var res, op1, op2: Double; code: Integer; s: string; begin if mode = 2 then begin Val(strBuff1, op1, code); Val(strBuff2, op2, code); case op of '+': res := op1 + op2; '-': res := op1 - op2; '/': res := op1 / op2; '*': res := op1 * op2; end; s:= Format ('%g', [res]); edit1.text := s; mode := 1; strBuff1 := '' end end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz