如何让Edit不获得Focus(50分)

  • 主题发起人 主题发起人 delphi999
  • 开始时间 开始时间
D

delphi999

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大哥:
如何让Edit不获得Focus
例如focus原来在Edit1,然后click/tab/enter Edit2,但是focus不动,
还是在Edit1 ,而Edit2的Enabled为True.
 
在Edit的Enter事件中加上
perform(WM_NEXTDLGCTL,0,0);
 
拦截焦点消息
 
设置属性TabStop为False 即可
 
My GOD!
直接把Edit2的TabStop设为false不就行了?
 
将edit2的tabstop属性设置为False,则执行tab切换功能时edit2就可以不获得焦点;
 
同意55555和杜宝,可惜来迟了。
 
各位大哥:
将TabStop设为false。只是防止了Tab键啊,如故你用mouse CLICK的话……
zhao0707大哥,多问一句。如何拦截焦点消息呢?
 
或者这样写
procedure TForm1.Edit1Exit(Sender: TObject);
begin
edit1.setfocus;
end;
 
TO Brave:老大这招也太狠了吧[:D]
 
一、不如你用Label控件来显示,可以不获得焦点。
二、为什么非要不能用鼠标点Edit呢?能不能说说。
 
其实我是想当TEdit的Enabled为False时,字体的颜色不为灰。
有相应的DisableColor。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=686983
 
同意Brave的做法,
如果你想使Enabled在使用意义上False时,而字体不变灰,只需在onenter事件中指定窗体上任意其他控件为setfocus
适合于任意编辑控件
 
Edit2.ReadOnly:=True;
 
这个蠢驴!
 
可以实现,但必须在运行时创建对象:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

type TStaticEdit=class(TEdit)
protected
procedure CreateParams(var Params: TCreateParams); override;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}


procedure TStaticEdit.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
CreateSubClass(Params, 'STATIC');
end;

procedure TForm1.FormShow(Sender: TObject);
begin
with TStaticEdit.Create(self) do begin
Parent:=self;
left:=0;
top:=0;
width:=400;
Text:='This EDIT control can not be focused!';
end;
end;

end.
 
建议你直接使用WINCONTROL 的TSTATICText,与edit区别只是边框稍有不同。
 
接受答案了.
 

Similar threads

后退
顶部