调用另一个功能的编辑窗体或单据窗体
uses
SmartFormIntf, SmartDllProvider, CustomED, , SmartShare
【查看】
var
Form1: TForm;
CustomChild: ICustomChild;
begin
//如果被调用的窗体在同一个Dll中,则'XXX_Crm'可以省去
Form1 := SmartCreateForm('XXX_Crm', 'TfrmAskVSEditor');
if Assigned(Form1) then
begin
//直接指定MasterID。当设TfrmCustomED(Form1).SourceDataSet也可以。
TfrmCustomED(Form1).MasterID := Self.MasterDataSet.FieldByName('AskVSID').AsVariant;
if Supports(Form1, ICustomChild, CustomChild) then
begin
CustomChild.LoadFormData;
CustomChild.OpenFormData;
end;
SmartShowMdiForm(Form1);
end;
end;
【新增】
var
Form1: TForm;
CustomChild: ICustomChild;
begin
Form1 := SmartCreateForm('XXX_Crm', 'TfrmAskVSEditor');
if Assigned(Form1) then
begin
//不能直接EditKind := ckAppend,因为TfrmCustomED.OnOpenFormData过程没有处理好, 会出错。
//只能用下面的Processor.OpenData(null) 和 Processor.New 来实现新增
//TfrmCustomED(Form1).EditKind := ckAppend;
//用一个假的ID令DataSet打开。 如果TfrmCustomED.OnOpenFormData过程修正了,就可能直接将EditKindt设为ckAppend, 无需这行。
TfrmCustomED(Form1).MasterID := NewGuid;
if Supports(Form1, ICustomChild, CustomChild) then
begin
CustomChild.LoadFormData;
CustomChild.OpenFormData;
//如果TfrmCustomED.OnOpenFormData过程修正了,就可能直接将EditKindt设为ckAppend, 无需这行。
CustomChild.Processor.New;
end;
SmartShowMdiForm(Form1);
end;
end;
要想了解更多可以看unit CustomED中的TfrmCustomED.OnOpenFormData过程。