在protected下写:
procedure KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); override; //注意不要将KeyDown写成FormKeyDown实现:
procedure TBaseForm.KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited KeyPress(Key);
//你的代码
end;另外:
constructor TBaseForm.Create(AOwner: TComponent)
begin
TBaseForm.OnKeyDown = FormKeyDown;//这句不要了。还要提醒你,重载方法时,要加上inherited。
end;
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
I.Desire := '加不加分随你';
—————————————————————————————————
procedure KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); override; //注意不要将KeyDown写成FormKeyDown实现:
procedure TBaseForm.KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited KeyPress(Key);
//你的代码
end;另外:
constructor TBaseForm.Create(AOwner: TComponent)
begin
TBaseForm.OnKeyDown = FormKeyDown;//这句不要了。还要提醒你,重载方法时,要加上inherited。
end;
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
I.Desire := '加不加分随你';
—————————————————————————————————
解决方案 »
- 问一个关于StretchDIBits函数的问题
- 关于三层C/S结构中clientdataset数据刷新问题(急!急!急!)
- 求code128条码字库
- 如何将一个已有的应用程序链接到自己的程序中?比如将计算器连到程序中
- 财务软件帐薄的标题头是怎么做的,dbgrid的列头怎么做不到那样的效果
- 用delphi自动配置odbc数据源时如果是Sql server数据库如何配置?
- QuickReport的问题
- 我用ClientSocket和ServerSocket做了一个通讯程序,在局域网能连通,在Internet就不行了,为什么?
- 关于URL参数的问题
- 告急:如何利用TListview自定义...Draw事件设置ListView中的某个SubItem具有不同与ListView的Font?
- win2000系统的问题:为什么每次都有快捷方式连接不上的报错?
- 如何以变量做为属性的名称给属性赋值?也说不清,还内容吧!高手请指教!
就是告诉我在基类中没有找到KEYDOWN 啊
不是在建立新的子类窗体时,从你工程中已有的窗体继承过来就行了。(New|project1|BaseForm)
然后激活子类窗体的KeyDown事件,然后在代码中都会自动添加Inherited的。
我只想继承那个窗体的一个FORKEYDOWN事件啊上面那位兄弟有办法吗?
有你这样的需求吗?
如果真要这样,那就直接调用父类KeyDown事件的Published方法
那么你在编辑Form1的时候双击button1进去写的东西不是在定义Form1这个实例,事实上你是在定义TForm1这个子类。procedure TForm1.Button1Click(sender:tobject);
不是procedure TForm.Button1Click(sender:tobject);运行的时候所看到的窗体Form1是在dpr文件里面创建的:application.createform(form1,tform1);这里创建的Form1才是属于TForm1的实例。那么既然form1这个实例能响应TForm1里面定义好的Button1click这个事件,其实Button1click就是消息循环分发消息以后由窗口事件调用的。那么你想写一个新类继承自TForm1当然也可以了!因为procedure TForm1.Button1Click(sender:tobject);是在Tform1的publish部分声明的(没有说明表示是publish部分)。但是你要重载它,就要加上inherited关键字,否则不能调用TForm1里面定义过的Button1Click FormKeyDown同理!