本人动态生成了一个STRIGNGRID,想实现当光标落在某一行的时候,按DEL键实现删除该条记录的目的,请问应该如何实现呢?

解决方案 »

  1.   

    在它的OnKeyDown事件里写:
      if Key=VK_DELETE then
       StringGrid.Rows[StringGrid.Row].Text:='';
      

  2.   

    刚给你做了一个,完整代码如下;D7,WINXP下测试通过。
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Grids, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;    procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        c : integer;
        r : integer;
        procedure MygeteditText(Sender: TObject; ACol, ARow: Longint; var Value: string);
        procedure MyKeydown(Sender: TObject; var Key: Word; Shift: TShiftState) ;
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.MygeteditText(Sender: TObject; ACol, ARow: Integer;
      var Value: string);
    begin
           c := ACol;
       r := ARow;
    end;procedure TForm1.MyKeydown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
        if key = VK_DELETE then
        (Sender as TStringGrid).Cells[c,r] := '';
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
    s  : TStringGrid;
    begin
        s := TStringGrid.Create(nil);
        s.Parent := Form1;
        s.Left := 10;
        s.Top := 10;
        s.Options := [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing];
        s.OnGetEditMask := MygeteditText;
        s.OnKeyDown := MyKeydown;
    end;end.