DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: wjy13061029975
今日帖子: 2
在线用户: 3
导航: 论坛 -> 数据库专区 斑竹:liumazi,waterstone  
作者:
男 yuanfeng (yuanfeng) ★☆☆☆☆ -
盒子活跃会员
2013/6/15 13:37:50
标题:
打开某个窗体时出错 浏览:1667
加入我的收藏
楼主: 我用Delphi Xe2开发的系统,打开某个窗体时(也不固定是某个窗体,也不是每次,只是偶尔)会出错,如下图
此帖子包含附件:
JPEG 图像
大小:17.2K
----------------------------------------------
piao
作者:
男 ww1000 (Delphis) ▲▲▲▲▲ -
普通会员
2013/6/16 11:25:38
1楼: 重装 D 或 系统
----------------------------------------------
阳光总在
作者:
男 yuanfeng (yuanfeng) ★☆☆☆☆ -
盒子活跃会员
2013/6/16 13:44:50
2楼: 谢谢ww1000,你说的方法不行,公司有几十台电脑,好多电脑都出现这种情况
----------------------------------------------
piao
作者:
男 xxhadsg (garfield) ★☆☆☆☆ -
盒子活跃会员
2013/6/16 14:54:48
3楼: 这个应该是你程序本身的问题,调试一下应该可以发现问题。
----------------------------------------------
这个世界上还有很多比钱更重要的东西,比如说意大利面---加菲猫
作者:
男 yuanfeng (yuanfeng) ★☆☆☆☆ -
盒子活跃会员
2013/6/16 15:35:53
4楼: 我把代码贴出来,主窗体中打开“订单资料记录“的代码为:
procedure TMainfrm.OR000Execute(Sender: TObject);
begin
  ShowNormalForm(TORCustOrderfrm,self,'ORCustOrderfrm',TForm(ORCustOrderfrm));
end;


在unit SysPublic中有过程ShowNormalForm和函数CheckRunForm的代码;

procedure ShowNormalForm(FormClass: TBaseFormClass; ParentFrom: TForm; FunctionName: string; var Form: TForm);
begin
  if CheckRunForm(FunctionName) then //检查权限
  begin
    if not Assigned(Form) then
      Form := FormClass.CreateWithFunction(ParentFrom,FunctionName);
    Form.Show;
  end
  else
    application.MessageBox('您无权对此项进行操作!','警告',64);
end;

function CheckRunForm(FunctionName: string): Boolean;
begin
  Result := False;
  with Frmdata.spUserRight do
  if Locate('FunctionName',FunctionName,[]) then
  begin
    if FieldByName('fAll').AsBoolean then
      Result := True
    else if FieldByName('fRead').AsBoolean then
      Result := True ;
  end;
end;


订单窗体TORCustOrderfrm中有关闭窗体时设为空
procedure TORCustOrderfrm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  ORCustOrderfrm:=nil;
end;


其中TORCustOrderfrm的父窗体为TBasefrm
有一个来构造函数
Constructor TBasefrm.CreateWithFunction(AOwner: TComponent; FunctionName:String);
begin
  sFunctionName:=FunctionName;
  Inherited Create(AOwner);
end;

基本上关键的代码就上面这些了
现的问题是,进入主窗体后,第一次打开“订单资料记录”窗体不会出错,关闭
“订单资料记录”窗体也不会出错,再次打开“订单资料记录”窗体就不一定会出错(只是偶尔)。同样打开其他的窗体也会有这种情况,频率有时一天会出错几次,有时几天才会出错一次,请有这方面经验的朋友指点一下。
----------------------------------------------
piao
作者:
男 smonkey421 (猩猩) ★☆☆☆☆ -
盒子活跃会员
2013/6/17 17:33:49
5楼: 一般来说,你这个问题应该是某个对象未被实例化,直接访问了空指针。
----------------------------------------------
俺很菜,但俺很执着!!!
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行76.17188毫秒 RSS