Eingabeprozeduren

Um abzusichern, dass der Benutzer gültige Werte einträgt kann man folgende Prozeduren in das Programm einbauen:

Das Ereignis KeyPress

Zunächst einmal muss das Programm also falsche Zeichen, die durch die Tastatureingabe des Benutzers eingetippt wurden, herausfiltern.

Dazu schreibt man für das KeyPress-Ereignis jedes Textfeldes folgendes:

procedure TfrmCreateMagSquar.edtSizeKeyPress(Sender: TObject);

var Key: Char;

begin
  if not (Key in [#8,'0'..'9','-']) then Key:=#0;
end;

procedure TfrmCreateMagSquar.edtAddKeyPress(Sender: TObject);

var Key: Char;

begin
  if not (Key in [#8,'0'..'9','-']) then Key:=#0;
end;

procedure TfrmCreateMagSquar.edtMultKeyPress(Sender: TObject);

var Key: Char;

begin
  if not (Key in [#8,'0'..'9','-']) then Key:=#0;
end;

Die Length-Eigenschaft

Da bei der Größe aber zum Beispiel nur Zahlen von 3 bis 99 sinnvoll sind, setzt man die Length-Eigenschaft des Textfeldes edtSize auf 2. Aus Ausgabegründen sollte man auch die Länge der Faktoren und Summanden auf 7 begrenzen.

Die EnableBtn-Prozedur

Jetzt muss noch eine allgemeine Prozedur entscheiden, ob das Programm weiterhin mit den eingebenen Strings arbeiten kann.

Zuerst muss deshalb geprüft werden, ob die Strings in den Textfeldern überhaupt etwas enthalten. Ist dies der Fall, so muss geprüft werden, ob die Seitenlänge mindestens 3 ist. Nur dann wird die Enable-Eigenschaft des Knopfes btnCreate auf True gesetzt. Trifft eine der beiden Bedingungen nicht zu, so wir die Enabe-Eigenschaft auf False gesetzt.

procedure tfrmCreateMagSquar.EnableBtn;
begin
  If (edtSize.text<>'') And (edtAdd.text<>'') And (edtMult.text<>'') Then
  begin
    If (strtoint(edtSize.text)>2) then btnCreate.enabled:=true; Else btnCreate.enabled:=false;
  end
  Else
  begin
    btnCreate.enabled:=false;
  end;
end;

Das Ereignis Change

Um diese Prozedur bei jeder Eingabe des Benutzers auszuführen, muss man sie zum Change-Ereignis jedes Textfeldes aufrufen.

procedure TfrmCreateMagSquar.edtSizeChange(Sender: TObject);
begin
  enablebtn;
end;

procedure TfrmCreateMagSquar.edtAddChange(Sender: TObject);
begin
  enablebtn;
end;

procedure TfrmCreateMagSquar.edtMultChange(Sender: TObject);
begin
  enablebtn;
end;