Autor Beitrag
GiuStyler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 65
Erhaltene Danke: 1

Win 8.1
Delphi XE6
BeitragVerfasst: Do 18.09.14 08:22 
Hallo, Aufgrund der Sperrung des anderen Threads wegen mehreren Fragen auf einmal mache ich hier nun mein neues Anliegen.

Es geht darum, dass ich beim Start meines "Geldbetrag-Umwandlers" zuerst sich das zweite Fenster öffnet wo ich entweder 1. vordefinierte Münzarten habe (Deutschland) oder selber welche editieren kann auch nach Lustigkeit. Wenn diese dann eingetragen sind, soll man den Button OK klicken und diese werden dann auf die eigentlichen Seite weitergegeben wo ich dann mein Betrag im EditFeld eingebe und dann angezeigt bekommen wie viele Münzen von welchen ich gebraucht habe (am wenigstens).

Die Frage ist nun wie kann ich den Button OK programmieren, dass er die 8 Werte alle in die Variable des anderen Fenster schickt? Die Paramater für das übernehmen habe ich. Laut meinem Chef sollte es gehen. Das sieht so aus.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  Münzwert[1] := StrToFloat(bWerte.FormWerte.EditWert1.Text);
  Münzwert[2] := StrToFloat(bWerte.FormWerte.EditWert2.Text);
  Münzwert[3] := StrToFloat(bWerte.FormWerte.EditWert3.Text);
  Münzwert[4] := StrToFloat(bWerte.FormWerte.EditWert4.Text);
  Münzwert[5] := StrToFloat(bWerte.FormWerte.EditWert5.Text);
  Münzwert[6] := StrToFloat(bWerte.FormWerte.EditWert6.Text);
  Münzwert[7] := StrToFloat(bWerte.FormWerte.EditWert7.Text);
  Münzwert[8] := StrToFloat(bWerte.FormWerte.EditWert8.Text);


bWerte = Name der Unit
FormWerte = Name des Fensters (nicht überschrift)
EditWert1-8.Text = Eintragung der einzelnen Münzwerte

Diese sollen dann übernommen werden, wenn ich dann auf den Button klicken.

Hoffe man versteht was ich meine

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TFormWerte.BitBtnOKClick(Sender: TObject);
begin
  // Hier ist mein Problem. Was muss ich hier eingeben damit die Werte zu den Parameter weitergeleitet werden.
end;
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 18.09.14 08:27 
Guten Morgen,

keine Ahnung, ob ich das nun richtig verstanden habe.

ausblenden Delphi-Quelltext
1:
bWerte.FormWerte.EditWert1.Text:= format('%.2f', [Münzwert[1]]);					


Gruß,
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
Blup
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173
Erhaltene Danke: 43



BeitragVerfasst: Do 18.09.14 09:54 
Du solltest deine Eingabe nicht in irgendein anderes Formular schreiben, das schafft unnötige Abhängigkeiten.
Schließlich weist du nicht, aus welchem Kontext heraus dein Eingabeformular aufgerufen wurde.
Vieleicht brauchst du diese Eingabemöglichkeit an anderer Stelle noch einmal.
Statt dessen stellst du dem Aufrufer die erfassten Werte zur Verfügung und er kann diese für sich übernehmen.

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:
type
  TEingabeFormular = class(TForm)
  {...}
  private
    function GetEdit(AIndex: Integer): TEdit;
    function GetMünzwert(AIndex: Integer): Double;
    procedure SetMünzwert(AIndex: Integer; AValue: Double);
  public
    property Münzwert[AIndex: Integer]: Double read GetMünzwert write SetMünzwert;
  end;

function TEingabeFormular.GetEdit(AIndex: Integer): TEdit;
begin
  case AIndex of
    1: Result := Edit1;
    2: Result := Edit2;
    {...}
  else
    raise Exception.CreateFmt('Index(%d) out of Range', [AIndex]);
  end;
end;

function TEingabeFormular.GetMünzwert(AIndex: Integer): Double;
begin
  Result := StrToFloat(GetEdit(AIndex).Text);
end;

procedure TEingabeFormular.SetMünzwert(AIndex: Integer; AValue: Double);
begin
  GetEdit(AIndex).Text := FloatToStr(AValue);
end;


Der Aufrufer übernimmt die Werte wenn Ok geklickt wird.
Nicht vergessen die Eigenschaft Modalresult des Ok-Buttons auf "mrOk" zu setzen.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TFormIrgendwas.EingabeFormular;
var
  lEingabeForm: TEingabeFormular;
begin
  lEingabeForm := TEingabeFormular.Create(nil);
  try
    {vorhandene Werte zur Bearbeitung bereitstellen}
    lEingabeForm.Münzwert[1] := FMünzwert[1];
    lEingabeForm.Münzwert[2] := FMünzwert[2];
    {...}
    if lEingabeForm.ShowModal = mrOk then
    begin
      {bearbeitete Werte übernehmen}
      FMünzwert[1] := lEingabeForm.Münzwert[1];
      FMünzwert[2] := lEingabeForm.Münzwert[2];
      {...}
    end;
  finally
    lEingabeForm.Free;
  end;
end;

Das Eingabeformular kann so auch unabhängig getestet werden.
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 18.09.14 10:07 
Recht nett, aber für einen im ersten Ausbildungsjahr und somit in der 3. Woche wohl doch etwas hart zu verstehen.
Noch dazu hat er seine Vorgabe vom Chef bekommen.

Aber dennoch ist dein aufgezeigter Ansatz für die Zukunft eine der besseren Möglichkeiten.

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
GiuStyler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 65
Erhaltene Danke: 1

Win 8.1
Delphi XE6
BeitragVerfasst: Do 18.09.14 10:21 
Hi Zeitgeist,

glaube nicht. Ich versuche es mal mit bilder klarzumachen.

Also

Wenn ich mein Programm starte, dann kommt folgendes Fensrter zuerst

Fenster 1.PNG

Dort sind schon die Standardwerte eingetragen die gelten (Deutschland). Aktuell ist es so, dass wenn ich auf X klicke dann sich das zweite Fenster öffnet und normal weitermachen kann, aber nur mit den Standardwerte. Mein Ziel ist es nun in diesem Fenster die eigenen Werte anzugeben und sobald man OK klickt diese dann übernommen werden und dann sich das zweite Fenster öffnet.

Den Code damit die Werte übernommen werden das habe ich schon. Ich habe aktuell nur keine Ahnung welchen Befehl ich dem OK Button geben muss, damit er die Daten rübergibt, bzw. beim OK klick sich das zweite Fenster öffnet.

Edit : Danke Blub, ich vermute mal das es funktioniert, aber ich muss mich zu Beginn erst mal im Anfängerbereich aufhalten. Kann nicht direkt mit Professionel Code ankommen, daher liebe das so realisieren wie ich denke, sofern es geht und dann nach und nach ausbessern :-)

Edit 2 : Zur Not haue ich hier mal den ganzen Code von beiden Fenstern hoch, damit man genauer sieht was ich will, wenn es immer noch undeutlich ist.
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von GiuStyler am Do 18.09.14 10:26, insgesamt 1-mal bearbeitet
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 18.09.14 10:24 
Hallo Guiseppe,

das hängt davon ab, wie der restliche Code aufgebaut ist.
Scheinbar ist dein zweites Fenster das Hauptfenster, da es ja nicht explizit aufgerufen wird.

In deinem Fall würde es reichen

ausblenden Delphi-Quelltext
1:
self.close;					


in ButtonOkClick() zu implementieren, da dies den gleichen Effekt hat, wie Fenster schließen.

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
GiuStyler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 65
Erhaltene Danke: 1

Win 8.1
Delphi XE6
BeitragVerfasst: Do 18.09.14 10:35 
Ok. Wir machen es mal anders ^^

Hier der Code wo sich eigentlich alles abspielt!

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:
unit aHaupt;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.StdCtrls, Vcl.Buttons, Math;

type
  TFormGeldbetragumwandler = class(TForm)
    MainMenuLeiste: TMainMenu;
    Datei: TMenuItem;
    Schliessen: TMenuItem;
    Hilfe: TMenuItem;
    Anleitung: TMenuItem;
    LabelKurzBeschreibung: TLabel;
    LabelGeldbetrag: TLabel;
    EditEingabe: TEdit;
    BitBtnLoeschen: TBitBtn;
    BitBtnOK: TBitBtn;
    BitBtnClear: TBitBtn;
    BitBtnAnleitung: TBitBtn;
    BitBtnSchliessen: TBitBtn;
    LabelAusgabe: TLabel;
    LabelAusgabe2: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure BitBtnOKClick(Sender: TObject);
    procedure EditEingabeKeyPress(Sender: TObject; var Key: Char);
    procedure BitBtnLoeschenClick(Sender: TObject);
    procedure BitBtnClearClick(Sender: TObject);
    procedure BitBtnAnleitungClick(Sender: TObject);
    procedure BitBtnSchliessenClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FormGeldbetragumwandler: TFormGeldbetragumwandler;

implementation

uses
  bWerte;
{$R *.dfm}

// ANFANG - Einstellungen für Münwerte

procedure TFormGeldbetragumwandler.FormCreate(Sender: TObject);
begin
  FormWerte:=TFormWerte.Create(application);
  FormWerte.ShowModal;
  FormWerte.Free;
end;

// Einstellungen für Münzwerte - ENDE

// ANFANG - Logik des Umwandlers

procedure TFormGeldbetragumwandler.BitBtnOKClick(Sender: TObject);
var
  B : real;
  M: Integer;
  i : Integer;

  Münzen : array[1..8of Integer;
  Münzwert : array[1..8of Real;
begin
  B := StrToFloat(EditEingabe.Text);
  M := 0;
  i := 1;

  Münzen[1] := 0;
  Münzen[2] := 0;
  Münzen[3] := 0;
  Münzen[4] := 0;
  Münzen[5] := 0;
  Münzen[6] := 0;
  Münzen[7] := 0;
  Münzen[8] := 0;

  Münzwert[1] := StrToFloat(bWerte.FormWerte.EditWert1.Text);
  Münzwert[2] := StrToFloat(bWerte.FormWerte.EditWert2.Text);
  Münzwert[3] := StrToFloat(bWerte.FormWerte.EditWert3.Text);
  Münzwert[4] := StrToFloat(bWerte.FormWerte.EditWert4.Text);
  Münzwert[5] := StrToFloat(bWerte.FormWerte.EditWert5.Text);
  Münzwert[6] := StrToFloat(bWerte.FormWerte.EditWert6.Text);
  Münzwert[7] := StrToFloat(bWerte.FormWerte.EditWert7.Text);
  Münzwert[8] := StrToFloat(bWerte.FormWerte.EditWert8.Text);

 {while B >= 2 do
    begin
      M := M+1;
      B := B-2;
      Münzen[1] := Münzen[1]+1;
    end;

  while B >= 1 do
    begin
      M := M+1;
      B := B-1;
      Münzen[2] := Münzen[2]+1;
    end;

  while B >= 0.5 do
    begin
      M := M+1;
      B := B-0.5;
      Münzen[3] := Münzen[3]+1;
    end;

  while B >= 0.2 do
    begin
      M := M+1;
      B := B-0.2;
      Münzen[4] := Münzen[4]+1;
    end;

  while B >= 0.1 do
    begin
      M := M+1;
      B := B-0.1;
      Münzen[5] := Münzen[5]+1;
    end;

  while B >= 0.05 do
    begin
      M := M+1;
      B := B-0.05;
      Münzen[6] := Münzen[6]+1;
    end;

  while B >= 0.02 do
    begin
      M := M+1;
      B := B-0.02;
      Münzen[7] := Münzen[7]+1;
    end;

  while B >= 0.01 do
    begin
      M := M+1;
      B := B-0.01;
      Münzen[8] := Münzen[8]+1;
    end;}


  for i := 1 to 8 do
    begin
      while B >= Münzwert[i] do
        begin
          M := M+1;
          B := RoundTo((B-Münzwert[i]), -2);
          Münzen[i] := Münzen[i]+1;
        end;
    end;
  LabelAusgabe.Caption := 'Es sind insgesamt '+FloatToStr(M)+' Münzen enthalten';
  LabelAusgabe2.Caption :='Folgende Münzenvarianten sind vorhanden:'+#13+IntToStr(Münzen[1])+' * '+FloatToStr(Münzwert[1])+' €'+#13+IntToStr(Münzen[2])+' * '+FloatToStr(Münzwert[2])+' €'+#13+IntToStr(Münzen[3])+' * '+FloatToStr(Münzwert[3])+' €'+#13+IntToStr(Münzen[4])+' * '+FloatToStr(Münzwert[4])+' €'+#13+IntToStr(Münzen[5])+' * '+FloatToStr(Münzwert[5])+' €'+#13+IntToStr(Münzen[6])+' * '+FloatToStr(Münzwert[6])+' €'+#13+IntToStr(Münzen[7])+' * '+FloatToStr(Münzwert[7])+' €'+#13+IntToStr(Münzen[8])+' * '+FloatToStr(Münzwert[8])+' €';
end;

// Logik des Umwandlers - ENDE

// ANFANG - Erlaubte Tasten

procedure TFormGeldbetragumwandler.EditEingabeKeyPress(Sender: TObject;
  var Key: Char);
begin
  if not (Key in ['0'..'9'',', Char(VK_BACK)]) then
    Key := #0;
end;

// Erlaubte Tasten - ENDE

// ANFANG - Editfeld Schrittweise löschen

procedure TFormGeldbetragumwandler.BitBtnLoeschenClick(Sender: TObject);
begin
  if (Sender is TBitBtn) then
  begin
    if TBitBtn(Sender).Name = 'BitBtnLoeschen' then
      EditEingabe.Text := Copy(EditEingabe.Text,1,Length(EditEingabe.Text)-1)
    else
      MessageDlg('Unbekannter Button!!!',mtError,[mbOk],0);
  end;
end;

// Editfeld Schrittweise löschen - ENDE

// ANFANG - Editfeld komplett löschen

procedure TFormGeldbetragumwandler.BitBtnClearClick(Sender: TObject);
begin
  EditEingabe.Text := '';
  LabelAusgabe.Caption := '';
  LabelAusgabe2.Caption := '';
end;

// Editfeld komplett löschen - ENDE

// ANFANG - Beschreibung

procedure TFormGeldbetragumwandler.BitBtnAnleitungClick(Sender: TObject);
begin
  ShowMessage('Beschreibung:'+#13+#13+'Man gibt im Feld einen Geldbetrag (Bsp. 10,37).Sobald man auf dem Button OK klickt oder die Entertaste betätigt, dann erscheint ein Text mit der Anzahl an Münzen die benötigt werden um den Betrag zu erreichen.'+#13+#13+'Es wird die kleinste Menge angegeben, dass heißt:'+#13+#13+'Bei unserem Beispiel von 10,37 € wären es folgende Münzen:'+#13+'5x 2€, 1x 20 Cent, 1x 10 Cent, 1 x 5 Cent, 1 x 2 Cent!'+#13+#13+'Gesamt wären das nun 9 Münzen');
end;

// Beschreibung - ENDE

// ANFANG - Beendet das Programm

procedure TFormGeldbetragumwandler.BitBtnSchliessenClick(Sender: TObject);
begin
  Application.Terminate;
end;

// Beendet das Programm - ENDE

end.


Lasse auch Extra mal das ausgeklammerte mal drin, damit man sieht wie ich vorgehe als Anfänger. Zuerst das einfachere 1000 mal und dann am Ende es vereinfachen, aber da hat mir mein Chef etwas geholfen ^^

Zum eigentlich Problem. In diesem Code hole ich mir ja die Werte vom anderen Fenster

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Münzwert[1] := StrToFloat(bWerte.FormWerte.EditWert1.Text);
  Münzwert[2] := StrToFloat(bWerte.FormWerte.EditWert2.Text);
  Münzwert[3] := StrToFloat(bWerte.FormWerte.EditWert3.Text);
  Münzwert[4] := StrToFloat(bWerte.FormWerte.EditWert4.Text);
  Münzwert[5] := StrToFloat(bWerte.FormWerte.EditWert5.Text);
  Münzwert[6] := StrToFloat(bWerte.FormWerte.EditWert6.Text);
  Münzwert[7] := StrToFloat(bWerte.FormWerte.EditWert7.Text);
  Münzwert[8] := StrToFloat(bWerte.FormWerte.EditWert8.Text);


Mein Chef sagte schon es stimmt. Kann es aber noch nicht testen, weil, wenn ich beim Fenster oben eigene Werte eintrage die nicht standard sind, kann ich diese nicht rüberkopieren, da beim Klick auf OK nichts passiert. Mache ich nur X bleiben die Standardwerte aktiv die ich ja im zweiten Fenster programmiert habe.

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:
unit bWerte;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Vcl.Menus;

type
  TFormWerte = class(TForm)
    MainMenuLeiste: TMainMenu;
    Hilfe: TMenuItem;
    Info: TMenuItem;
    LabelBeschreibung: TLabel;
    LabelWert1: TLabel;
    LabelWert2: TLabel;
    LabelWert3: TLabel;
    LabelWert4: TLabel;
    LabelWert5: TLabel;
    LabelWert6: TLabel;
    LabelWert7: TLabel;
    LabelWert8: TLabel;
    EditWert1: TEdit;
    EditWert2: TEdit;
    EditWert3: TEdit;
    EditWert4: TEdit;
    EditWert5: TEdit;
    EditWert6: TEdit;
    EditWert7: TEdit;
    EditWert8: TEdit;
    BitBtnOK: TBitBtn;
    procedure BitBtnOKClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure InfoClick(Sender: TObject);
    procedure EditWertKeyPress(Sender: TObject; var Key: Char);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FormWerte: TFormWerte;

implementation

uses
  aHaupt;
{$R *.dfm}

procedure TFormWerte.FormCreate(Sender: TObject);
begin
  EditWert1.Text := '2,00';
  EditWert2.Text := '1,00';
  EditWert3.Text := '0,50';
  EditWert4.Text := '0,20';
  EditWert5.Text := '0,10';
  EditWert6.Text := '0,05';
  EditWert7.Text := '0,02';
  EditWert8.Text := '0,01';
end;

procedure TFormWerte.EditWertKeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9'',', Char(VK_BACK)]) then
    Key := #0;
end;

procedure TFormWerte.BitBtnOKClick(Sender: TObject);
begin
  //
end;

procedure TFormWerte.InfoClick(Sender: TObject);
begin
  ShowMessage('Hier kann man zuerst definieren, mit welchen Münzarten man arbeiten möchte.'+#13+#13+'Zum Beispiel für Deutschland wären es:'+#13+#13+'(2.00 €, 1.00 €, 0.50 €, 0.20 €, 0.10 €, 0.05 €, 0.02 €, 0.01 €)');
end;

end.


Ziel ist es aber, in diesem Fenster was sich zuerst öffnen eigene Werte einzutragen, daher das Problem mit meiner Frage. Hoffe das es nun deutlich ist ^^ ansonsten habe ich keine Ahnung mehr wie ich mich noch ausdrücken muss/soll/kann.

Es dreht sich um diesem Code

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TFormWerte.BitBtnOKClick(Sender: TObject);
begin
  //
end;


Da muss was rein, das die manuell eingegebenen Werte übernimmt die ja hierdurch

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Münzwert[1] := StrToFloat(bWerte.FormWerte.EditWert1.Text);
  Münzwert[2] := StrToFloat(bWerte.FormWerte.EditWert2.Text);
  Münzwert[3] := StrToFloat(bWerte.FormWerte.EditWert3.Text);
  Münzwert[4] := StrToFloat(bWerte.FormWerte.EditWert4.Text);
  Münzwert[5] := StrToFloat(bWerte.FormWerte.EditWert5.Text);
  Münzwert[6] := StrToFloat(bWerte.FormWerte.EditWert6.Text);
  Münzwert[7] := StrToFloat(bWerte.FormWerte.EditWert7.Text);
  Münzwert[8] := StrToFloat(bWerte.FormWerte.EditWert8.Text);


ausgelesen werden und wenn ich dann ein Betrag eingebe dieses dann mit den Werte durchgeht auch wenn diese Werte erfunden sind.
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 18.09.14 10:48 
Du kannst es recht einfach umbauen.

Deklariere im Implementation nach der uses eine Variable myFormWerte: TFormWerte;.

Im Create() das Free() weglassen, da du dort das erzeuge Formular (richtigerweise) auflöst, allerdings gehen natürlich die Eingaben von dir verloren.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TFormGeldbetragumwandler.FormCreate(Sender: TObject);
begin
  myFormWerte:=TFormWerte.Create(application);
  myFormWerte.ShowModal;
  //FormWerte.Free;
end;


Implementiere das stattdessen ins OnClose.

Und mit einer Anpassung der Zuweisung liest du aus dem noch bestehendem Formular die eingestellten Werte

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Münzwert[1] := StrToFloat(bWerte.FormWerte.EditWert1.Text);
  Münzwert[2] := StrToFloat(myFormWerte.EditWert2.Text);
  Münzwert[3] := StrToFloat(myFormWerte.EditWert3.Text);
  Münzwert[4] := StrToFloat(myFormWerte.EditWert4.Text);
  Münzwert[5] := StrToFloat(myFormWerte.EditWert5.Text);
  Münzwert[6] := StrToFloat(myFormWerte.EditWert6.Text);
  Münzwert[7] := StrToFloat(myFormWerte.EditWert7.Text);
  Münzwert[8] := StrToFloat(myFormWerte.EditWert8.Text);


Ins OnClick des OK-Buttons sagst du einfach self.close;

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Do 18.09.14 11:00 
Wenn man das Array Münzwerte in eine eigene Unit packt und global macht (im einfachsten Fall als globale Variable im interface-Teil), dann können alle Units, die diese enthaltende Unit einbinden, darauf zugreifen, d.h. Auswerten und Ändern. Das ist zwar längst nicht so elegant wie eine Klasse mit entsprechenden Properties und Events, sollte sich aber ganz entspannt realisieren lassen.
GiuStyler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 65
Erhaltene Danke: 1

Win 8.1
Delphi XE6
BeitragVerfasst: Do 18.09.14 14:19 
Problem ist gelöst .-) Mein Chef hat es mir gezeigt.

PS: Das andere hat nicht funktioniert ZeitGeist oder ich war zu blöd es hinzubekommen, aber mein Chef hat es mir nun so gezeigt.

ausblenden Delphi-Quelltext
1:
Münzwert : array[1..8of Real;					


wurde erst einmal in private verschoben und aus

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TFormGeldbetragumwandler.FormCreate(Sender: TObject);
begin
  FormWerte:=TFormWerte.Create(application);
  FormWerte.ShowModal;
  FormWerte.Free;
end;


wurde

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TFormGeldbetragumwandler.FormCreate(Sender: TObject);
begin
  FormWerte := TFormWerte.Create(application);
  if FormWerte.ShowModal = mrOk then
  begin
    Münzwert[1] := StrToFloat(bWerte.FormWerte.EditWert1.Text);
    Münzwert[2] := StrToFloat(bWerte.FormWerte.EditWert2.Text);
    Münzwert[3] := StrToFloat(bWerte.FormWerte.EditWert3.Text);
    Münzwert[4] := StrToFloat(bWerte.FormWerte.EditWert4.Text);
    Münzwert[5] := StrToFloat(bWerte.FormWerte.EditWert5.Text);
    Münzwert[6] := StrToFloat(bWerte.FormWerte.EditWert6.Text);
    Münzwert[7] := StrToFloat(bWerte.FormWerte.EditWert7.Text);
    Münzwert[8] := StrToFloat(bWerte.FormWerte.EditWert8.Text);
  end;
  FormWerte.Free;
end;


und in den Einstellungen im Programm wurde noch im Bereich "ModalResult" mrOK eingegeben.

Und nun kann ich zu Beginn die Werte ändern wie ich will und es wird übernommen, damit habei ch auch die Bestätigung das mein Code bei den Münzwert stimmte :-)

Danke für die Hilfen die ich bekam.