Saut de ligne dans un DBGrid
Bonjour,
Dans un formulaire, j'ai remplacé un stringgrid par un DBGrid lié à un ClientDataSet.
Je veux passer à la ligne quand la touche entrée est frappée.
Ma procédure avant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| procedure Tfrm1.grid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = VK_RETURN) or (Key = VK_UP) or (Key = VK_DOWN) then
begin
grid1.Cells[grid1.Col,grid1.Row] := FormateVal(grid1.Cells[grid1.Col,grid1.Row]); // OK
if (Key = VK_RETURN) then
begin
if grid1.Row <> grid1.RowCount-1 then // MARCHE BIEN
grid1.Row := grid1.Row + 1;
end;
end;
end; |
ma procédure après :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| procedure Tfrm1.grid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Row, Col : integer;
begin
Row := TDrawGrid(grid1).Row;
Col := TDrawGrid(grid1).Col;
if (Key = VK_RETURN) or (Key = VK_UP) or (Key = VK_DOWN) then
begin
grid1.DataSource.DataSet.Edit;
grid1.SelectedField.AsString := FormateVal(grid1.SelectedField.AsString); (* 1 *)
if (Key = VK_RETURN) then
begin
if Row <> TDrawGrid(grid1).RowCount-1 then (* 2 *)
TDrawGrid(grid1).Row := TDrawGrid(grid1).Row + 1;
end;
end;
end; |
(* 1 *)Ca ne marche pas. Il ne prend pas la valeur en cours de modification mais la valeur avant modif.
(* 2 *)Ca ne marche pas. A l'écran, quand je valide par entrée dans ma cellule, la cellule du dessous s'affiche en édition avec la valeur de la cellule du dessus.
Merci d'avance pour votre aide.