点击按钮时,使程序触发Ctrl+A(全选事件)

jhldelphi 2009-09-01 01:55:29
点击按钮时,使程序触发Ctrl+A(全选事件)

...全文
688 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
swetter_hundsun 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 willflyz 的回复:]
Delphi(Pascal) code
keybd_event(VK_CONTROL,0, KEYEVENTF_EXTENDEDKEYor0,0);
keybd_event(65,0, KEYEVENTF_EXTENDEDKEYor0,0);
keybd_event(65,0, KEYEVENTF_EXTENDEDKEYor KEYEVENTF_KEYUP,0);
keybd_event(VK_CONTROL,0, KEYEVENTF_EXTENDEDKEYor KEYEVENTF_KEYUP,0);
65 = Ord('A')
[/Quote]

UP~~~楼主要详细说明下要全选哪些内容,是当前激活窗口的文字或图片吗?
wxsan 2009-09-02
  • 打赏
  • 举报
回复
不知道你想在什么控件上全选?
fang 2009-09-02
  • 打赏
  • 举报
回复
//.pas
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

const
WM_Key = WM_User + 100;
Alt_A = $410001;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
procedure WMKey(var Msg: TMessage);message WM_Key;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMKey(var Msg: TMessage);
begin
if (Msg.LParamLo = Mod_Alt) and (Msg.LParamHi = 65) then
ShowMessage('Alt + A');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(Self.Handle,WM_Key,0,Alt_A);
{
Keybd_Event(Mod_Alt,0,0,0);
Keybd_Event(65,0,0,0);
Keybd_Event(65,0,KEYEVENTF_KEYUP,0);
Keybd_Event(Mod_Alt,0,KEYEVENTF_KEYUP,0);
}
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage('Alt + A');
end;

//.dfm

object Form1: TForm1
Left = 192
Top = 107
Width = 267
Height = 124
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 32
Top = 24
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
OnClick = Button1Click
end
object Button2: TButton
Left = 136
Top = 24
Width = 75
Height = 25
Caption = 'Open(&A)'
TabOrder = 1
OnClick = Button2Click
end
end

不知道你说的哪个,两个都给出了,其它打开的窗体要响应Alt+A的话定义WK_Key的处理事件即可.
willflyz 2009-09-01
  • 打赏
  • 举报
回复

keybd_event(VK_CONTROL, 0, KEYEVENTF_EXTENDEDKEY or 0, 0);
keybd_event(65, 0, KEYEVENTF_EXTENDEDKEY or 0, 0);
keybd_event(65, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);

65 = Ord('A')
de410 2009-09-01
  • 打赏
  • 举报
回复
你具体什么组件需要全选?


常见的如下
procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.SelectAll;
edit1.SelectAll;
combobox1.SelectAll;
end;

jhldelphi 2009-09-01
  • 打赏
  • 举报
回复
能不能详细点
de410 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liangqingzhi 的回复:]
发送EM_SETSEL消息或者用keybd_event模拟Ctrl+A
[/Quote]
up~~
老之 2009-09-01
  • 打赏
  • 举报
回复
发送EM_SETSEL消息或者用keybd_event模拟Ctrl+A

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧