你到http://www.csdn.net/expert/topic/428/428117.shtm去看看,我已经回答你啦

解决方案 »

  1.   

    设置edit1的visible 为False;procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
        if (gdFocused in State) then
        begin
            if Field.FieldName ='RKSL'  then
            begin
                edit1.Left := Rect.Left + DBGrid1.Left;
                edit1.Top := Rect.Top + DBGrid1.Top;
                edit1.Width := Rect.Right - Rect.Left;
                edit1.Height := Rect.Bottom - Rect.Top;
                edit1.Visible := True;
            end;
        end;
    end;procedure TForm1.DBGrid1ColExit(Sender: TObject);
    begin
        if DBGrid1.SelectedField.FieldName ='RKSL' then
            edit1.Visible := False;
    end;procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
        if Key <> chr(9) then
        begin
            if DBGrid1.SelectedField.FieldName = 'RKSL' then
            begin
                Edit1.SetFocus;
                SendMessage(Edit1.Handle,WM_CHAR,WORD(Key),0);
            end;
        end
    end;