| Autor |
Beitrag |
24karatboy
      
Beiträge: 110
Win XP
Delphi (Delphi Win32)
|
Verfasst: Mo 18.06.07 10:51
Guten Morgen!
Und zwar habe ich folgendes Problem: wollte einen Taschenrechner schreiben, der +,-,*,/ rechnen kann nur wollte ich die rechnoption über eine radiogroup auswählen nun weiss ich leider nicht wie ich abfrage welche item aus der radiogroup ausgewählt wurde ich bitte um hilfe
danke
mfg 24karatboy
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Mo 18.06.07 11:02
ItemIndex
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
24karatboy 
      
Beiträge: 110
Win XP
Delphi (Delphi Win32)
|
Verfasst: Mo 18.06.07 11:09
Titel: case
case of radiogroup.itemindex 0:.........
1:......
so ?
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Mo 18.06.07 11:20
Genau zb. so
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.RadioGroup1Click(Sender: TObject); begin case RadioGroup1.ItemIndex of 0 : Edit1.Text:='+'; 1 : Edit1.Text:='-'; 2 : Edit1.Text:='*'; 3 : Edit1.Text:='/'; end; end; |
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
24karatboy 
      
Beiträge: 110
Win XP
Delphi (Delphi Win32)
|
Verfasst: Mo 18.06.07 11:27
Titel: hmmm
jetzt ist mir gerade nen neues problem aufgefallen ...
hab ja nur ein editfeld und normalerweise wenn man auf + klickt soll der denn 1. wert ich nen variable speicher und dann die rechenoperation mit dem 2. wert ausführen nur will ich ja die radiogroup benutzen um die rechenoperation auszuwählen. Hat da jemand ne gute lösung ?
|
|
oldmax
      
Beiträge: 380
D3 Prof, D4 Prof
|
Verfasst: Mo 18.06.07 12:08
Hi
Da der Taschenrechner mit nur einem Editfeld hier erst vor kurzem abgehandelt wurde, geh ich nicht mehr auf die einzelnen Details ein. Zur Not geh über die Suche. Auch mein Name ist da ein wenig Hilfreich.
Was nicht behandelt wurde, ist der Wunsch, die Rechenoperationen über ein Radiobutton zu machen. Die vorausgehenden Vorschläge sind so einzusetzen, allerdings würd ich nach erfolgter Berechnung dem Radiobutton.ItemIndex den Wert -1 zuweisen.
Stelle dir vor, du willst mehrere Zahlen addieren. Also gibst du einen Wert in dein Editfeld und klickst das Plus an. Das Ereignis tritt auf und die Zahl im Editfeld wird mit einer Variablen addiert und anschließend wieder im Editfeld dargestellt. Soweit, so gut. Nun gibst du die nächste Zahl ein, allerdings ist dein Radiobutton schon gesetzt und ein Klick in das gleiche Feld löst kein Ereignis aus. Mit Radiobutton.ItemIndex:=0; löscht du die Vorbesetzung wieder und die Ereignisse erfolgen bei jedem Button. Nachteil, du wirst kaum sehen, welche Rechenoperation angeklickt wurde. Daher sind einzelne Tasten (Buttons ) "hübscher".
Gruß oldmax
_________________ Zier dich nich so, ich krieg dich schon....
|
|
24karatboy 
      
Beiträge: 110
Win XP
Delphi (Delphi Win32)
|
Verfasst: Mo 18.06.07 12:08
Titel: von einem problem zum nächsten
jetzt stehe ich vor einer neuen frage und wollte deshalb nicht extra nen neuen thread aufmachen weil es ja eigentlich alles hier zu gehört.
und zwar: eine 0 darf ja prinzipiell ganz vorne stehen aber was ist mit der 0 wenn ich
0350 - 250 rechnen will ?
also meine frage ist wie mache ich das ich hatte mir das so gedacht das als 1. zeichen keine 0 erlaubt wird jetzt habe ich aber nen manko entdeckt und zwar was ist denn wenn ich mit 0, rechnen möchte dann geht die 0 ja auch nciht weil es die erste zahl ist !!
hat da jemand nen tipp für mich ? ich möchte kein code ich möchte nur tipps!
danke
|
|
oldmax
      
Beiträge: 380
D3 Prof, D4 Prof
|
Verfasst: Mo 18.06.07 12:19
Also, ob ich ganz ohne Code auskomme, mal sehen....
Du hast die Möglichkeit, über
Length(Editfeld1.Text)
die Anzahl der bereits eingegebenen Zahlen zu prüfen. Du kannst so bei der Länge 1 alle Nullen verwerfen, die nach einer Null auf Platz 1 folgen. Entweder im OnKeyPress-Ereignis oder wenn dein Zahlenfeld aus Button besteht, in den OnClick-Ereignissen der Buttons, d. H. eigentlich nur im "0"-Button. Hast du eine Ziffer >0 eingegeben so überschreibst du eine führende Null einfach. Na ja, ein Komma kannst du ja nach der Null zulassen...
Gruß oldmax
_________________ Zier dich nich so, ich krieg dich schon....
Zuletzt bearbeitet von oldmax am Mo 18.06.07 16:33, insgesamt 2-mal bearbeitet
|
|
24karatboy 
      
Beiträge: 110
Win XP
Delphi (Delphi Win32)
|
Verfasst: Mo 18.06.07 13:40
Titel: ein weiteres problem
jetzt habe ich noch das problem mit dem back button der soll das letzte zeichen löschen!!
jetzt habe ich mir das so gedacht:
Delete(Edit1.Text, Length(Edit1.Text), 1)
kommt aber die fehlermeldung:
[Fehler] Unit1.pas(176): Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden
jemand ne idee ?
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 18.06.07 13:47
Delphi-Quelltext 1:
| Edit1.Text := Copy(Edit1.Text, 1, Length(Edit1.Text) - 1); |
oder
Delphi-Quelltext 1: 2: 3: 4: 5:
| var tmp: String; begin tmp := Edit1.Text; Delete(tmp, Length(tmp), 1); Edit1.Text := tmp; |
Grund: Text ist keine Variable sondern eine Eigenschaft und du kannst an Delete nur Variablen übergeben...
Eine Eigenschaft wird daher als Konstantenobjekt bemängelt.
|
|