Einzelnen Beitrag anzeigen

Alibi

Registriert seit: 15. Aug 2003
Ort: Bispingen
94 Beiträge
 
Delphi 7 Personal
 
#8

Re: Minus im edit nur als erstes Zeichen erlauben

  Alt 22. Dez 2003, 15:10
Hab mal eine kleine Procedure für das OnKeyPress geschrieben um nur Integer zuzulassen, auch negative:
Delphi-Quellcode:
procedure TFormMain.EditKeyPressCheckInteger(Sender: TObject; var Key: Char);
begin
  if ((Sender as TLabeledEdit).SelStart = 0) then
  begin
   if not (Key in [#45,'0'..'9', #8]) then
     Key := #0;
  end else
    if not (Key in ['0'..'9', #8]) then
      Key := #0;
end;
Hier eine Variante für Kommmazahlen:
Delphi-Quellcode:
procedure TFormMain.EditKeyPressCheckComma(Sender: TObject; var Key: Char);
begin

  if Key = #44 then
    Key := DecimalSeparator;

  // Nur ein Komma zulassen
  if (Key = DecimalSeparator) and
     (pos(DecimalSeparator,(Sender as TLabeledEdit).Text) > 0) then
    Key := #0
  // Das Komma darf nicht am Anfang stehen
  else if (Key = DecimalSeparator) and ((Sender as TLabeledEdit).SelStart = 0) then
    Key := #0

  // -, nicht zulassen
  else if ((Sender as TLabeledEdit).SelStart = 1) and
     ((Sender as TLabeledEdit).Text[1] = #45) and
     (Key = DecimalSeparator) then
    Key := #0

  // Ein Minus darf am Anfang stehen und nur Zahlen zulassen sowie Backspace
  else if ((Sender as TLabeledEdit).SelStart = 0) then
  begin
   if not (Key in [DecimalSeparator,#45,'0'..'9', #8]) then
     Key := #0;
  end else
  begin
    if not (Key in ['0'..'9', #8, DecimalSeparator]) then
      Key := #0;
  end;
end;
Aber: Ich hab in dem Projekt das so gemacht, dass als Komma nur ein . zugelassen wird. Wenn die Kommataste gedrückt wurde, dann wird ein Punkt hinzugefügt, kein Komma.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.
  Mit Zitat antworten Zitat