Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi StringGrid: Eingabekontrolle (https://www.delphipraxis.net/9338-stringgrid-eingabekontrolle.html)

weltaran 24. Sep 2003 13:49


StringGrid: Eingabekontrolle
 
Hi!

Ich versuche jetzt schon seit längerer Zeit, Falsche Werte bei der Eingabe in eine Zelle abzufangen (den Artikel ..grid: Wie auf Zelländerungen reagieren (oder so ähnl.) hab ich schon gelesen). Mir ist wichtig, dass Die Fehleingabe (es sollen nur Werte wie '45', '1.2M', '-3,1k'...; eine entsprechende Prüffunktion habe ich bereits geschrieben) sofort rückgängig gemacht werden muss, d.h. nach einer entsprechenden ShowMessage(..) soll sich die gleiche Zelle wieder im EditMode befinden.
Bisher habe ich 2 Möglichkeiten ausprobiert:
- OnSetEditText
- OnSelectCell und OnExit

Beide Möglichkeiten lösen das Problem nicht.

Danke schonaml für eure Antworten

Phoenix 24. Sep 2003 13:50

Re: StringGrid: Eingabekontrolle
 
Hrm. Ich würde im OnKeyPress erst gucken, was für restriktionen auf der entsprechenden Zelle gelten und dann bestimmte Tasten erst gar nicht zulassen. Wenn Du im OnKeyPress die Variable Key mit #0 belegst, wird derTastendruck ignoriert.

weltaran 24. Sep 2003 14:11

Re: StringGrid: Eingabekontrolle
 
Nein, das wird m.E. zu kompliziert, es sollen ja auch vorhandene Zellinhalte geändert werden können, und wenn der Benutzer dann mitten in den Text klickt, dann muss ich zuerst mal einen Entscheidungsbaum durchlaufen, der mir die an dieser Stelle möglichen Eingaben ausfindigt macht, neenee.

Bisher habe ich


Delphi-Quellcode:
procedure TfraLimits.sgdLowSetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: String);

begin
  if sgdLow.EditorMode=false then
  begin
    if IsDecaStr(Value)=false then
    begin
      ShowMessage('Invalid number!(EditText)');
    end;

  end;
end;
Die Funktion
Code:
IsDecaStr(string):boolean
hat mich schon einiges an Gehirnschmalz gekostet. Das muss doch auch einfacher gehen: will der Benutzer die Eingabe abschließen oder die Zelle wechseln, so wird der Zellinhalt geprüft, bei ungüligem Inhalt Message und nochmal die gleiche Zelle.

Trotzdem Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:01 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