有关窗体的问题,请帮忙。。。。。(100分)

  • 主题发起人 主题发起人 hong2002
  • 开始时间 开始时间
H

hong2002

Unregistered / Unconfirmed
GUEST, unregistred user!
cannot focus a disabled or invisible window 这是什么问题,我的代码是这样
if DM.ADOQMember.RecNo>=0 then
begin
MemberEditForm:=TMemberEditForm.Create(Application);
MemberEditForm.OPType :=1;
//设置操作类型为修改
DM.ADOQMember.edit;
if MemberEditForm.ShowModal=mrOK then
RefreshNum;
end;
如果把下面这样改就可以,
MemberEditForm.OPType :=0;
//设置操作类型为修改
 
是不是以上的操作太早了,所要操作的对象还没创建?
 
MemberEditForm.OPType :=1;
这条命令的问题,因为此时MemberEditForm 为a disabled or invisible window
所以MemberEditForm不能获得焦点!
 
你的窗体是什么类型,看看是不是没有show呀
 
RefreshNum干了什么,这个错误是一般是由于你想让一个
visible 为 false的form获得焦点引起的.
 
操作太早了,对象还没有建立。:)
 
以上的可能性,本人都试过还是不行啊,但就是不明白。为什么改为这样就可以呢
MemberEditForm.OPType :=0;
 
单步调试,看问题出在哪里. 从上面的代码可是看不出问题的.
 
如果在你的設置OPType的過程中,或者RefreshNUm過程中有SetFocus命令,一般都會出錯
因為我估計你在此時MemberEditForm是隱藏的
 
为0与为1时分别做了什么呢?要不单步调试一下,要不分段showmessage.我估计不是0和
1的问题。重点看看代码中涉及的窗体,如dm 是不是自动产生的,有没有引用没生成的
或不存在或不可见的窗体。还要是这样你就整段贴出来看看。
 
想问一下这命令怎么用的(inherited),请给出例子。
 
大致上inherited 表示查找父类的相应事件,如果后面跟上指定的函数名表示执行这个函数.
 
这是别人告诉我的:
inherited是支持子类函数调用父类的同类函数,
class B是class A的子类,于是class B就继承了class A的方法和属性,
此时如果B类的一个方法a是由A类继承而来的,这样B和A就有同名的c方法,
当在程序中为B类创建一个对象是,调用c则是对B类的调用,如果想调用A类的c方法就
必须用inherited
inherited是构造函数和析构函数时用到的!
constructor tworker.create(w:double);
begin
inherited create;//调用构造函数
wage:=w;
end;

inherited的意思是继承,
就是说继承父控件的相应方法,
inherited写在前面,则函数首先执行父控件的相应方法,
然后执行当前函数,
inherited写在后面,则函数首先执行当前语句,最后执行
父控件的相应方法,
不写inherited,则函数不执行父控件的方法。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部