当前位置:主页>仓库管理软件> 列表

如何使Edit,Combobox,RadioGroup等控 找局域网管理软件下载

财务软件版1楼: 大家好,请问如何使Edit,Combobox,GroupRadio等控件不接受焦点

注明一点,我不想用其Enable属性设为False,因为那样会文字呈灰色.不好看.
我只是想不接受焦点,即不能修改就好了.比如像Label那种的

2楼: readonly:=true 如仓库进销存账报表

3楼: 1\ 有一个焦点设置失效的属性,但仍可用鼠标点

2\得到焦点时,将焦点移动到下一个组件,如果这是最后一个组件,移动到第一个组件

4楼: 1是TabStop属性

5楼: 能否修改是ReadOnly属性

6楼: 谢各位的回答.
西山居士,SiWeiLiuLang都不是我想要的效果.

西山居士:ReadOnly属性那样只是只读,但是还是会接受鼠标.
SiWeiLiuLang:TabStop属性只有按Tab键的时候不接受,一样会接受鼠标.


我是想能够不接焦点,即Enable那样,但是文字不呈灰色.即显示正常的颜色就好

谢谢各位

财务软件版7楼: 我刚才的回答怎么不见了?
举例:
procedure TForm1.Edit1Enter(Sender: TObject);
begin
//如果该控件获得焦点,那么将焦点转到下一个控件上。
SelectNext((Sender as TEdit), True, False);
//如果上述的操作没有成功,那么说明可能这是最后一个控件了,那么选择第一个控件
if (Sender as TEdit).Focused then
SelectFirst;
end;

8楼: royal1442这个方法可行.

不知哪位还有更好的方法?

9楼: 行不行试试看不就知道了?这个方法的缺点是:如果窗体里面只有一个控件,那么无法不让其获得焦点!回答完毕!

10楼: 谢谢royal1442的解答!!
我有试过此方法可以.
只是想还有没有更好的办法啊.是不是很贪心啊,呵呵~~~

另外请教royal1442,怎么记录上次的焦点?这样在不要接受焦点的控件上.还返回到上次的焦点感觉就很完美了.谢谢.

11楼: //利用消息过滤
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FOldProc: TWndMethod;
public
{ Public declarations }
procedure EdtWndProc(var Message: TMessage);
end;

var


Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.EdtWndProc(var Message: TMessage);
begin
case message.msg of
WM_KEYDOWN..WM_KEYLAST: Exit;
WM_MOUSEMOVE: begin
Edit1.cursor:=crarrow;
exit;
end;
WM_SETFOCUS: Exit;
else FOldProc(Message);
end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
FOldProc := Edit1.WindowProc;
Edit1.WindowProc := EdtWndProc;
end;

end.

12楼: 虽然贪心是人类进步的动力,但是,不能太贪!呵呵 如局域网管理软件下载

13楼: royal1442请有空再帮我解答一下啊.

::请教royal1442,怎么记录上次的焦点?这样在不要接受焦点的控件上.还返回到上次的焦点感觉就很完美了.谢谢.

jfyes您好!利用消息过滤真不错,谢谢~~

财务软件版14楼: 用户的操作是随机的,要想做到的话,需要自己记录控件获取焦点的顺序,太麻烦了!
个人认为完全没有必要!只要能使当前控件的下一个控件获得焦点就行了!

15楼: 谢谢~~

我的msn:zxy666666@hotmail.com