TSmartDBButtonEdit手動調用Help(Browse)窗體

//引用單元文件

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中的做法.

你可能感兴趣的:(c,String,function,Integer,dll,interface)