Entwickler-Ecke
Sonstiges (Delphi) - Rechner
LinzerASK - So 19.06.05 11:50
Titel: Rechner
hallo!
ich versuche einen windows ähnlichen rechenr zu programmieren! :-)
ich schaffe auch einen mit zwei spinedit feldern,....
aber ich möchte das so:
das man auf einen button mit zahlen von 0-9 klickt, und das ergebnis dann in einem edit feld ausgegeben wird!
ich hoffe ihr könnt mir den nötigen ratschlag geben wie das funktioniert!
CABALxx - So 19.06.05 13:12
was genau möchtest du?
wenn ich das jetzt richtig interpretiere dann versuchst du, einen taschenrechner zu programmieren der in etwa so ist wie der von windoof????
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text := Edit1.Text + '1'; end;
procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Text := Edit1.Text + '2'; end;
..... usw usw |
dann kannste buttons 0 -9 machen und wenn du dann 1 klickst wird die zahl 1 dem edit feld hinzugefügt...
meintest du sowas?
Keldorn - So 19.06.05 13:16
| Keldorn hat folgendes geschrieben: |
| Allen Zahlen-Buttons die gleiche onclick-routine zuweisen. |
eineonclickroutine erstellen und
allen butons per OI diese onclickmethode zuweisen.
Mfg Frank
edit: aus Versehen auf edit gekommen :oops:
BenBE - So 19.06.05 13:51
Sieht dann so hier aus:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.ButtonClick(Sender: TObject); begin Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag); end; |
//Edit:
procedure im Source ergänzt ;-)
CABALxx - So 19.06.05 13:56
sry bin kein profi wie ihr :wink:
für mich is die einfachste lösung die naheliegendste
LinzerASK - So 19.06.05 17:47
Titel: ????????
Delphi-Quelltext
1:
| Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag); |
bei diesem code steht dann immer "null" im edit-feld!
Delphi-Quelltext
1:
| Edit1.Text := Edit1.Text +'1'; |
bei diesen, wie soll man dann die rechenoperationen durchführen!?
Moderiert von
Christian S.: Code- durch Delphi-Tags ersetzt.
LinzerASK - So 19.06.05 18:06
a jo ,...
eine frage noch zum
Edit1.Text := Edit1.Text + '1'
da wird ja die zahl lediglich raufgeschrieben ins edit-feld,...!
mehr nicht!
und wenn ich das selbe dann mit:
Edit1.Text := Edit1.Text + '+' für ein rechenzeichen einfüge dann steht zwar ein plus oben im edit-feld,...! *lol*
und wie kann man das dann ausrechnen lassen!? :-)
Keldorn - So 19.06.05 20:03
Titel: Re: ????????
LinzerASK hat folgendes geschrieben: |
Quelltext 1:
| Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag); |
bei diesem code steht dann immer "null" im edit-feld!
|
wir gehen natürlich davon aus, das du die Tag-Eigenschften der Buttons auch entprechend setzt. ;)
| Zitat: |
Edit1.Text := Edit1.Text + '+' für ein rechenzeichen einfüge dann steht zwar ein plus oben im edit-feld,...! *lol*
und wie kann man das dann ausrechnen lassen!? |
such nach
PARSER
LinzerASK - So 19.06.05 20:06
na gut und wie macht man das bei
+
-
*
/
?!!?!??!
und bei "="
ich verstehe das nicht mi dem "parsen"
Tilo - Mo 20.06.05 14:15
zerlegen der gleichung.
z.b'11+56=' bedeutet: 1.Term ist 11, Rechnenzeichen '+' -> 2. Term (56) zum ersten hinzuaddieren. so in etwa nur wesentlich ausführlicher.
LinzerASK - Mo 20.06.05 14:42
@ tilo! danke für den tipp! nur soll ich das dann in strings zerlegen oder wie?!
ich bräuchte da ein kleines beispiel für ein rechenzeichen oder was weiß ich!
Kroni - Mo 20.06.05 14:43
Er ist doch noch Anfänger, dann lasst doch das Parsen weg ;-)
Einfach wie oben die Eingabe...dann nen Rechenzeichen.....Edit auf null setzen
zweite Zahl eingeben....erzwingen, dass man nur = Klicken kann, und dann das Ergebnis berechnen.....
und so fort.....nur dass dann eben anch dem Klick auf = das Ergebnis= 1. Zahl ist....
So kann man sich das Parsen sparen!
Nur kann man dann eben immer nur zwei Zahlen berechnen, so wie es der Windows Rechner auch kann!
LinzerASK - Mo 20.06.05 15:03
Titel: mah i gibs auf
und wie schreibt man dass!
bitte!,...!
Kroni - Mo 20.06.05 15:09
Ist das ne Hausaufgabe??
Nun ja....
ich poste ungern den kompletten Source
mach dir doch erstmal Gedanken darum, wie du die Eingabe machst.....dazu hast du ja shcon genug anregung....
und dann musst du nen Rechenzeichen drücken....abspeichern, welches das war.....
die Zahl, die im Edit feld steht speichern....
die Zweite Zahl eingeben.....alle rechenzeichen sperren .....damit du auch nur das = Drücken kannst...
und dann das ERgebnis berechnen
das Ergebnis dann wieder Speichern...dazu bringen, dass nur ein Rechenzeichen gedrückt werden kann....
nachdem das gedrückt worden ist, dafür sorgen, dass die Zweite Zahl eingeben wird, und dann, dass wieder dsa = gedürckt werden muss usw.....
LinzerASK - Mo 20.06.05 15:12
Titel: danke!
!danke jetzt ist es mir klar geworden!,.....
danke! ne es ist kein hausübung!
Kroni - Mo 20.06.05 15:15
Jo, versuch das mal zu realisieren.
Wenn du dabei Probelme hast, dann solltest du dich hier melden.
Vlt. auch mal mit Codeschnipseln, damit man sieht, dass du dir gedanken machst.
LinzerASK - Fr 24.06.05 14:49
Titel: ich komme nicht weiter
was muss ich jetzt machen!?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160:
| Button14: TButton; Button15: TButton; Button16: TButton; Datei: TMainMenu; Datei1: TMenuItem; Hilfe1: TMenuItem; Beenden1: TMenuItem; Hilfe2: TMenuItem; Infos1: TMenuItem; Edit1: TEdit; Button17: TButton; procedure Beenden1Click(Sender: TObject); procedure Infos1Click(Sender: TObject); procedure Hilfe2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button10Click(Sender: TObject); procedure Button16Click(Sender: TObject); procedure Button12Click(Sender: TObject);
procedure Button15Click(Sender: TObject); private
public end;
var s:string; z1:integer; z2:integer; erg:integer; p:integer; o:string; l:strinG; Form1: TForm1;
implementation
uses Unit2, Unit3;
{$R *.DFM}
{$R WinXPStyle.res}
procedure TForm1.Beenden1Click(Sender: TObject); begin
close; end;
procedure TForm1.Infos1Click(Sender: TObject); begin form3.show; end;
procedure TForm1.Hilfe2Click(Sender: TObject); begin form2.show; end;
procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag); end;
procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag); end;
procedure TForm1.Button3Click(Sender: TObject); begin Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag); end;
procedure TForm1.Button4Click(Sender: TObject); begin Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag); end;
procedure TForm1.Button5Click(Sender: TObject); begin Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag); end;
procedure TForm1.Button6Click(Sender: TObject); begin Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag); end;
procedure TForm1.Button7Click(Sender: TObject); begin Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag); end;
procedure TForm1.Button8Click(Sender: TObject); begin Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag); end;
procedure TForm1.Button9Click(Sender: TObject); begin Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag); end;
procedure TForm1.Button10Click(Sender: TObject); begin Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag); end;
procedure TForm1.Button16Click(Sender: TObject); begin edit1.clear; end;
procedure TForm1.Button12Click(Sender: TObject); begin Edit1.Text := Edit1.Text + button12.caption; if edit1.text='++' then showmessage('Nur ein Plus!'); end;
procedure TForm1.Button15Click(Sender: TObject); var z1,z2:integer; rz:string; erg:integer;
begin z1:=strtoint(edit1.text); edit1.clear;
if edit1.text='+' then rz:='+'; if edit1.text='*' then rz:='-'; if edit1.text='/' then rz:='/'; if edit1.text='/' then rz:='*';
z2:=strtoint(edit1.text); edit1.clear;
if rz='+' then erg:=z1+z2; if rz='-' then erg:=z1-z2; if rz='*' then erg:=z1*z2; if rz='/' then erg:=z1*z2;
edit1.text:=inttostr(erg);
end;
end. |
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt.
Keldorn - Fr 24.06.05 19:11
Titel: Re: ich komme nicht weiter
| Keldorn hat folgendes geschrieben: |
| Allen Zahlen-Buttons die gleiche onclick-routine zuweisen. |
eineonclickroutine erstellen und
allen butons per OI diese onclickmethode zuweisen.
Mfg Frank
LH_Freak - Fr 24.06.05 19:58
bei den Jedikomponenten ist eine Kompo zum Parsen dabei (:arrow: JvInterpreterProgram) dann ist das ganze relativ einfach ;)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text := Edit1.Text + (Sender as TButton).Caption; end;
procedure TForm1.Button15Click(Sender: TObject); begin JvInterpreterProgram1.Pas.Add(Edit1.Text); JvInterpreterProgram1.Run; Edit1.Text := JvInterpreterProgram1.VResult end; |
Ok????
EDIT:
Den einzelnen Buttons (bis auf = ) musst du bei onClick Button1Click zuweisen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!