Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Eingabe beschränken (https://www.delphipraxis.net/1945-eingabe-beschraenken.html)

Privateer3000 31. Dez 2002 14:44


Eingabe beschränken
 
Moin Leuts,

ist es möglich ein Edit so zu beeinflussen,dass
nur Zahlen akzeptiert werden und nach eingabe eines Kommas
(Fliesskommazahl) nur noch max 2 Stellen eingegeben werden können.
(Sonst kommt es Fehler in der Berechnung)
und wenn es machbar ist: wenn ein komma eingegeben wurde,kein weiteres akzeptieren


***Aber das sind ja 3 Wünsche auf einmal!*** :mrgreen:

Rutscht gut Rein!!

Christian Seehase 31. Dez 2002 15:33

Moin Privateer,

das ginge entweder mit einem TMaskEdit, oder aber Du fängst das OnKeyPress Ereignis ab, prüfst den Inhalt und löscht ggf. das übergebene Zeichen.

TMaskEdit soll allerdings etwas buggy sein. (Das weiss ich allerdings nicht genau, ich hab' damit nie gearbeitet)

Privateer3000 31. Dez 2002 18:37

Ja eben, ich hab keine Ahnung
wie ich die Eingabe eines weiteren Kommas verhindere.
Vielleicht sollte ich sie ganz verhindern?!
Geht das:
User gibt beispielsweise 110 ein.
Jetzt wird diese Zahl in 1,10 also immer 2 Dezimalstellen um gewandelt.
Bei 1100 in 11,00.

Wie müsste man das anstellen

Alexander 31. Dez 2002 18:44

du könntest doch ganz einfach mit Length die Länge des Strings feststellen und dann mit Copy den ersten Teil herauskopieren (Length -2)
Dann das Komma dazwischen packen und dann wieder mit Copy den letzten Teil kopieren und ans Ende anfügen
Alexander

Luckie 31. Dez 2002 19:19

So auf die Schnelle:
Delphi-Quellcode:
var
  Comma : Boolean = FALSE;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Comma = TRUE) and (Key = #44) then
    key := #0;
  if pos(',', Edit1.Text) > 0 then
    Comma := TRUE
  else
    Comma := FALSE;
  if not (Key in [#8,#44,#48 .. #57]) then Key := #0
end;

Privateer3000 31. Dez 2002 21:22

Thx @ all!

Privateer3000 6. Jan 2003 08:42

@Luckie

dein Beispiel funktioniert soweit
nur muss man 2mal auf Komma tippen um eins zu bekommen!?

Luckie 6. Jan 2003 08:45

war ja auch nur so auf die Schnelle. Optimier es doch einfach noch etwas.

Armageddon 8. Mai 2003 17:39

Ich hab mir auch mal was dazu gebastelt.
 
Hallo bin blutiger Anfänger aber das mit den Kommas hat mich echt tierisch genervt. Wollte einfach das ich noch angeben kann wieviel Stellen ich noch nach dem Komma eingeben kann. Naja bin dann nach langem rumprobieren auf das hier gekommen:

Geht sicher auch noch einfacher aber wie gesagt blutiger Anfänger. :D
Delphi-Quellcode:
procedure TForm1.InnendurchmesserKeyPress(Sender: TObject; var Key: Char);
var
  Komma: Boolean;
  Position: Integer;
  Stellenpuffer: String;
  Zeichenpuffer: String;
  Stellenanzahl: Integer;
begin
  Komma := False;
  Zeichenpuffer := Innendurchmesser.Text;
  if Pos('.', Zeichenpuffer) > 0 then Komma := True;
  if (Komma = True) and (Key = #44) then Key := #0;
  if (Komma = True) and (Key = #46) then Key := #0;
  if (Komma = False) and (Key = #44) then Key := '.';
  if Pos('.', Zeichenpuffer) > 0 then
  begin
    Stellenanzahl := Length(Zeichenpuffer);
    Position := Pos('.', Zeichenpuffer);
    Stellenpuffer := Copy(Zeichenpuffer, Position+1, Stellenanzahl-Position);
    Stellenanzahl := Length(Stellenpuffer);
    if Stellenanzahl = 3  then
    begin
      if (Key in [#44, #46, #48..#57]) then Key := #0
    end;
  end;
  if Key = #13 then Key := #0;
  if not (Key in [#8, #44, #46, #48..#57]) then Key := #0;
end;
Jetzt muß ich mir nurn noch was basteln wo wenn ich das Edit Feld verlasse die Stellen hinter dem Komma mit Nullen aufgefüllt werden.
Also aus z.B. 3 wird 3.000 oder aus 12.37 wird 12.370

Ich finde das Forum hier echt super muß ich noch sagen. Respekt gibt keine übersichtlicheres als das hier. Man sieht das ihr Euch echt viel Arbeit damit macht und ich hoffe Ihr macht weiter so. Damit ich noch viel lernen kann :hello:

Gruß Markus

Stanlay Hanks 8. Mai 2003 19:32

Das mit dem Nullen auffüllen würde ich so machen:

Wenn deine Komma-Variable true ist, mit pos nach dem Komma suchen und dann pos von der gesamtlänge abziehen, dann weißt du weiviele Stellen hinter dem Komma sind und die kannst du dann auffüllen, bzw einfach hinzufügen.

Man liest sich, Stanlay 8)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:33 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz