11/07/2016

Axapta : ดักจับ event ของ control ใน dialog

Axapta : ดักจับ event ของ control ใน dialog
1.override method ชื่อ dialogPostRun
  1. public void dialogPostRun(DialogRunbase _dialog)
  2. {
  3.     ;
  4.     super(_dialog);
  5.     _dialog.dialogForm().formRun().controlMethodOverload(true);
  6.     _dialog.dialogForm().formRun().controlMethodOverloadObject(this);
  7. }

2.หาชื่อของ control ที่ต้องการดักจับ event โดยเพิ่ม code เข้าไปด้านท้ายของ method dialog
ตัวอย่าง : หาชื่อ dialog ของ dialogDate (ปกติจะได้ชื่อ Fld1_1 _2 _3 ตามลำดับการสร้าง control)
  1. Object dialog()
  2. {
  3. ;
  4.     dialog          = super();
  5.  
  6.     dialogDate              = dialog.addFieldValue(typeid(TransDate), transDate, "@SYS14475", "@SYS8449");
  7.     dialogSpecification     = dialog.addFieldValue(typeid(InventAdjustmentSpec), specification, "@SYS8956", "@SYS19204");
  8.     dialogLedger            = dialog.addFieldValue(typeid(NoYes), updateLedger, "@SYS17508", "@SYS28266");
  9.     dialogNotes             = dialog.addFieldValue(typeid(FreeTxt), freeTxt, "@SYS13887", "@SYS27801");
  10.  
  11.     info(dialogDate.name());
  12.     Return dialog;
  13. }

3.สร้าง method สำหรับจับ event ของ control นั้น ๆ โดยใช้ ชื่อที่ได้จากข้อ 2 เช่น
  1. public void fld1_1_modified()
  2. {
  3.     ;
  4.     box::info("hi");
  5. }

เพิ่มเติม
ข้อ 3.สร้าง method สำหรับจับ event ของ control นั้น ๆ ต้องประกาศตัวแปรจับ control นั้นด้วย ไม่อย่างนั้นเวลาแก้ไขช่องนั่นไปแล้วจะแก้ไขอีก จะไม่ทำ Method modified

http://vardhan24.blogspot.com/2014/01/fld11modified-and-fld7lookup-on-dilaog.html

  1. public void Fld1_1_modified()
  2. {
  3.     //Object  control;
  4.     FormStringControl control;
  5.     control = dialog.formRun().controlCallingMethod();
  6.  
  7.     if(control.modified())
  8.     {
  9.         if( dialogDate.value() > today()){
  10.             Box::stop("เลือกวันที่ไม่ถูกต้อง กรุณาตรวจสอบ !","ERROR");
  11.             dialog.close();
  12.         }
  13.     }
  14. }  
  15.  

No comments:

Post a Comment