如何用一个自定义函数替换DbGrid的OnKeyDown ??? 全库薪家只有40分, 不好意思! ( 积分: 40 )

  • 主题发起人 主题发起人 knack
  • 开始时间 开始时间
K

knack

Unregistered / Unconfirmed
GUEST, unregistred user!
如何用一个自定义函数替换DbGrid的OnKeyDown ?? 全库薪家只有40分, 不好意思!
问题: 有一个FORM1 和一个 MyFunc.pas
FORM1 里有一个 DbGrid1.
MyFunc.pas 里有两个函数,一个为 DoMyKeyProc,另一个为.MyKey(Sender: TObject; var Key: Word; Shift: TShiftState) 。
目标是在 FORM1 创建时执行 DoMyKeyProc , 使 DbGrid1.OnKeyDown:=MyKey 。
分数少了点,但希望高手能帮忙帮忙!
 
如何用一个自定义函数替换DbGrid的OnKeyDown ?? 全库薪家只有40分, 不好意思!
问题: 有一个FORM1 和一个 MyFunc.pas
FORM1 里有一个 DbGrid1.
MyFunc.pas 里有两个函数,一个为 DoMyKeyProc,另一个为.MyKey(Sender: TObject; var Key: Word; Shift: TShiftState) 。
目标是在 FORM1 创建时执行 DoMyKeyProc , 使 DbGrid1.OnKeyDown:=MyKey 。
分数少了点,但希望高手能帮忙帮忙!
 
你的domykeyproc带一个这样的参数就可以了。
procedure domykeyproc( tmpgrid:TDBGrid );
begin
tmpgrid.OnKeyDown:= .mykey;
end;
在form1的create事件里调用 domykeyproc(dbgrid1)就行。
 
感谢zhj09 , 你的方法我早前已试过了, 但不行, 不知是否我自己写的代码有问题, 现把代码列写, 望各位DX帮帮忙!!
--- Form1 --------------------------------------
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, MyFunc;

type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
DoMyKeyProc(self,dbgrid1);
end;

end.

--- MyFunc.pas --------------------------------------
unit MyFunc;

interface

uses
Windows, Messages, SysUtils, Dialogs, Forms, Classes, Menus, Controls,
Grids, DBGrids;

procedure DoMyKeyProc(m_form: Tform ; m_grid: TDBGrid ) ;

procedure MyKey(Sender: TObject; var Key: Word; Shift: TShiftState);


implementation

procedure DoMyKeyProc(M_form: Tform ; M_grid : TDBGrid);
begin
with m_form do
m_grid.OnKeyDown := MyKey ;
end;
end;

procedure MyKey(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
showmessage('ok');
end;

end.
---------------------------------------
 
今晚终于用另一种方法达到我的目的了, 原目的是在DbGrid上按下一个特定的键时执行一个指定的程序。
现在的方法是动态在DbGrid上创建一个快捷菜单, 菜单项执行指点的程序,同时菜单项的ShortCut设置指定的热键, 这样就OK了 !!! 既可有快捷菜单点Click , 也可按快捷键,一举两得!!! ^o^
还是感谢 zhj09 的热心, 少少的分数谢不要嫌弃!
 
后退
顶部