Einzelnen Beitrag anzeigen

Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Eingabeeinschränkung bei Edit wird ignoriert

  Alt 10. Jun 2009, 15:55
Zitat von BAMatze:
Kann es sein dass ich mein Delphi vieleicht mal reparieren oder neu installieren sollte?
NEIN!

Aus Erfahrung meiner jahrelangen "stümperhaften" Programmierung weis ich, das es zu 99% am Code (also am Programmierer) liegt, nicht an der IDE... was sich bei dem BDS nicht geändert haben sollte.

KeyDown, KeyUp, KeyPress ist ja nur um den Wert von Key zu ändern. Die Anzeige wird durch die Ereignisse ja nicht gemacht.

Genauer:

Setze mal zum Testen alle Keys auf #0, ob die Änderung überhaupt bei FEditEingabe aus TLabEdit ankommt:
Delphi-Quellcode:
procedure TLabZahlEdit.FEdKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  [...]
  inherited FEdKeyDown(Sender, Key, Shift);
  Key := 0;
end;
Ich glaube die "neue" Ereignis-Methode könnte u.U. gar nicht bis zum ursprünglichen TEdit durchgereicht werden (bzw. der neue Wert von Key), also CharCode im TEdit nicht auf 0 gesetzt, weshalb die Zeichen ausgegeben werden.

Also im Prinzip die neue Methode in der neuen Klasse nochmal mit dem Ereignis verbinden
Delphi-Quellcode:
constructor TLabZahlEdit.Create(AOwner: TComponent);
begin
  inherited create(AOwner);
  // default-Wert setzen:
  FZahlart := Gleitkommazahl;

  EdEingabe.OnKeyDown := FEdKeyDown; // FEdEingabe durch ein property sichbar machen
end;

TLabEdit...
property EdEingabe : TEdit Read FEdEingabe;
  Mit Zitat antworten Zitat