首页
社区
课程
招聘
[求助]粘贴版被禁用,怎样启用
发表于: 2005-11-22 08:29 6047

[求助]粘贴版被禁用,怎样启用

2005-11-22 08:29
6047
有一个程序启动后粘贴版被禁用(只在程序内部窗口被禁用程序外仍可使用),我想利用delphi写一个程序让它在程序内内部使用请问怎样来完成?

[培训]传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 238
活跃值: (326)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
2
在主窗口的 FormKeyDown 事件中,拦截 Ctrl 键,当Ctrl键被按下时,利用SetFocus命令,将窗体上某个不相关的组件设置聚集即可。
当然你还可以再判断 C 键被按下,但一般没有必要。
2005-11-22 20:24
0
雪    币: 235
活跃值: (50)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
3
能否再详细一些!谢谢!
2005-12-1 16:32
0
雪    币: 238
活跃值: (326)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
4
假设窗体上有两个组件,一个是Memo,一个是Button键,一个退出程序的Button键,当 Ctrl 键被按下时,将聚集控制转移到 Button 键,这样,别人就没有办法将 Memo 中的内容拷贝出去。下面是代码:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if ssCtrl in Shift then
//  if Key = VK_CONTROL then
    Button1.SetFocus;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Close;
end;

end.

其中:
  if ssCtrl in Shift then
  if Key = VK_CONTROL then
这两句的作用是一样的,随便你喜欢使用那一句,但第一句可以将判断扩充的更详细,例如:
  if ssCtrl in Shift then
    if Key = VK_C then
      Button1.SetFocus;

这样就只控制拷贝键 Ctrl-C。
2005-12-1 23:26
0
雪    币: 235
活跃值: (50)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
5
感谢楼上朋友的帮助
2005-12-2 08:24
0
雪    币: 238
活跃值: (326)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
6
忘了一点,那就是Memo组件的KeyDown事件或别的需要控制的组件的KeyDown需要将 OnKeyDown 指向 FormKeyDown。
2005-12-2 09:08
0
游客
登录 | 注册 方可回帖
返回