AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid: Eingabe in Zelle prüfen

Ein Thema von Helmi · begonnen am 26. Jan 2009 · letzter Beitrag vom 26. Jan 2009
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#1

StringGrid: Eingabe in Zelle prüfen

  Alt 26. Jan 2009, 13:17
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:
  • maximal 3 Zeichen
  • an erster Stelle darf nur ein "S" oder eine "0" stehen
  • wenn an erster Stelle eine "0" steht, darf keine weitere Eingabe möglich sein
  • wenn an erster Stelle ein "S" steht, dann dürfen danach nur noch Ziffern kommen

Die maximale Eingabe von 3 Zeichen hab ich schon gelöst:
Delphi-Quellcode:
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;
Aber wie kann ich den Rest bewerkstelligen?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#2

Re: StringGrid: Eingabe in Zelle prüfen

  Alt 26. Jan 2009, 13:34
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]='0then
        Key := #0
      else If (Text[1]='S') and not (Key in ['0'..'9', #8]) then
else
  Key := #0;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#3

Re: StringGrid: Eingabe in Zelle prüfen

  Alt 26. Jan 2009, 13:47
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] = '0then
                      Key := #0
                    else
                      If (Text[1] = 'S') and not (Key in ['0'..'9']) then
                        Key := #0;
                  end;
          else
            Key := #0;
          end;
        end;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:29 Uhr.
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