AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Edit Felder voneinander Abhängig / Umrechnung
Thema durchsuchen
Ansicht
Themen-Optionen

Edit Felder voneinander Abhängig / Umrechnung

Ein Thema von problemstoffe · begonnen am 10. Jun 2007 · letzter Beitrag vom 11. Jun 2007
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Edit Felder voneinander Abhängig / Umrechnung

  Alt 10. Jun 2007, 15:57
Also. Ein ButtonClick-Ereignis erstellst du ja, indem du doppelt auf den Button klickst (bzw im Objektinspektor). Genauso erstellt man alle Ereignisse der Komponenten u.a. auch das OnChange des Edits. Also klicke doppelt aufs Edit und im Code-Editor öffnet sich der Rumpf der Prozedur, dort kannst du deinen Code dann einfügen.

Ohne OnChange wird's etwas schwieriger. Du könntest den Inhalt der Edits in je einer Variablen speichern und dann vergleichen. Sind die Werte nicht identisch, wurde der Inhalt des entsprechenden Edits geändert. Dann weist du den neuen Wert der Variablen zu und berechnest die neuen Werte, die du in den beiden anderen Edits ausgeben kannst.
  Mit Zitat antworten Zitat
problemstoffe

Registriert seit: 6. Jun 2007
16 Beiträge
 
#12

Re: Edit Felder voneinander Abhängig / Umrechnung

  Alt 10. Jun 2007, 16:06
Zitat von Matze:
Also. Ein ButtonClick-Ereignis erstellst du ja, indem du doppelt auf den Button klickst (bzw im Objektinspektor). Genauso erstellt man alle Ereignisse der Komponenten u.a. auch das OnChange des Edits. Also klicke doppelt aufs Edit und im Code-Editor öffnet sich der Rumpf der Prozedur, dort kannst du deinen Code dann einfügen.
Das ist mir natürlich klar, und trotzdem funktioniert die Geschichte nicht...



Die zweite Möglichkeit ist eine Nummer zu schwer, dann würde ich lieber mit der anderen Möglichkeit agieren.

Ich werde morgen mal einen Informatiklehrer in der Schule anlabern, vielleicht kann der mir weiterhelfen...
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#13

Re: Edit Felder voneinander Abhängig / Umrechnung

  Alt 10. Jun 2007, 16:10
Hallo,

Zitat von Matze:
Ohne OnChange wird's etwas schwieriger.
Ob der Inhalt eines Eingabefelds vom Anwender(!) geändert wurde, läßt sich über Delphi-Referenz durchsuchenTEdit.Modified ermitteln. Allerdings sagt auch das nichts darüber aus, welches Feld als letztes geändert wurde. Dies war aber einer der Vorgaben in Beitrag #1, deren Umsetzung ohne Verwendung von OnChange tatsächlich ziemlich schwierig werden dürfte.

Gruß Hawkeye
  Mit Zitat antworten Zitat
problemstoffe

Registriert seit: 6. Jun 2007
16 Beiträge
 
#14

Re: Edit Felder voneinander Abhängig / Umrechnung

  Alt 10. Jun 2007, 16:18
Also mit Onchange habe ich es jetzt hinbekommen. Musste einfach nochmal das Projekt neu öffnen, dann ging's.

Vielleicht fällt ja jemadem noch eine elegante Lösung mit Button ein. Das mit TEdit.Modified werde ich aber auf jeden Fall nochmal probieren.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Edit Felder voneinander Abhängig / Umrechnung

  Alt 10. Jun 2007, 16:23
Zitat von problemstoffe:
Vielleicht fällt ja jemadem noch eine elegante Lösung mit Button ein.
Ich vermute mit deinem Wissen ist mein Vorschlag der einfachste (Wertevergleich).
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Edit Felder voneinander Abhängig / Umrechnung

  Alt 10. Jun 2007, 17:14
Wenn du allet zusammenfassen willst:

Delphi-Quellcode:
type
  TForm1 = class(TForm)

{...}
  public
    fLastField: integer
    procedure Umrechnen;

{...}

procedure TForm1.Umrechnen;
begin
  case fLastField of
  1: begin
       // umrechnungen für Edit2
     end;
  2: begin
       // umrechnungen für Edit3
     end;
  else
    // umrechnungen für Edit1
  end;
end;


procedure TForm1.Edit1OnChange
begin
  fLastField := 0;
  Umrechnen;
end;

procedure TForm1.Edit1OnChange
begin
  fLastField := 1;
  Umrechnen;
end;

procedure TForm1.Edit1OnChange
begin
  fLastField := 2;
  Umrechnen;
end;

procedure TForm1.Button1OnClick
begin
  Umrechnen;
end;
  Mit Zitat antworten Zitat
problemstoffe

Registriert seit: 6. Jun 2007
16 Beiträge
 
#17

Re: Edit Felder voneinander Abhängig / Umrechnung

  Alt 10. Jun 2007, 17:45
@cruiser : Würde es dir was ausmachen deinen code nochmal ein wenig zu erläuter?

Also ich habe das jetzt mal das alte Beispiel weitergeführt und es funktioniert fast alles.

Wenn ich jedoch eine Programmzeile für die Fahrenheit Skala eingebe bricht das Programm sofort ab. Das liegt daran das sich die drei Edits gegenseitig ändern wollen.

Nur wie lässt sich das beheben?

Hier noch der Programmcode, ohne die Zeilen für Fahrenheit.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 close;
end;

procedure TForm1.celChange(Sender: TObject);
begin

    rea.Text := FloatToStr( round (StrToFloat(cel.Text) * 0.8));
    fahr.Text := FloatToStr( round (StrToFloat(cel.Text) * 1.8 + 32));

  end;


procedure TForm1.reaChange(Sender: TObject);
begin


    cel.Text := FloatToStr( round (StrToFloat(rea.Text) * 1.25));
    fahr.Text := FloatToStr( round (StrToFloat(rea.Text) * 2.25 + 32));

  end;

      
end.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: Edit Felder voneinander Abhängig / Umrechnung

  Alt 10. Jun 2007, 18:19
Klar, wenn Du per Quellcode den Text eines Edits änderst, wird dessen OnChange-Ereignis durchlaufen. So kommst Du in eine Endlosschleife. Tipp: Frag doch mal den Sender ab, dafür ist dieser Parameter da
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#19

Re: Edit Felder voneinander Abhängig / Umrechnung

  Alt 10. Jun 2007, 18:32
Mal ein Beispiel auf die Schnelle:
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
var i: integer;
begin
  i := StrToInt(Edit1.Text);
  if Sender <> Edit2 then
    Edit2.Text := IntToStr(i*2);
  if Sender <> Edit3 then
    Edit3.Text := IntToStr(i*3);
end;

procedure TForm1.Edit2Change(Sender: TObject);
var i: integer;
begin
  i := StrToInt(Edit2.Text);
  if Sender <> Edit1 then
    Edit1.Text := IntToStr(i div 2);
  if Sender <> Edit3 then
    Edit3.Text := IntToStr(i div 2 *3);
end;

procedure TForm1.Edit3Change(Sender: TObject);
var i: integer;
begin
  i := StrToInt(Edit3.Text);
  if Sender <> Edit1 then
    Edit1.Text := IntToStr(i div 3);
  if Sender <> Edit2 then
    Edit2.Text := IntToStr(i div 3 * 2);
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
problemstoffe

Registriert seit: 6. Jun 2007
16 Beiträge
 
#20

Re: Edit Felder voneinander Abhängig / Umrechnung

  Alt 10. Jun 2007, 19:35
Das geht leider auch nicht! Wieder eine Überlastung... (StackOverflow)




Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 close;
end;

procedure TForm1.celChange(Sender: TObject);
var i: extended;
begin
  i := StrToFloat(cel.Text) ;
  if Sender <> rea then
    rea.Text := FloatToStr(i * 0.8);
  if Sender <> fahr then
    fahr.Text := FloatToStr(i * 1.8 + 32);
  end;


procedure TForm1.reaChange(Sender: TObject);
var i: extended;
begin
  i := StrToFloat(rea.Text);
  if Sender <> cel then
    cel.Text := FloatToStr(i * 1.25);
  if Sender <> fahr then
    fahr.Text := FloatToStr(i * 2.25 + 32);
  end;


procedure TForm1.fahrChange(Sender: TObject);
var i: extended;
begin
  i := StrToFloat(fahr.Text);
  if Sender <> cel then
    cel.Text := FloatToStr(i - 32 * 5/9);
  if Sender <> rea then
    rea.Text := FloatToStr(i - 32 * 4/9);
end;

end.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz