关于函数指针 我将一个类函数扶植给两个控件的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. 如何调用VBA中的函数 教刚学编程的人什么语言比较好?? 我的全部家当了,ERWIN中建立表的字段问题!!! 怎么按条件查询 Delphi新手问题? 新手上線:查詢一個适合條件的記錄保存在臨時表中,請大冢幫幫我!我的代碼出現錯誤 请教!在一个EDIT里,我想让输入字的长度等于3的时候就自动执行回车,该如何写? Sql 多表关联,快来帮忙呀!!! 今天收到一北京律师事务所的来信,要求对我的软件进行版权登记保护,大家认为有必要吗? 如何对字符串分为子串 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.