也许这会有所帮助。它显示了一个捕获常规 TStringGrid 滚动事件的示例。同步两个 TStringgrids 的滚动?
TCustomGrid中有WMHScroll过程,但它是私有的。您不能在DBGrid中使用它。
您将必须创建自己的TDBGrid后代并执行自己的操作
procedure WMHScroll(var Msg: TWMHScroll); message WM_HSCROLL;
Run Code Online (Sandbox Code Playgroud)
或进行一些严重的恶意入侵...
更新:欺骗/黑客将您的代码潜入...
[...]
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids;
type
// Hack to redeclare your TDBGrid here whitout the the form designer going mad
TDBGrid = class(DBGrids.TDBGrid)
procedure WMHScroll(var Msg: TWMHScroll); message WM_HSCROLL;
end;
TForm8 = class(TForm)
DBGrid1: TDBGrid;
DataSource1: TDataSource;
ADODataSet1: TADODataSet;
ADOConnection1: TADOConnection;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form8: TForm8;
implementation
{$R *.dfm}
{ TDBGrid }
procedure TDBGrid.WMHScroll(var Msg: TWMHScroll);
begin
case Msg.ScrollCode of
SB_ENDSCROLL: OutputDebugString('SB_ENDSCROLL') ;
SB_LEFT:OutputDebugString('SB_LEFT');
SB_RIGHT:OutputDebugString('SB_RIGHT');
SB_LINELEFT:OutputDebugString('SB_LINELEFT');
SB_LINERIGHT:OutputDebugString('SB_LINERIGHT');
SB_PAGELEFT:OutputDebugString('SB_PAGELEFT');
SB_PAGERIGHT:OutputDebugString('SB_PAGERIGHT');
SB_THUMBPOSITION:OutputDebugString('SB_THUMBPOSITION');
end;
inherited; // to keep the expected behavior
end;
[...]
Run Code Online (Sandbox Code Playgroud)
Update2:请注意,您可以将特殊的TDBGrid代码移动到单独的单元(推荐),只需确保在Form的uses子句中将此单元名称AFTER DBGrids放入即可。
| 归档时间: |
|
| 查看次数: |
9416 次 |
| 最近记录: |