![]() |
StringGrid: Eingabe in Zelle prüfen
Hallo,
ich hab grad ein Problem an dem ich (fast) verzweifle (etwas dramatisch aber das steigert die Erwartungen :-) ) Ich möchte die Eingabe in einer Zelle prüfen und zwar nach folgenden Kriterien:
Die maximale Eingabe von 3 Zeichen hab ich schon gelöst:
Delphi-Quellcode:
Aber wie kann ich den Rest bewerkstelligen?
procedure TEinstellungenForm.StringGrid_ZugzieleKeyPress(Sender: TObject;
var Key: Char); var Zeile: Integer; Spalte: Integer; Text: String; begin //Zeile und Spalte auslesen Zeile := StringGrid_Zugziele.Row; Spalte := StringGrid_Zugziele.Col; Text := StringGrid_Zugziele.Cells[Spalte, Zeile]; //Tastenprüfung abhängig der ausgewählten Spalte If Spalte = 0 then begin //prüfen ob die gedrückte Taste in der Liste der erlaubten Taste ist If not (Key in ['S', '0'..'9', #8]) then Key := #0; //Die Länge der Eingabe begrenzen (Rücktaste aber zulassen) If not (Key = #8) then If length(Text) >= 3 then Key := #0; end; end; |
Re: StringGrid: Eingabe in Zelle prüfen
Meinst Du das in etwa so...?
Delphi-Quellcode:
case length(Text) of
0: If not (Key in ['S', '0', #8]) then Key := #0; 1,2:If Text[1]='0' then Key := #0 else If (Text[1]='S') and not (Key in ['0'..'9', #8]) then else Key := #0; end; |
Re: StringGrid: Eingabe in Zelle prüfen
Ja, genau so.
Dein Code hatte noch ein paar Macken - habs jetzt so gelöst:
Delphi-Quellcode:
If not (Key in [#8]) then
begin case length(Text) of 0: begin If not (Key in ['S', '0']) then Key := #0; end; 1, 2: begin If Text[1] = '0' then Key := #0 else If (Text[1] = 'S') and not (Key in ['0'..'9']) then Key := #0; end; else Key := #0; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz