Einzelnen Beitrag anzeigen

Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#10

Re: Edit Feld begrenzen mit bestimmten Werten

  Alt 6. Sep 2005, 11:38
Hallo,

mein Favorit ist das Ereignis OnChange in Verbindung mit OnEnter,
weil
1. eine Tastenüberprüfung das Kontextmenü sowie Strg+V und Umschalt+Insert nicht berücksichtigen kann, bzw letztendlich die Funktionalität unterbindet
2. das Setzen von ES_NUMBER das Einfügen von Text über die Zwischenablage nicht verhindert.

So verhindere ich falsche Eingaben:
Delphi-Quellcode:
//...
  sUndo : String;
//...
procedure TForm1.Edit1Change(Sender: TObject);
var PosCur : Integer;
    s : string;
    i : Integer;
const MAX = 999;
      MIN = 200;
begin
  try
    s := Edit1.Text;
    if s = 'then
      exit;
    PosCur := Edit1.SelStart;//falls Fehler, merken
    i := StrToInt(s);//Wenn Fehler dann >> except
    //Wenn
    if (s[1] = '-') or
       (i > MAX) or
       ((Length(s) = 3) and (i < MIN)) then
      raise Exception.Create('');//Exception auslösen >> except
    sUndo := Edit1.Text;
    except
      showmessage('Nur Werte zwischen '+IntToStr(MIN)+' und '+IntToStr(MAX)+' erlaubt!');
      Edit1.Text := sUndo;//Edit zurücksetzen
      if Length(s) > Length(sUndo) then
        PosCur := PosCur-1;
    end;
  Edit1.SelStart := PosCur;//Cursor an alte Position setzen
end;

procedure TForm1.Edit1Enter(Sender: TObject);
begin
  sUndo := Edit1.Text;//wird in OnChange benötigt
end;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat