有關 button 的 short -cut key |
尚未結案
|
hkguy80
一般會員 發表:20 回覆:21 積分:8 註冊:2004-09-06 發送簡訊給我 |
|
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
Hi hkguy80 你好:
這需要覆寫TButton的CMDialogChar Message funtion, 參考一下
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, TlHelp32, StdCtrls; type TButton = class(StdCtrls.TButton) private procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; end; TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('abc'); end; { TButton } procedure TButton.CMDialogChar(var Message: TCMDialogChar); begin if not (ssAlt in KeyDataToShiftState(Message.KeyData)) then exit; with Message do if IsAccel(CharCode, Caption) and CanFocus then begin CharCode := CharCode; Click; Result := 1; end else inherited; end; end.我不是高手, 高手是正在銀幕前微笑的人.
------
我不是高手, 高手是正在銀幕前微笑的人. |
hkguy80
一般會員 發表:20 回覆:21 積分:8 註冊:2004-09-06 發送簡訊給我 |
|
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
提供給個兩個做法
1.一個Form只要加一次, 有用到TButton的Form都加上
TButton = class(StdCtrls.TButton) private procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; end;2.將StdCtrls複製到你專案, 直接改寫如下也行 procedure TButton.CMDialogChar(var Message: TCMDialogChar); begin if not (ssAlt in KeyDataToShiftState(Message.KeyData)) then exit; with Message do if IsAccel(CharCode, Caption) and CanFocus then begin CharCode := CharCode; Click; Result := 1; end else inherited; end;我不是高手, 高手是正在銀幕前微笑的人.
------
我不是高手, 高手是正在銀幕前微笑的人. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |