源程序如下:
unit zp;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, StdCtrls, DB, ADODB, Grids, DBGridEh;type
Tfmzp = class(TForm)
PMzp: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N31: TMenuItem;
N41: TMenuItem;
GPzp: TGroupBox;
edhth: TEdit;
procedure FormCreate(Sender: TObject);
procedure N41Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure edhthMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure edhthMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure edhthMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
procedure CreateParams(var Params: TCreateParams); override;
{ Public declarations }
end;var
fmzp: Tfmzp;
fdown:boolean;
FOldX, FOldy:integer; implementationuses Unit1, zp_list;{$R *.dfm}procedure Tfmzp.Createparams(var params: TCreateParams);
begin
inherited CreateParams(Params);
with params do
begin
params.Style:=WS_POPUP {or WS_BORDER};
Params.ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST or WS_EX_NOACTIVATE or WS_EX_WINDOWEDGE;
params.WndParent:=getDeskTopWindow;
end;
end;procedure Tfmzp.FormCreate(Sender: TObject);
begin
ShowWindow( Application.Handle, SW_HIDE );
SetWindowLong( Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE) or
WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
ShowWindow( Application.Handle, SW_SHOW );
with fmzp do
begin
Width:=gpzp.Width;
height:=gpzp.height;
end;
end;
procedure Tfmzp.N41Click(Sender: TObject);
begin
application.Terminate;
end;procedure Tfmzp.N1Click(Sender: TObject);
begin
if sender is TMenuItem then
MessageBox(handle, pchar('你点的是'+(sender as TMenuItem).Name+'!'), '', MB_ICONINFORMATION or MB_OK);
end;procedure Tfmzp.edhthMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbleft) then fdown:=true;
FOldX := X;
FOldy := Y;
end;procedure Tfmzp.edhthMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if FDown then
begin
fmzp.Left := fmzp.Left + X - FOldX;
fmzp.Top := fmzp.Top + Y - FOldY;
end;
end;procedure Tfmzp.edhthMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbleft) then fdown:=false;
end;
end.在这个悬浮窗口中包含了一个groupbox,其中有一个EDIT组件,每次运行时可以在其中输入数据,可当把焦点移出本程序后再回来,虽然光标在EDIT中闪,但输入不了。比如说我打开一个记事本程序,再运行我的程序,第一次可以在我的程序中输入,但当我把焦点移到记事本上,再单击我的程序,这时虽然在EDIT中出现了光标,可输入的东西还是在记事本程序上,这是为什么?
unit zp;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, StdCtrls, DB, ADODB, Grids, DBGridEh;type
Tfmzp = class(TForm)
PMzp: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N31: TMenuItem;
N41: TMenuItem;
GPzp: TGroupBox;
edhth: TEdit;
procedure FormCreate(Sender: TObject);
procedure N41Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure edhthMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure edhthMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure edhthMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
procedure CreateParams(var Params: TCreateParams); override;
{ Public declarations }
end;var
fmzp: Tfmzp;
fdown:boolean;
FOldX, FOldy:integer; implementationuses Unit1, zp_list;{$R *.dfm}procedure Tfmzp.Createparams(var params: TCreateParams);
begin
inherited CreateParams(Params);
with params do
begin
params.Style:=WS_POPUP {or WS_BORDER};
Params.ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST or WS_EX_NOACTIVATE or WS_EX_WINDOWEDGE;
params.WndParent:=getDeskTopWindow;
end;
end;procedure Tfmzp.FormCreate(Sender: TObject);
begin
ShowWindow( Application.Handle, SW_HIDE );
SetWindowLong( Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE) or
WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
ShowWindow( Application.Handle, SW_SHOW );
with fmzp do
begin
Width:=gpzp.Width;
height:=gpzp.height;
end;
end;
procedure Tfmzp.N41Click(Sender: TObject);
begin
application.Terminate;
end;procedure Tfmzp.N1Click(Sender: TObject);
begin
if sender is TMenuItem then
MessageBox(handle, pchar('你点的是'+(sender as TMenuItem).Name+'!'), '', MB_ICONINFORMATION or MB_OK);
end;procedure Tfmzp.edhthMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbleft) then fdown:=true;
FOldX := X;
FOldy := Y;
end;procedure Tfmzp.edhthMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if FDown then
begin
fmzp.Left := fmzp.Left + X - FOldX;
fmzp.Top := fmzp.Top + Y - FOldY;
end;
end;procedure Tfmzp.edhthMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbleft) then fdown:=false;
end;
end.在这个悬浮窗口中包含了一个groupbox,其中有一个EDIT组件,每次运行时可以在其中输入数据,可当把焦点移出本程序后再回来,虽然光标在EDIT中闪,但输入不了。比如说我打开一个记事本程序,再运行我的程序,第一次可以在我的程序中输入,但当我把焦点移到记事本上,再单击我的程序,这时虽然在EDIT中出现了光标,可输入的东西还是在记事本程序上,这是为什么?
解决方案 »
- idhttp 地址含有汉字和百分号(%)
- 如何在str:String尾补足空格,使str长度达到固定的20位?
- 放分,请按要求给一段源代码,关于读有类型文件的
- 各位好!我有一个DELPHI程序的问题请教?
- 哪個有沒有能夠打印條碼的報表,我有一個barcode但我不知道怎麼做一個label出來在條碼打印機上打出來100。
- 有人在Delphi中用过XML么?来谈谈使用感受。
- insert 语句写法问题
- 如何設置動畫的背景為透明???
- 怎样给滚动文本框输入文字呀??
- 自动注册webbrowser的问题?
- 为什么在新建的Mdi Application中主窗口放置的按钮在子窗口中也会出现,好像子窗口是透明的一样?
- [紧急求助]请各位达人帮忙,一个关于数据库初始化的问题
2、我在一个按钮的CLICK中加了一行代码把EDIT的readonly设为false,还是无效,还会不会有什么别的原因?
windows.SetForegroundWindow(application.Handle);一切OK!!