起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 290|回复: 2

[请求] 同信息层下调用窗体报NullReferenceException错误

[复制链接]
发表于 2010-7-30 16:53:07 | 显示全部楼层 |阅读模式
在同一个信息层下使用在FROMDOC中调用同信息层下的一个窗体,报NullReferenceException错误,请求方法
回复

使用道具 举报

 楼主| 发表于 2010-7-30 16:56:49 | 显示全部楼层
unit WSYCZY;

interface

uses
  Business.System, Business.Model, Business.Forms, Business.Data;

type
  TWSYCZY = class(TFormDoc)
    ActionList1: TActionList;
    acBoil: TAction;
    acFactory: TAction;
    acSend: TAction;
    Action1: TAction;
    acReCollection: TAction;
    ImageList1: TImageList;
    dsb_KD: TDataSetBroker;
    dsbCY: TDataSetBroker;
    DsbMX: TDataSetBroker;
    InfoBroker: TInfoBroker;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton6: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    DataGrid1: TDataGrid;
    DataGrid1ID: TDataGridColumn;
    DataGrid1CType: TDataGridColumn;
    DataGrid1Code: TDataGridColumn;
    DataGrid1FName: TDataGridColumn;
    DataGrid1WTime: TDataGridColumn;
    DataGrid1BCount: TDataGridColumn;
    DataGrid1KCheck: TDataGridColumn;
    DataGrid1State: TDataGridColumn;
    DataGrid1Content: TDataGridColumn;
    TabSheet2: TTabSheet;
    DataGrid2: TDataGrid;
    DataGrid2ID: TDataGridColumn;
    DataGrid2FID: TDataGridColumn;
    dcXH: TDataGridColumn;
    DataGrid2CH: TDataGridColumn;
    DataGrid2MZ: TDataGridColumn;
    DataGrid3: TDataGrid;
    DataGrid3BS: TDataGridColumn;
    DataGrid3LY: TDataGridColumn;
    DGCyType: TDataGridColumn;
    DataGrid3CYBH: TDataGridColumn;
    DataGrid3CZYZBY: TDataGridColumn;
    DataGrid3CYSJ: TDataGridColumn;
    DataGrid3SYR: TDataGridColumn;
    DataGrid3SYSJ: TDataGridColumn;
    DataGrid3ZT: TDataGridColumn;
    DataGrid3N1: TDataGridColumn;
    DataGrid3N2: TDataGridColumn;
    DataGrid3N3: TDataGridColumn;
    DataGrid3N4: TDataGridColumn;
    DataGrid3C1: TDataGridColumn;
    DataGrid3C2: TDataGridColumn;
    DataGrid3C3: TDataGridColumn;
    DataGrid3C4: TDataGridColumn;
    DataGrid3D1: TDataGridColumn;
    DataGrid3D2: TDataGridColumn;
    DateTimePicker1: TDateTimePicker;
    Button5: TButton;
    procedure acFactoryExecute(Sender: TObject);
    procedure acBoilExecute(Sender: TObject);
    procedure FormDocCreate(Sender: TObject);
    procedure DataGrid3DblClick(Sender: TObject);
    procedure FormDocDestroy(Sender: TObject);
    procedure acSendExecute(Sender: TObject);
    procedure acSendUpdate(Sender: TObject);
    procedure acFactoryUpdate(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Action1Execute(Sender: TObject);
    procedure DateTimePicker1CloseUp(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure acReCollectionUpdate(Sender: TObject);
    procedure acReCollectionExecute(Sender: TObject);
    procedure dsb_KDAfterOpen(DataSet: TDataSet);
  private
    FfrmRL : TFRMRLCY;
    FfrmRC : TfrmCYBM;
    procedure DoCollection();
  public
    {public declarations}
  end;

implementation
procedure TWSYCZY.DoCollection();
begin
  dsbCY.DataSet.Append;
  dsbCY.DataSet.FieldByName('LY').AsString := dsb_KD.DataSet.FieldByName('id').AsString;
  dsbCY.DataSet.FieldByName('FName').AsString := dsb_KD.DataSet.FieldByName('FName').AsString;
  dsbCY.DataSet.FieldByName('FWTime').AsString := dsb_KD.DataSet.FieldByName('WTime').AsString;
  dsbCY.DataSet.FieldByName('FContent').AsString := dsb_KD.DataSet.FieldByName('Content').AsString;
  dsbCY.DataSet.FieldByName('FCode').AsString := dsb_KD.DataSet.FieldByName('Code').AsString;
  dsbCY.DataSet.FieldByName('CZYLX').AsString := '1';
  FfrmRC.ShowModal;
end;

procedure TWSYCZY.acFactoryExecute(Sender: TObject);
begin
  DoCollection;
end;

procedure TWSYCZY.acBoilExecute(Sender: TObject);

begin
   dsbCY.DataSet.Append;
   dsbCY.DataSet.FieldByName('CZYLX').AsString := '3';
  FfrmRL.ShowModal;运行停到此处[
end;

procedure TWSYCZY.FormDocCreate(Sender: TObject);
begin
  FfrmRL := TFRMRLCY.Create(Context);
  FfrmRC := TfrmCYBM.Create(Context);

  DateTimePicker1.Date := SysUtils.Now;
  DataGrid3.ApplyBestFit(nil);
end;

procedure TWSYCZY.DataGrid3DblClick(Sender: TObject);
begin
  if dsbCY.DataSet.FieldByName('CZYLX').AsString = '3' then
  begin
    FfrmRL.ShowModal;
  end
  else
  begin
   // FfrmRC.ShowModal;
  end;
end;

procedure TWSYCZY.FormDocDestroy(Sender: TObject);
begin
  FfrmRL.Free;
  FfrmRC.Free;
end;

procedure TWSYCZY.acSendExecute(Sender: TObject);
begin
  Tinfo_CZY(InfoBroker.Info).Send;
end;

procedure TWSYCZY.acSendUpdate(Sender: TObject);
begin
  acSend.Enabled := not dsbCY.DataSet.IsEmpty;
end;

procedure TWSYCZY.acFactoryUpdate(Sender: TObject);
begin
  acFactory.Enabled := (not dsb_KD.DataSet.IsEmpty)  AND
                       (dsb_KD.DataSet.FieldByName('State').AsString='N');
end;

procedure TWSYCZY.Button4Click(Sender: TObject);
begin
  dsb_KD.DataSet.Close;
  dsb_KD.DataSet.Open;
end;

procedure TWSYCZY.Action1Execute(Sender: TObject);
begin
  dsb_KD.DataSet.Close;
  dsb_KD.DataSet.Open;
end;

procedure TWSYCZY.DateTimePicker1CloseUp(Sender: TObject);
const
  cSQL = 'SELECT * FROM TSCODE WHERE WTime>=:St AND WTime<:Et';
var
  lStartTime, lEndTime: TDateTime;
begin
  lStartTime := DateUtils.DateOf(DateTimePicker1.Date);
  lEndTime := DateUtils.IncDay(DateUtils.DateOf(DateTimePicker1.Date), 1);
  TSqlDataSet(dsb_KD.DataSet).Close;

  TSqlDataSet(dsb_KD.DataSet).SQL.Text := cSQL;
  TSqlDataSet(dsb_KD.DataSet).Params.ParamByName('St').AsDateTime := lStartTime;
  TSqlDataSet(dsb_KD.DataSet).Params.ParamByName('Et').AsDateTime := lEndTime;
  TSqlDataSet(dsb_KD.DataSet).Open;
end;

procedure TWSYCZY.Button5Click(Sender: TObject);
const
  cSQL = 'SELECT * FROM TSCODE WHERE State=''N''';
begin
  TSqlDataSet(dsb_KD.DataSet).Close;
  TSqlDataSet(dsb_KD.DataSet).SQL.Text := cSQL;
  TSqlDataSet(dsb_KD.DataSet).Open;
end;

procedure TWSYCZY.acReCollectionUpdate(Sender: TObject);
begin
  acReCollection.Enabled := (not dsb_KD.DataSet.IsEmpty) AND
                            (dsb_KD.DataSet.FieldByName('State').AsString='Y');
end;

procedure TWSYCZY.acReCollectionExecute(Sender: TObject);
begin
  DoCollection;
end;

procedure TWSYCZY.dsb_KDAfterOpen(DataSet: TDataSet);
begin
  DataGrid1.ApplyBestFit(nil);
end;

end.
回复 支持 反对

使用道具 举报

发表于 2010-7-30 17:31:26 | 显示全部楼层
FfrmRL : TFRMRLCY;
这个对象没看到你有创建它的代码啊?
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-8 01:14 , Processed in 0.040311 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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