Hab nochmal versucht diese Funktion etwas zu verbessern:
Delphi-Quellcode:
procedure TLabEdit.FEdKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
// Die Änderung hier an dieser Prozedur sehen wie folgt aus: OnChange wird nur
// aktiviert, wenn eine Eingabe getätigt wurde, die verschieden von der vorherigen
// ist.
// Bei Esc wird alles wieder zurückgesetzt und das OnChangeEvent wird nicht aktiviert.
if (Key = 13) then
begin
FEdEingabe.Visible := false;
FLblAnzeige.Visible := true;
FLblAnzeige.Caption := FEdEingabe.Text;
if assigned(FOnChange) then FOnchange;
ChangeEmbeddedEdit;
end;
if (key = 27) then
begin
FEdEingabe.Visible := false;
FLblAnzeige.Visible := true;
FEdEingabe.Text := sTextWert;
ChangeEmbeddedEdit;
end;
end;
Sieht jetzt wie folgt aus und scheint auch seine Schuldigkeit zu tun. Mir ist zumindest kein Fehler aufgefallen:
Delphi-Quellcode:
if key in [13, 27] then
begin
FEdEingabe.Visible := false;
FLblAnzeige.Visible := true;
case key of
13: begin
FsTextWert := FEdEingabe.Text;
FLblAnzeige.Caption := FEdEingabe.Text;
if assigned(FOnChange) then FOnchange;
end;
27: begin
FEdEingabe.Text := FsTextWert;
end;
end;
end
else
begin
inherited;
FLblAnzeige.Caption := FEdEingabe.Text;
ChangeEmbeddedEdit;
end;
Sieht so schöner aus.
Mache gleichmal einen extra Threat auf für das Problem, wie erkenne ich, dass außerhalb meiner Komponente geklickt wurde.
2. Account Sero