1

我想自定义 TDBGrid:

1) 添加 onSelect/onUnselect 事件 - 例如有利于显示所选项目的数量。

2)在鼠标左键单击时删除选择项。我继承了 TDBGrid 并重写了 MouseDown,但是无法移动或调整列的大小:(

那么,该怎么做呢?

D2009

4

4 回答 4

1

这为我完成了工作:

implementation

{$R *.dfm}

type
  THackDBGrid = class(TDBGrid);
//for info on why we must do this, see:
//http://delphi.about.com/od/oopindelphi/l/aa082603a.htm

var
  LastValidRow: integer;

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
  //assign this to the TDBGrid.DataSource.DataSet.OnDataChange Event
  if 0 <> HiWord(GetKeyState(VK_LBUTTON)) then begin
    THackDBGrid(DBGrid1).Row := LastValidRow;
  end
  else begin
    LastValidRow := THackDBGrid(DBGrid1).Row;
    inherited;
  end;
end;
于 2009-01-29T15:05:41.127 回答
1

您需要检查 Selected 属性中的更改。

于 2009-01-29T14:02:26.450 回答
0

> 我认为您可能需要确保允许继承的 Mousedown 运行,以便执行标准的移动和调整大小行为。

但是继承的 MouseDown 在鼠标左键上进行选择,我只想在鼠标右键上选择/取消选择(例如在 TotalComander 中选择/取消选择)

于 2008-12-17T16:46:07.817 回答
0

我认为您可能需要确保允许继承的 Mousedown 运行,以便执行标准的移动和调整大小行为。

于 2008-12-17T14:57:30.140 回答