Autor Beitrag
rob87
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: Mi 08.08.07 14:00 
Hallo

ich habe einen Währungsrechner erstellt.
Man kann auswählen wie man einen Betrag gerne gewechselt haben möchte.

Euro <-> Fremdwährung (Dollar, Pfund, Yen, Franken)

Nun mach ich meine Währungsauswahl mit RadioGroups.

Beim Klick eines Buttons aus der RG bekommt die Variable kurs einen Wert zugewiesen, mit dem sie dann in diesem Formular weiterarbeitet.

Nun will ich aber, dass ich die Variable ändern kann. Hab dazu schon sämtliche Vorbereitungen getroffen. Allerdings wird der neue Wert wenn ich dann ins "Auswahlformular" zurückgehe wieder von dem alten überschrieben.

Nun bräucht ich eine logische Lösung von jemandem. Eine Zählervariable funktioniert auch nicht. Aber seht selbst:

ausblenden volle Höhe 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:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
unit waehrungsrechner;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ExtCtrls, StdCtrls;

type
  TwaehrungsrechnerF = class(TForm)
  {..bissal gekürzt..} 
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  waehrungsrechnerF: TwaehrungsrechnerF;
  ergebnis : double;
  kurs : double;
  null : integer;

implementation

uses waehrungaendern;

{$R *.dfm}


{ --------------- NAVIGATIONSLEISTE --------------- }
procedure TwaehrungsrechnerF.InFremdwhrung1Click(Sender: TObject);
begin
  waehrungaendernF.Show;
  waehrungsrechnerF.Visible := false;
end;

procedure TwaehrungsrechnerF.Programmende1Click(Sender: TObject);
begin
  close;
  waehrungaendernF.Close;
end;


{ --------------- FORMCREATE--------------- }
procedure TwaehrungsrechnerF.FormCreate(Sender: TObject);
begin
  Height := 570;
  Width := 350;
  ergebnis := 0;
  kurs := 0;
end;



{ --------------- FORMSHOW --------------- }
procedure TwaehrungsrechnerF.FormShow(Sender: TObject);
begin
  ergebnis := 0;

  caption := 'Waehrungsrechner';
  Button0.Caption := 'RESET';
  Button2.Visible := false;
  Button3.Visible := false;
  RadioGroup1.Caption := '';
  RadioGroup1.ItemIndex := -1;

  Label1.Caption := '';
  Edit1.Text := '';
  Edit1.Visible := false;

  Label2.Caption := '';
  ComboBox0.ItemIndex := -1;
  ComboBox0.Visible := false;
  ComboBox1.ItemIndex := -1;
  ComboBox1.Visible := false;

  Button1.Caption := 'Berechnen';

  Label5.Caption := '';
  Button1.Enabled := false;
  Panel2.Visible := false;
end;


{  Einstellungen beim Festlegen der Wechselrichtung  }
procedure TwaehrungsrechnerF.RadioGroup1Click(Sender: TObject);
begin

  Edit1.Visible := true;
  ComboBox0.Visible := true;
  ComboBox1.Visible := true;

  case RadioGroup1.ItemIndex of
    0 : begin
          Label1.Caption := 'Euro: ';
          Label2.Caption := 'Zu Währung';
          ComboBox0.Visible := true;
          ComboBox1.Visible := false;
          ActiveControl := Edit1;
        end;

    1 : begin
          Label1.Caption := 'Betrag: ';
          Label2.Caption := 'Von Währung:';
          ComboBox0.Visible := false;
          ComboBox1.Visible := true;
          ActiveControl := Edit1;
        end;
  end;
end;



{ --------------- WECHSELKURS Euro -> Fremdwährung --------------- }
procedure TwaehrungsrechnerF.ComboBox0Click(Sender: TObject);
begin

    case combobox0.itemindex of
              0  : kurs := 1.3729;           //Amerikanische Dollar
              1  : kurs := 0.6797;           //Brtische Pfund
              2  : kurs := 163.83;           //Japanische Yen
              3  : kurs := 1.6463;           //Schweizer Franken
    end;

    Label5.Caption := 'Der Wechselkurs beträgt: '+FloatToStr(kurs);
    Button1.Enabled := true;
end;



{ --------------- WECHSELKURS Fremdwährung -> Euro --------------- }
procedure TwaehrungsrechnerF.ComboBox1Click(Sender: TObject);
begin

    case combobox1.itemindex of
              0  : kurs := 0.7244;           //Amerikanische Dollar
              1  : kurs := 1.4696;           //Brtische Pfund
              2  : kurs := 0.006119;         //Japanische Yen
              3  : kurs := 0.6080;           //Schweizer Franken
    end;

    Label5.Caption := 'Der Wechselkurs beträgt: '+FloatToStr(kurs);
    Button1.Enabled := true;
end;



{ --------------- BERECHNUNG --------------- }
procedure TwaehrungsrechnerF.Button1Click(Sender: TObject);
begin

  if (Edit1.Text = '')
    then begin
      if (messagedlg ('Sie haben keinen Betrag eingeben.',mtConfirmation, [mbOK],0) = mrOK)
        then begin
        ActiveControl := Edit1;
        Edit1.Text := FloatToStr(null)
        end;
  end;


  ergebnis := (StrToFloat(Edit1.Text)) * kurs;
  Edit2.Text := FloatToStr(ergebnis);

  
  Panel2.Visible := true;
  Label3.Caption := 'Betrag';
  Label4.Caption := 'Währung: ';

  case combobox0.ItemIndex of
      0 : Edit3.Text := 'Dollar';
      1 : Edit3.Text := 'Pfund';
      2 : Edit3.Text := 'Yen';
      3 : Edit3.Text := 'Franken';
  end;
  
  case combobox1.ItemIndex of
      0 : Edit3.Text := 'Euro';
      1 : Edit3.Text := 'Euro';
      2 : Edit3.Text := 'Euro';
      3 : Edit3.Text := 'Euro';
  end;

  ActiveControl := Button0;
end;



{ --------------- FEINHEITEN --------------- }
procedure TwaehrungsrechnerF.Edit1KeyPress(Sender: TObject; var Key: Char);
var i:integer;
begin
{ Tabulator springt bei Enter-Taste um 1 weiter }
if Key = Chr(vk_Return) then
  begin
    Key := #0;
    Perform(wm_NextDlgCtl, 0, 0);
  end;

  { Nur Zahlen eingeben }
  try
    i := StrToInt(key);
  except
    key := chr(0);
  end;
end;


{ --------------- Einstellungen zurücksetzen --------------- }
procedure TwaehrungsrechnerF.Button0Click(Sender: TObject);
begin

  waehrungsrechnerF.OnShow(Sender);
  ActiveControl := RadioGroup1;
end;


end.


Und hier noch kurz die Variablenänderung:
ausblenden Delphi-Quelltext
1:
2:
  
waehrungsrechner.kurs := StrToFloat(Edit2.Text);
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Mi 08.08.07 14:39 
user profile iconrob87 hat folgendes geschrieben:
Hallo

ich habe einen Währungsrechner erstellt.
Man kann auswählen wie man einen Betrag gerne gewechselt haben möchte.

Euro <-> Fremdwährung (Dollar, Pfund, Yen, Franken)

Nun mach ich meine Währungsauswahl mit RadioGroups.

Beim Klick eines Buttons aus der RG bekommt die Variable kurs einen Wert zugewiesen, mit dem sie dann in diesem Formular weiterarbeitet.

Nun will ich aber, dass ich die Variable ändern kann. Hab dazu schon sämtliche Vorbereitungen getroffen. Allerdings wird der neue Wert wenn ich dann ins "Auswahlformular" zurückgehe wieder von dem alten überschrieben.



Hallo,

da gibt es eigentlich nur eine sinnvolle Lösung: du must den neuen Kurs für jede Währung abspeichern. Er gilt dann solange, bis jemand wieder einen neuen Kurs eingibt.

Natürlich must du nur einen Kurs pro Währung speichern, nämlich den zum Dollar, wie international üblich. Must du dann Yen in Pfund umrechnen, so rechnest du einfach Yen -> Dollar und dann Dollar -> Pfund.

Da sich die Kurse täglich ändern, ist ein Währungsrechner ohne die Speicherung von Kursen weitgehend wertlos. Am bequemsten ist jedoch die Benutzung eines solchen Rechners auf der Website einer Bank, weil der die Kurse schon weiss.

Gruss Reinhard
rob87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: Do 09.08.07 07:22 
Mir gings ja ned darum, so ein Kursrechner zu schaffen, weils keinen gibt. ;-)


Ich wollt nur mal ausprobieren, ob ich des auch kann.

Wenn ich den kurs von Euro in Dollar speichere, kann ich ja auch in beide Richtungen rechnen.
Und bei meinem Programm kann man bis jetzt eh nur Euro <-> Fremdwährung rechnen

Aber des mit den einzelnen Variablen is halt doof.

Du meinst also mehrere Var. erstellen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
eurodollar, euroyen, europfund {...} : double;

eurodollar := 1.34;
euroyen := 1;


So etwa, oder?
rob87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: Do 09.08.07 12:42 
Es funktioniert.

Mehrere eigene Variablen. Und die Variable wird halt bei der Änderung dann überschrieben.

Jetzt bau ich nur noch ne CheckBox ein, dass man ankreuzen kann, dass die Variable auch für zukünftige Programmstarts gespeichert wird. Sprich, dass sie im FormCreate geändert wird ;-)

Vielen Dank an alle.
rob87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: Do 09.08.07 13:24 
OK. Des mit der CheckBox geht ned.

Wenn ich da dann in FormCreate reingeh, dann überschreibts mir wieder die Werte.

Aber ohne Speicherung übers Programmende hinaus gehts.