1.通过FormControl控件获取Form中的数据源

获取数据源的主要方法:Form  formRun= sender.FormRun(); fromRun.datasourse('表名');

可参考以下例子中的代码

    [FormControlEventHandler(formControlStr(BOMTable, BOMVersion_ItemId), FormControlEventType::Modified)]
    public static void BOMVersion_ItemId_OnModified(FormControl sender, FormControlEventArgs e)
    {
       
        BOMTable        bomTable;
        Name            itemName;
        FormRun         formRun     = sender.formRun();     
        FormObjectSet   dateSource  = formRun.dataSource(); 
        BOMVersion      bomVersion  = dateSource.cursor();
        FormDataSource  bomTable_ds = formRun.dataSource('BOMTable');
        //FormDataSource  bomTable_ds = formRun.dataSource(tableNum(BOMTable));//界面报错:未将对象引用设置到对象的实例

        bomTable    =   bomVersion.bomTable();
        itemName    =   InventTable::find(bomVersion.ItemId).itemName();

        //更新物料清单的名称
        ttsbegin;
        bomTable.selectForUpdate(true);
        bomTable.Name   = itemName;
        bomTable.doUpdate();
        ttscommit;

        bomTable_ds.reread();       //数据库取,这里从数据库取到刷新就可以
        bomTable_ds.research(true); //数据源取
    }

2.根据控件FormControl,找到其他的控件

 [FormControlEventHandler(formControlStr(EcoResProductCreate, ItemCategroyType), FormControlEventType::Modified)]
    public static void ItemCategroyType_OnModified(FormControl sender, FormControlEventArgs e)
    {
        ItemCategroyType         itemCategroyType;
        FormComboBoxControl   comboxCategroyType;
        FormRun                     element = sender.formRun();//获取到FormRun
        FormStringControl strcontrol;
        comboxCategroyType =  element.design().controlName(formControlStr(EcoResProductCreate, ItemCategroyType)) as FormComboBoxControl;
        itemCategroyType = comboxCategroyType.selection();//获取选到的值

         strcontrol =  element.design().controlName(formControlStr(EcoResProductCreate, ItemCategoryName)) as FormStringControl;//其他控件
            strcontrol.mandatory(true);
            strcontrol.text("");
            strcontrol =  element.design().controlName(formControlStr(EcoResProductCreate, ItemBrandID)) as FormStringControl;
            strcontrol.mandatory(true);
            strcontrol.allowEdit(true);
            strcontrol.text("");
            strcontrol =  element.design().controlName(formControlStr(EcoResProductCreate, ProductLineID)) as FormStringControl;
            strcontrol.mandatory(true); 
}   

3.根据Form中某个数据源的触发事件获取FormRun

fromRun.datasourse('表名');

[PostHandlerFor(formStr(EcoResProductCreate), formMethodStr(EcoResProductCreate, write))]
    public static void EcoResProductCreate_Post_write(XppPrePostArgs args)
    {
        FormRun element = args.getThis();
    
    }
 

4.扩展表方法中获取当前表中记录  args.getThis()

 [PostHandlerFor(tableStr(CustTable), tableMethodStr(CustTable, insert))]
    public static void CustTable_Post_insert(XppPrePostArgs args)
    {        
       
        CustTable                           custTable;
                   
        custTable = args.getThis();
    }

 

5.扩展的类方法中,获取源方法中的变量:this.变量名

 protected void updateInventory(InventMovement _inventMovement)
    {
        InventSerial        inventSerial;
        InventDim           inventDim;

        next updateInventory(_inventMovement);

        if(this.custPackingSlipTrans)//获取到源方法的表变量名
        {
            inventDim   = this.custPackingSlipTrans.inventDim();
        }
    }
    

6.Form数据源中的触发事件中获取当前记录:sender.cursor();

[ExtensionOf(formstr(OMOperatingUnit))]
final class OMOperatingUnit_Extension
{        
    [FormDataSourceEventHandler(formDataSourceStr(OMOperatingUnit, OMOperatingUnit), FormDataSourceEventType::Activated)]
    public static void OMOperatingUnit_OnActivated(FormDataSource sender, FormDataSourceEventArgs e)
    {                 
        OMOperatingUnit operatingUnit = sender.cursor();//获取当前记录
        FormControl deptCategoryControl = sender.formRun().design().controlName(formControlStr(OMOperatingUnit, OMOperatingUnit_DeptCategoryId));

        deptCategoryControl.visible(operatingUnit.OMOperatingUnitType == OMOperatingUnitType::OMDepartment);
    }

}

 7.事件

[PostHandlerFor(classStr(EcoResProductReleaseManager), methodStr(EcoResProductReleaseManager, release))]

public static void EcoResProductReleaseManager_Post_release(XppPrePostArgs args){

     EcoResProductReleaseManager releaseMgr;

    //获取类

    releaseMgr     = args.getThis();

   //类中方法调用

   ItemId itemId  = releaseMgr.parmItemId();

   //获取当前方法的参数

    boolean itemCreation = args.getArg("_isCreation");

}

8.Form下的方法

 [PostHandlerFor(formStr(VendEditInvoice), formMethodStr(VendEditInvoice, run))]
    public static void VendEditInvoice_Post_run(XppPrePostArgs args)
    {
        PurchAgreementHeader    agreementHeader;
        PurchTable              purchTable;
        FormRun                 formRun = args.getThis();
        VendInvoiceInfoTable    vendInvoiceInfoTable;

        vendInvoiceInfoTable  = formRun.dataSource(formDataSourceStr(VendEditInvoice ,VendInvoiceInfoTable )).cursor();
        purchTable  = vendInvoiceInfoTable.purchTable();


    }

 9.Form中控制按钮的可编辑性:

  

[
ExtensionOf(classstr(LedgerJournalFormTrans_Payment))
]
//付款日记账名称需要验证XX,则生成付款按钮不可用--sunny add
final class LedgerJournalFormTrans_Payment_Extension
{
    public void enableButtonsActive()
    {
        FormFunctionButtonControl   ctrlCreatePaymentButton;
        LedgerJournalName           ledgerJournalName;
        LedgerJournalTable          ledgerJournalTable = ledgerJournalEngine.parmLedgerJournalTable();

        next    enableButtonsActive();
        switch (ledgerJournalTable.JournalType)
        {
            case LedgerJournalType::Payment:
                ledgerJournalName = LedgerJournalName::find(LedgerJournalTable.JournalName);
                if(ledgerJournalName.ApproveStatus == NoYes::Yes && LedgerJournalTable.ApproveStatus != ApproveType::Approve)
                {   
                    ctrlCreatePaymentButton = this.ctrlCreatePaymentButton;
                    ctrlCreatePaymentButton.enabled(false);
                }    
        }
    }

}

 

 

 

  也可参考这位大师的分享: https://blog.csdn.net/mahailiang/article/details/80080209

posted on 2018-07-16 16:40  Sunny_Li  阅读(690)  评论(0编辑  收藏  举报