【发布时间】:2011-01-25 12:52:22
【问题描述】:
有时,根据应用程序的状态,表单上的击键可能有不同的配方。请参阅以下示例:
unit Unit1;
interface
uses
Windows,
Messages,
SysUtils,
Variants,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
ComCtrls,
Buttons;
type
TForm1 = class(TForm)
private
ListView1: TListView;
ButtonOK: TBitBtn;
ButtonCancel: TBitBtn;
procedure ButtonClick(Sender: TObject);
public
constructor Create(AOwner: TComponent); override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
constructor TForm1.Create(AOwner: TComponent);
begin
inherited CreateNew(AOwner);
ClientWidth := 300;
ClientHeight := 240;
ListView1 := TListView.Create(Self);
ListView1.Name := 'ListView1';
ListView1.Parent := Self;
ListView1.Height := 200;
ListView1.Align := alTop;
ListView1.AddItem('aaaaa', nil);
ListView1.AddItem('bbbbb', nil);
ListView1.AddItem('ccccc', nil);
ButtonOK := TBitBtn.Create(Self);
ButtonOK.Parent := Self;
ButtonOK.Left := 8;
ButtonOK.Top := 208;
ButtonOK.Kind := bkOK;
ButtonOK.OnClick := ButtonClick;
ButtonCancel := TBitBtn.Create(Self);
ButtonCancel.Parent := Self;
ButtonCancel.Left := 90;
ButtonCancel.Top := 208;
ButtonCancel.Kind := bkCancel;
ButtonCancel.OnClick := ButtonClick;
end;
procedure TForm1.ButtonClick(Sender: TObject);
begin
ShowMessage((Sender as TBitBtn).Caption);
Application.Terminate;
end;
end.
(要运行它,请创建一个标准的 VCL 应用程序并将 Unit1.pas 的内容替换为上述内容。)
如果启动应用程序并按下 Enter 或 Esc,则会“单击”相应的按钮。然而,当一个人开始编辑列表视图(通过在一个项目上单击一个半时间) Enter 和 Esc 应该接受或取消他们不接受或取消的编辑 - 他们仍然“点击”按钮。
如果在包含 cxGrid 的表单上使用快捷键 F2 或 F4 的操作(默认情况下使用这些快捷键启动编辑模式或下拉组合框),则存在类似情况编辑。
您知道如何继续使用 TButton.Default/Cancel 和操作的舒适性,而 不必 必须重新实现我使用的所有组件的键处理吗?
【问题讨论】:
标签: delphi keyboard-shortcuts vcl