关于函数指针 我将一个类函数扶植给两个控件的OnKeyDown事件,我在代码中如何比较这两个控件使用的是OnKeyDown是同一个函数?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看Sender是不行的,我不是在函数内比较,而是在函数外比较后,如果不等于某个函数,重新赋值.请大家帮忙 unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class( TForm ) Button1: TButton; Button2: TButton; B_Check: TButton; procedure B_CheckClick( Sender: TObject ); procedure FormCreate( Sender: TObject ); private P_OnKeyDown1, P_OnKeyDown2: Pointer; procedure KE1( Sender: TObject; var Key: Word; Shift: TShiftState ); procedure KE2( Sender: TObject; var Key: Word; Shift: TShiftState ); public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate( Sender: TObject );begin Form1.Button1.OnKeyDown := KE1; Form1.Button2.OnKeyDown := KE2; //改为 Form1.Button2.OnKeyDown := KE1; 试一下end;procedure TForm1.B_CheckClick( Sender: TObject );begin P_OnKeyDown1 := @Form1.Button1.OnKeyDown; //检察是否同一例程 P_OnKeyDown2 := @Form1.Button2.OnKeyDown; ShowMessage( inttostr( integer( P_OnKeyDown1 ) ) ); ShowMessage( inttostr( integer( P_OnKeyDown2 ) ) ); if P_OnKeyDown1 = P_OnKeyDown2 then ShowMessage( 'YES' ) else ShowMessage( 'NO' );end;procedure TForm1.KE1( Sender: TObject; var Key: Word; Shift: TShiftState );begin ShowMessage( 'This is KE1' );end;procedure TForm1.KE2( Sender: TObject; var Key: Word; Shift: TShiftState );begin ShowMessage( 'This is KE2' );end;end. DELPHI 正则问题 web 中能否把记录集对象传给fastreport?? 请教有关Locate函数出现的问题??? dggrid背景色问题 第二届深圳Delphi爱好者聚会通知 关于NMHTTP控件的问题 菜鸟大放100分,如何继承FORM,使得在设计期间,就可看到被继承窗体的控件? 结束进程 连不上sourceforge的CVS服务器,可能是端口被封了,请哪位帮帮忙,谢谢 急。高手请进! halfdream(哈欠)、jinjazz(人雅的标记--落寞刺客) 接分 [请教]选择用AdoCommand还是选择用AdoQuery?
请大家帮忙
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class( TForm )
Button1: TButton;
Button2: TButton;
B_Check: TButton;
procedure B_CheckClick( Sender: TObject );
procedure FormCreate( Sender: TObject );
private
P_OnKeyDown1, P_OnKeyDown2: Pointer;
procedure KE1( Sender: TObject; var Key: Word; Shift: TShiftState );
procedure KE2( Sender: TObject; var Key: Word; Shift: TShiftState );
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.FormCreate( Sender: TObject );
begin
Form1.Button1.OnKeyDown := KE1;
Form1.Button2.OnKeyDown := KE2;
//改为 Form1.Button2.OnKeyDown := KE1; 试一下
end;
procedure TForm1.B_CheckClick( Sender: TObject );
begin P_OnKeyDown1 := @Form1.Button1.OnKeyDown; //检察是否同一例程
P_OnKeyDown2 := @Form1.Button2.OnKeyDown; ShowMessage( inttostr( integer( P_OnKeyDown1 ) ) );
ShowMessage( inttostr( integer( P_OnKeyDown2 ) ) ); if P_OnKeyDown1 = P_OnKeyDown2 then
ShowMessage( 'YES' )
else
ShowMessage( 'NO' );end;procedure TForm1.KE1( Sender: TObject; var Key: Word; Shift: TShiftState );
begin
ShowMessage( 'This is KE1' );
end;procedure TForm1.KE2( Sender: TObject; var Key: Word; Shift: TShiftState );
begin
ShowMessage( 'This is KE2' );
end;end.