在Delphi 7的TMemo控件中,尝试使用键组合Ctrl + A
来选择所有操作不会做任何事情(不会全部选择)。所以我做了这个程序:
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
C: String;
begin
if ssCtrl in Shift then begin
C:= LowerCase(Char(Key));
if C = 'a' then begin
Memo1.SelectAll;
end;
end;
end;
是否有一个技巧,以便我不必执行此过程?如果没有,那么这个程序看起来不错吗?
答案 0 :(得分:25)
这更优雅:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = ^A then
begin
(Sender as TMemo).SelectAll;
Key := #0;
end;
end;
答案 1 :(得分:0)
我使用前面的答案和讨论来创建一个独立的组件来处理我在小型测试程序中使用的KeyPress事件。
TSelectMemo = class(TMemo)
protected
procedure KeyPress(var Key: Char); override;
end;
...
procedure TSelectMemo.KeyPress(var Key: Char);
begin
inherited;
if Key = ^A then
SelectAll;
end;
向表单上的所有组件添加“全选”行为的另一种方法是使用标准的全选操作向表单添加操作列表。