Einzelnen Beitrag anzeigen

Marco Steinebach

Registriert seit: 4. Aug 2006
491 Beiträge
 
Delphi 5 Enterprise
 
#4

AW: TEdit beim überschreiten von MaxLength etwas auslösen

  Alt 13. Jul 2021, 16:14
Hallo,
und ganz herzlichen Dank für eure Antworten.
Wer's mal braucht, bei mir läuft es so:
Code:
constructor TMSEdit.create (aOwner: TComponent);
begin
  inherited create (aOwner);
  fToMuchCharacters := false; // private variable
end;

procedure TMSEdit.keyDown (var key: word; shift: TShiftState);
begin
  // erhält das Edit den Focus, und ist etwas selektiert, muss das, vorher, gelöscht werden...
  if self.selLength > 0 then
  begin
    inherited keyDown (key, shift);
    exit;
  end;
  if (self.maxLength > 0) and
     (shift = []) and
     (not (key in [vk_back, vk_delete, vk_return, vk_left, vk_right, vk_home, vk_end, vk_tab])) and
     (length (self.text) = self.maxLength) and
     assigned (onReachMaxLength) then
  begin
    onReachMaxLength (self, 's_Stop');
    fToMuchCharacters := true;
  end;
  inherited keyDown (key, shift);
end;

procedure TMSEdit.keyPress (var key: char);
// die wird gebraucht, damit es nicht piept. ;-)
begin
  if fToMuchCharacters then
  begin
    fToMuchCharacters := false;
    key := #0;
  end;
  inherited keyPress (key);
end;
Herzlich grüßt
Wandogau
Marco Steinebach
  Mit Zitat antworten Zitat