Hallo zusammen,
wann genau sollte der EditorMode im Stringgrid beendet sein ?
Folgender Code :
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| procedure TFrame_DCIDS.SGridSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin if ACol = 5 then SGrid.Options := SGrid.Options + [goEditing] else SGrid.Options := SGrid.Options - [goEditing]; end;
procedure TFrame_DCIDS.SGridKeyPress(Sender: TObject; var Key: Char); begin if not (Key in [#8, #13, ',', '0'..'9']) then Key := #0; end;
procedure TFrame_DCIDS.SGridSetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String); var dcID : Integer; factor : Real; begin if ACol = 5 then begin if not SGrid.EditorMode then begin dcID := strtoint(SGrid.Cells[9, ARow]); factor := strtofloat(SGrid.Cells[ACol, ARow]); DBInterface.SetDCIDFactor(dcID, factor); RefreshGrid; end; end; end; |
Das Problem ist nun, dass SGrid.EditorMode niemals false wird. Weder wenn ich mit Tab aus der Zelle springe, noch nach Betätigung von Enter und auch nicht wenn ich mit der Maus aus der Zelle raus springe.
So wie ich EditorMode verstehe, benutzt man dies um eine Ausführung von Validierungscode bei jedem eingegebenen Zeichen zu verhindern. D.h. der Block in SetEditText soll dadurch erst ausgeführt werden, wenn die Eingabe abgeschlossen ist. Habe ich das falsch verstanden ? Muss ich EditorMode selbst auf False setzen wenn z.B. Enter gedrückt wird ?
Danke...
Moderiert von
Martok: Topic aus Sonstiges (Delphi) verschoben am Mi 20.07.2011 um 18:55
Moderiert von
Martok: Code- durch Delphi-Tags ersetzt