Autor Beitrag
TheEquinox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Mi 20.07.11 17:39 
Hallo zusammen,

wann genau sollte der EditorMode im Stringgrid beendet sein ?

Folgender Code :

ausblenden volle Höhe Delphi-Quelltext
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:
//SelectCell Event des grids, um nur Eingaben in Spalte 5 zuzulassen
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;

//Keypress event des grids, um nur Zahleneingaben zuzulassen
procedure TFrame_DCIDS.SGridKeyPress(Sender: TObject;
  var Key: Char);
begin
  if not (Key in [#8#13',''0'..'9']) then
    Key := #0;
end;

//SetEditText event des grids welches bei Abschluss der Eingabe eine Datenbank Query ausführen soll
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 user profile iconMartok: Topic aus Sonstiges (Delphi) verschoben am Mi 20.07.2011 um 18:55
Moderiert von user profile iconMartok: Code- durch Delphi-Tags ersetzt
iKilledKenny
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: Do 21.07.11 07:34 
Du kannst auf die Überprüfung von EditorMode verzichten. Wenn du an das KeyPress-Event möchtest, dann benutz den InplaceEditor dafür.