起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 284|回复: 11

【结贴】异常问题

[复制链接]
发表于 2009-12-8 09:14:32 | 显示全部楼层 |阅读模式
同一份数据库,在A台服务器出现问题如图。在B台则没有任何问题。

该功能是主窗体与子窗体同用一业务信息
如果在主窗体打开子窗体时,设置主窗体的数据集为Enabled:=State则又不出现这问题,请问怎么解决?

未命名.jpg

96.66 KB, 下载次数: 120

回复

使用道具 举报

发表于 2009-12-8 09:30:51 | 显示全部楼层
请楼主百度中搜索一下。
http://www.baidu.com/s?wd=cannot+change+visible
回复 支持 反对

使用道具 举报

发表于 2009-12-8 09:31:24 | 显示全部楼层
看看代码停到的位置
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-8 10:44:47 | 显示全部楼层
最初由 lixy 发布
[B]看看代码停到的位置 [/B]


调试的时候是没问题的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-8 10:47:52 | 显示全部楼层
procedure TBZZLXX.DataGrid1DblClick(Sender: TObject);
var
   Str : String;
begin
     if DataSetBroker1.DataSet.IsEmpty then
     begin
          dialogs.ShowMessage('没有记录, 不能修改!');
          exit;
     end;

     Str:=DataSetBroker1.DataSet.FieldByName('ZLBS').AsString;

     if not Assigned(lForm) then
     lForm := TZJ.Create(self.Context);
     try
        lForm.Caption := '修改';
        lForm.ty:='修改';
        if not((cPositionMemberName='标准管理员') and (cDeptName='总工办')) then
        begin
           lForm.Caption := '查看';
           lForm.ty:='查看';
           DataSetState(False);  //设置数据集的Enabled
           lForm.DataSetBroker1.DataSet.ReadOnly:=True;
           lForm.DataSetBroker2.DataSet.ReadOnly:=True;
           lForm.DataSetBroker4.DataSet.ReadOnly:=True;
           lForm.DataSetBroker5.DataSet.ReadOnly:=True;
           lForm.DB_SYSRK.DataSet.ReadOnly:=True;
           lForm.Db_Fees.DataSet.ReadOnly:=True;
           lForm.DataNavigator3.Visible:=False;  //替换标准信息
           lForm.TB_SaveAndAdd.Visible:=False; //携带新增
           lForm.TB_Save.Visible:=False;       //保存数据
           lForm.TB_SaveAndClose.Visible:=False; //保存返回
           lForm.ToolButton2.Visible:=False;
           lForm.Btn_add.Visible:=False;
           lForm.Btn_Del.Visible:=False;
           lForm.BitBtn1.Visible:=False;
        end;
        lForm.ShowModal;
     Finally
            lForm.Close;
            DataSetState(True);
            if (DataSetBroker1.DataSet.RecordCount<>0) and   
    (DataSetBroker1.DataSet.State in [TdataSetState.dsInsert,TdataSetState.dsEdit]) then
            begin
            DataSetBroker1.DataSet.ApplyUpdates;
            DataSetBroker1.DataSet.Refresh;
            end;
            DataSetBroker1.DataSet.Locate('ZLBS', Str,
[TLocateOption.loCaseInsensitive, TLocateOption.loPartialKey]);
     end;

     if DataSetBroker1.DataSet.RecordCount<>0 then
     DataGrid1.FocusedNode.Selected:=True;
end;

代码如上
回复 支持 反对

使用道具 举报

发表于 2009-12-8 10:49:54 | 显示全部楼层
lForm.Close; 删除掉。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-14 10:42:02 | 显示全部楼层
不知道什么原因,一楼的问题没有出现了
只是有个问题是,我用5楼的代码
    if not Assigned(lForm) then
     lForm := TZJ.Create(self.Context);
    lForm.ShowModal;
     Finally
            lForm.Close;
  end;
procedure TBZZLXX.BizFormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
   if Assigned(lForm) then
   lForm.Free;
end;

直接注销关闭系统时,就出现如图错误

但是我先关闭窗体再注销就不会出现这错误

还有  lForm.Close;这句不能换位  lForm.Free;否则会出现连接中的错误http://bbs.justep.com/forum.php?mod=viewthread&tid=29977 16楼的第一点,如果使用Free再次双击会出现错误

未命名.jpg

41.97 KB, 下载次数: 113

回复 支持 反对

使用道具 举报

发表于 2009-12-14 11:00:25 | 显示全部楼层
我用上次你给我的那个例子:
业务模型\质检管理系统\5_资源管理\标准资料信息
没有问题。
回复 支持 反对

使用道具 举报

发表于 2009-12-14 11:00:27 | 显示全部楼层
procedure TBZZLXX.BizFormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
   if Assigned(lForm) then
   lForm.Free;
end;

这个能不能换个事件,在 form的 Destroy事件中处理试试呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-14 12:26:26 | 显示全部楼层
大意了~谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-13 17:09 , Processed in 0.044946 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表