就是F1打开,F2取消,Tab移动.
谢谢。
谢谢。
解决方案 »
- Statement expected but 'PROCEDURE' found,请高手解决
- 【求助】大家遇到过这样的问题吗?
- 请大家为我详述一下什么是'字节填充技术'
- 还剩40分吧.MDI登陆问题!
- 請問如何在delphi中調用dll函數
- 如何在远程服务器上查找指定的文件?
- 毕业了!散分
- ●◆●请问: TTeThemeButton , TTeThemePanel , TTeThemeCheckBox ...这套组件在哪里可以下???还有TKsMessageForm ,谢了●◆●
- 怎样获得Windows系统自身的关机对话框?
- 我用tquery控件得到一个数据集,我想修改用query.edit,但却告诉我该数据集只读,为什吗,怎吗办??急
- 最近在學delphi,散分了!24小時之後結帖,大家接分啊!
- 我就不想念Delphi中没有高手!!!
如果是F1的键值,你就将Enter键的消息发出去。
以前写过,具体不太记得。
所以如果实现那样的话
可以自己做一个opendialog
将之包起来。自已做个OnKeyDown事件。
难道还有delphi做不了的事吗??
:))
加如下定义:
private
FOnKeyDown: TKeyDownEvent; protected
procedure TriggerKeyDownEvent(var Key: Word; Shift: TShiftState); virtual; published
property OnKeyDown: TKeyDownEvent read FOnKeyDown write FOnKeyDown;procedure TMyclass.TriggerKeyDownEvent(var Key: Word; Shift: TShiftState);
begin
if assigned(FOnKeyDown) then
FOnKeyDown(Self, Key, Shift);
end;
加一个事件,其它所有事件,属性继承过来。
再写事件代码。
至于,如可写可视化组件,不用在这说了吧。
procedure CMDialogKey(var Msg: TCMDialogKey); message cm_DialogKey;写如下代码:
procedure TForm1.CMDialogKey(var Msg: TCMDialogKey);
begin
if (Msg.CharCode = VK_RETURN) then
begin
Perform (CM_DialogKey, VK_TAB, 0);
Msg.Result := 1;
//MessageDlg('FKDKD'+#13+#10+'', mtWarning, [mbOK], 0);
end
else
inherited;
end;
当你按下回车键时,会将消息转为TAB消息送到消息队列中。
这样当你按下回车键时,相当于按下一个TAB键。但是我用VK_F1代换VK_RETURN 时,没有反映,也许系统有比较高的响应权,被操作系统截住了。
但我用其它的值,就可用了。下面是一些消息值:VK_F1 = 112;
{$EXTERNALSYM VK_F2}
VK_F2 = 113;
{$EXTERNALSYM VK_F3}
VK_F3 = 114;
{$EXTERNALSYM VK_F4}
VK_ESCAPE = 27;
{$EXTERNALSYM VK_SPACE}
VK_TAB = 9;
{$EXTERNALSYM VK_CLEAR}
VK_RETURN = 13;
{$EXTERNALSYM VK_SHIFT}你再想想办法吧。
是Windows的API函数,它的作用就是显示一个Windows公共对话框(文件选择),Delphi的TOpenDialog就是调用它。再怎么重载也没有用的。