求翻译一下这段pascalprocedure Tw_main.N98Click(Sender: TObject)beginif frm_ksjj nil thenbeginPer
求翻译一下这段pascal
procedure Tw_main.N98Click(Sender: TObject);
begin
if frm_ksjj = nil then
begin
Perform(WM_SETREDRAW, 0, 0); //锁屏幕
//-----------------------------------------------------
frm_ksjj:= Tfrm_ksjj.Create1(self,'职能科室');
frm_ksjj.Tag := 10;
frm_ksjj.Show;
//-----------------------------------------------------
Perform(WM_SETREDRAW, 1, 0); //解锁屏幕并重画
RedrawWindow(Handle, nil, 0, RDW_FRAME + RDW_INVALIDATE +
RDW_ALLCHILDREN + RDW_NOINTERNALPAINT);
end
else
frm_ksjj.BringToFront;
end;
frm_ksjj:= Tfrm_ksjj.Create1(self,'职能科室');
frm_ksjj.Tag := 10;
frm_ksjj.Show;
这个可能就是一部分代码,如果需要提供其他代码我在贴上去
[解决办法]个人猜测:
frm_ksjj是一个通用的窗口,可以被多个其他窗口调用。
Create1是一个自定义的构造函数,self是指父窗口,'职能科室'应该是指这个窗口显示时的标题名。
frm_ksjj.Tag := 10;是给这个窗口的TAG付值,在这个窗口中,通过判断TAG,知道是谁调用的这个窗口。
[解决办法] frm_ksjj:= Tfrm_ksjj.Create1(self,'职能科室');//创建窗口
frm_ksjj.Tag := 10;//将窗口的Tag属性设置为10,应该是一个标识作用
frm_ksjj.Show;//显示窗口
//创建窗口部分调用的是Create1也就是在frm_ksjj重构的函数Create1,如下:
constructor Tfrm_ksjj.Create1(Aowner: TComponent;sign:String);
var
i:integer;
begin
inherited Create( AOwner );//调用窗口类的Tfrm_ksjj的默认创建方法
sgn := sign; //将传进来的sign赋值给sgn保存
end;
所以,frm_ksjj:= Tfrm_ksjj.Create1(self,'职能科室');中第一个参数传递的主窗口;第二个参数是将'职能科室'传递进去,最终在Create1赋值给sgn