//引用單元文件
uses
SmartFormIntf, TypInfo;
//edtNameHang->Properties->OnButtonClick事件
procedure TfrmMTOBillEditor.edtNameHangPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
var
IMainForm: ICustomMain;
IListForm: ICustomBrowser;
ListForm: TForm;
dsEdit: TSmartDataset;
begin
dsEdit := TSmartDataSet(sEdit.DataSet); //在編輯的數據集
//
IMainForm := (Application.MainForm as ICustomMain); //Application.ManForm是 frmMainRibbon
ListForm := IMainForm.NewForm('DLL', 'dll:ERP_Pub.ItemSelection'); //創建Help窗體
IListForm := (ListForm as ICustomBrowser);
IListForm.BrowserStyle := sbsList; //設為選擇模式
IListForm.RecSelect := True; //Help窗的"選中"欄位可不可用,配合多選時用
IListForm.MultRecSelect := False; //單選, True時為多選
IListForm.RecSelectToDataSet := dsEdit; //編輯的數據集
IListForm.RecSelectEditingField := dsEdit.FindField('NameHand'); //在編輯的字段
IListForm.RecSelectSetFields := 'NameHang=MAPName,SpecHang=Spec,PriceHang=Price'; //選中後賦值的字段
IListForm.ModalParentForm := Self; //Self當前窗體
//設過濾條件(mtMaterial僅顯示物料記錄).
if IsPublishedProp(ListForm, 'DefaultMAPType') then
TypInfo.SetPropValue(ListForm, 'DefaultMAPType', mtMaterial);
//
IListForm.LoadFormData; //創建Help所需的DataModule
IListForm.OpenFormData; //打開Help的數據集
IMainForm.SmartShowForm(ListForm); //顯示Help窗體
end;
注意:
如果過濾條件想做得更靈活可以用接口來做, 如
IItemSelectionHelp = Interface(IInterface)
['{C99C5A7C-A10A-4F40-AFCD-EB80BC289612}']
procedure SetHelpCondition(sMaterialType: String);
function GetHelpCondition: String;
end;
1.在OpenFormData前執行IItemSelectionHelp的SetHelpCondition, 對過濾條件賦值;
2.ERP_Pub.ItemSelection窗體中加入一個TSmartDataSetMAP并在BeforeOpen事件執行IItemSelectionHelp的 GetHelpCondition取回要過濾的條件.
具體做法可以參考項目Kango中的做法.