Einzelnen Beitrag anzeigen

xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Mehrere Fragen zu TEdit + sinnvollem Programmaufbau

  Alt 10. Sep 2006, 11:32
Hallo,
Zitat von DashRendar:
1. Ist es eigentlich ein "guter" Programmierstil aus anderen Formularen (z.B. Form 1) auf eine Eingabe in Form2 mit der folgenden Art zurückzugreifen: Unit_x.Form_x.Edit.Text ? Wenn in einem Eingabeformular da sehr viele TEdits habe und die Werte daraus in anderen Units für Berechnungen verwende scheint mir das doch eher ziemlich mies, oder nicht? Auf der anderen Seite kann ich mir so gaaaaanz viele Variabeln sparen, weil ich ja immer direkt auf die Edit.Text 'te zurückgreife.
Guter Programmierstil ist das nicht. Wenn Du wirklich OOP programmierst, dann erzeugst Du Properties in Deinen Forms und grifst über diese auf die Ergebnisse zu.
Zitat von DashRendar:
2. Angenommen ich würde mich dann dafür entscheiden die Werte aus meinem Eingabe Formular(mit den TEdits eben) alle in Variablen zu speichern, die ich mir unter "public" zunächst deklariere. Welches Ereignis müsste ich dann auswählen um das zu machen? Ich meine, es gibt kein "Bestätigen-Button" in meinem Formular und ich möchte nicht für jedes Edit-Feld eine "onchange" Prozedur um den Wert / Text von TEdit in meine Variable zu übertragen. Sondern eine Prozedur die alle Werte aufnimmt und aktualisiert wenn ich nur einen x-beliebigen Wert in einem der TEdit-Felder ändere (es sind default Werte voreingestellt).
Variablen im Public-Bereich sind wo immer möglich zu vermeiden und durch Properties zu erstzen. Du solltest also Properties erstellen und im Getter das jeweilige Edit abfragen. Dadurch benötigst Du auch keinen Ereignishandler, da das Edit immer dann abgefragt wird, wenn Du den Inhalt benötigst.
Zitat von DashRendar:
3. Eine letze und dritte Frage wäre dann noch wie man es bewerkstelligt dass eine Berechnung immer dann ausgeführt wird wenn ein Wert in einer ComboBox UND einem TEdit Feld (auf dem gleichen Formular / Unit) gegeben ist. Sowohl die ComboBox als auch Edit werden ja leer initialisiert und das sollen sie hier auch. Egal in welcher Reihenfolge der Benutzer nun die Werte in ComboBox und TEdit ändert möchte ich das bei jeder Änderung meine Rechnung durchgeführt wird. Muss ich dazu etwa eine onchange Prozedur für Edit und die Box aufsetzten, die dann auf die gleiche Rechnung verweisen? Das wäre ja super umständlich und geht bestimmt einfacher, wenn man weiß wie...
Du kannst beiden Controls den selben OnChange-Handler zuweisen. Der könnte dann z. B. so aussehen:
Delphi-Quellcode:
procedure TForm1.OnChange(Sender: TObject);
begin
  if (Edit1.Text <> '') and (ComboBox1.Text <> '') then
    Berechne(Edit1.Text, ComboBox1.Text);
end;
Beachte, dass ich die Berechnung nicht im Ereignishandler durchführe, sondern eine eigene Methode aufrufe. Man sollte nämlich möglichst immer Oberfläche und Programmlogik voneinander trennen.
Zitat von DashRendar:
Sry, für die dummen Fragen ^_^.
Hey, wer nicht fragt, bekommt auch keine Antworten .

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat