获得焦点,为什么会出现“cannot focus a disabled or invisible windows!” (请一定帮帮我啊)(50分)

  • 主题发起人 主题发起人 shephard
  • 开始时间 开始时间
S

shephard

Unregistered / Unconfirmed
GUEST, unregistred user!
frm_quanxian打开frm_ygselect,在按了frm_ygselect上一按钮后关闭frm_ygselect,
并且使frm_quanxian上的dbedit1获得焦点,为什么会出现“cannot focus a disabled
or invisible windows!“,(dbedit1的ENABLED肯定是TRUE)
代码如下:

procedure Tfrm_main.N26Click(Sender: TObject);
begin
frm_quanxian:=Tfrm_quanxian.Create(Application) ;
runform(Tfrm_quanxian);
end;

function RunForm(TForm:TFormClass):Integer;
begin
with TForm.Create(Application) do
begin
ShowModal;
Free;
end;
end;

procedure Tfrm_ygselect.BitBtn1Click(Sender: TObject);
begin
close;
frm_quanxian.dbedit1.SetFocus ;
end;
 
click的时候,窗体还没有创建,怎么赋予焦点?为什么不写成:
begin
try
application.createform(t........,....);
......showmodal
finally
.....free;
end;
end;
在onshow事件里给edit赋予焦点.
 
frm_ygselect还没有真正close掉,焦点不会回到frm_quanxian的
你的方法不对,应该如此:
在frm_quanxian的打开frm_ygselect的事件中:
frm_ygselect := Tfrm_ygselect.create(Application);
frm_ygselect.ShowModal;
dbedit1.SetFocus;//在关闭frm_ygselect后发生
frm_ygselect.Free;
 
N26Click创建了一个Tfrm_quanxian
为什么紧接着又在RunForm创建一个?
 
frm_quanxian:=Tfrm_quanxian.Create(Application) ;
frm_quanxian.ShowModal;
frm_quanxian.Free
就可以了嘛
 
不要把setfocus放到close;后,可以放到formActive中,如果不是每次active都获得
这个焦点,可以设几个变量来控制,我一直都是这么做的,呵呵,萧兄,还认识我吧?
 
够乱
窗体的定义.
[:D]
 
我怎么看这代码那么别扭![:(]
 
所有能setfocus的控件都必须可visible的!!
如果你在一个窗体的create中setfocus窗体上的某一控件就会触发类似的错误!!!
 
多人接受答案了。
 
后退
顶部