Programming
You are currently browsing the articles from KomKid.Net matching the category Programming.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| static void ExcelFormating(Args _args)
{
#Excel
SysExcelApplication excel;
SysExcelWorkbooks books;
SysExcelWorkbook book;
SysExcelWorksheet sheet;
SysExcelRange range;
SysExcelStyles styles;
SysExcelStyle style;
SysExcelInterior interior;
SysExcelFont font;
COM _char, _r;
;
excel = SysExcelApplication::construct();
excel.visible(true);
books = excel.workbooks();
book = books.add();
sheet = excel.activeSheet();
range = sheet.range('A1');
styles = book.styles();
style = styles.add('MyStyle');
interior = style.interior();
interior.color(WinApi::RGB2int(246, 233, 206));
font = style.font();
font.bold(true);
font.color(winapi::RGB2int(153, 204, 255));
range.style('MyStyle');
range.locked(true);
_r = range.comObject();
_char = _r.characters(1);
_char.insert('MyStyle');
} |
Written by Komkid on October 30th, 2009 with no comments.
Read more articles on Axapta and Programming.
วิธี Enable/Disable หรือ Dialog Control ในขณะ runtime ทำได้โดย ดังนี้

1.classDeclaration
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class SCI_Costing extends RunBase
{
FormStringControl SalesIdCtrl, ItemIdCtrl;
FormCheckBoxControl bAllCtrl;
SalesId salesId;
ItemId itemId;
NoYes bAll;
#define.CurrentVersion(1)
#localmacro.CurrentList
salesId,
itemId,
bAll
#endmacro
} |
2.สร้าง dialog แบบอนุญาตให้ update control ได้ โดยใช้ dialog.allowUpdateOnSelectCtrl(true)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| protected Object dialog(Dialog dialog, boolean forceOnClient)
{
DialogRunBase ret;
;
ret = super(dialog, forceOnClient);
ret.caption('Costing report by order');
ret.allowUpdateOnSelectCtrl(true); //อนุญาตให้ update control ได้
SalesIdCtrl = ret.formBuildDesign().addControl(FormControlType::String,'SalesId');
SalesIdCtrl.extendedDataType(extendedTypeNum('SalesId'));
bAllCtrl = ret.formBuildDesign().addControl(FormControlType::CheckBox,'bAll');
bAllCtrl.label('All');
ItemIdCtrl = ret.formBuildDesign().addControl(FormControlType::String,'ItemId');
ItemIdCtrl.extendedDataType(extendedTypeNum('ItemId'));
return ret;
} |
3.เซ็ตให้ control สามารถ override method ตอน runtime ได้
1 2 3 4 5 6 7 8 9 10
| public void dialogPostRun(DialogRunbase dialog)
{
;
super(dialog);
dialog.dialogForm().formRun().controlMethodOverload(true);
dialog.dialogForm().formRun().controlMethodOverloadObject(this);
SalesIdCtrl = dialog.dialogForm().formRun().design().controlName('SalesId');
ItemIdCtrl = dialog.dialogForm().formRun().design().controlName('ItemId');
bAllCtrl = dialog.dialogForm().formRun().design().controlName('bAll');
} |
4.ใช้ method dialogSelectCtrl เพื่อดำเนินการ update control ซึ่งในที่นี้ก็คือการ enable/disable ItemId
1 2 3 4 5 6 7 8 9 10 11 12
| public void dialogSelectCtrl()
{
;
if (bAllCtrl.value()== 0)
{
ItemIdCtrl.allowEdit(true);
}
else
{
ItemIdCtrl.allowEdit(false);
}
} |
Written by Komkid on October 19th, 2009 with no comments.
Read more articles on Axapta and Programming.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| public void clicked()
{
Qty tmpQty1;
Qty tmpQty2;
FormCheckboxControl formCheckboxControl;
;
super(); // ต้องรัน super ก่อน ไม่งั้นค่าไม่เปลี่ยน
// รับค่าจาก design
formCheckboxControl = element.design().control(control::ProdParmHistoricalCost_EndJob);
// box::info(strfmt("%1",formCheckboxControl.value()));
if(formCheckboxControl.value() == 1){ //ถ้า checked จะเป็น 1
tmpQty1 = ProdTable::find(ProdParmHistoricalCost.ProdId).QtySched;
tmpQty2 = ProdTableJour::reportedFinishedGood(ProdParmHistoricalCost.prodId);
if(tmpQty1 != tmpQty2){
if(box::yesNo("Sure?", DialogButton::Yes, "Confirm") == DialogButton::Yes)
{
if(box::yesNo("Sure?",DialogButton::Yes,"Confirm")== DialogButton::Yes){
formCheckboxControl.value(true); //สั่งให้ checked
}else{
formCheckboxControl.value(false); //สั่งให้ ไม่ checked
}
}else{
formCheckboxControl.value(false);
}
}
}
} |
Written by Komkid on October 19th, 2009 with no comments.
Read more articles on Axapta and Programming.
วิธีส่งข้อมูลที่มีการ enter (vbNewLine) ไปให้ Formulas ของ Crystal Report ทำได้โดย ใส่เครื่องหมาย chr(34) (qoute) คร่อม chr(10) (Line Feed) ไปอีกที ดังนี้
1
| CrysRpt.Formulas(0) = "FormulaName=" & Chr(34) & Replace$(txtName.Text, vbNewLine, Chr(34) & " & Chr(10) & " & Chr(34)) & Chr(34) |
ถ้าข้อมูล คือ
บรรทัดที่ 1
บรรทัดที่ 2
พอใช้คำสั่งแล้ว ข้อมูลที่จะส่งไปก็จะเป็น
FormulaName=”บรรทัดที่ 1″ & Chr(10) & “บรรทัดที่ 2″
Written by Komkid on October 19th, 2009 with no comments.
Read more articles on Programming.
วิธีสร้าง dialog แบบที่มี control ซึ่ง lookup ได้ เช่น เลือก SalesId แล้วให้อีก control นึง คือ ItemId lookup มาเฉพาะของ SalesId นั้น

ทำได้ดังนี้
1.declare control ไว้ ตาม extended data type ที่จะใช้
1 2 3 4
| class LookupDialog extends RunBase
{
FormStringControl SalesIdCtrl, ItemIdCtrl;
} |
2.สร้าง dialog
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| protected Object dialog(Dialog dialog, boolean forceOnClient)
{
DialogRunBase ret;
;
ret = super(dialog, forceOnClient);
ret.caption('Costing report by order');
SalesIdCtrl = ret.formBuildDesign().addControl(FormControlType::String,'SalesId');
SalesIdCtrl.extendedDataType(extendedTypeNum('SalesId'));
ItemIdCtrl = ret.formBuildDesign().addControl(FormControlType::String,'ItemId');
ItemIdCtrl.extendedDataType(extendedTypeNum('ItemId'));
return ret;
} |
3.Set ให้ control สามารถ override method ตอน runtime ได้
1 2 3 4 5 6 7 8 9
| public void dialogPostRun(DialogRunbase dialog)
{
;
super(dialog);
dialog.dialogForm().formRun().controlMethodOverload(true);
dialog.dialogForm().formRun().controlMethodOverloadObject(this);
SalesIdCtrl = dialog.dialogForm().formRun().design().controlName('SalesId');
ItemIdCtrl = dialog.dialogForm().formRun().design().controlName('ItemId');
} |
4.สร้าง lookup method
1 2 3 4 5 6 7 8 9 10 11 12
| void ItemId_lookup()
{
Query query = new Query();
SysTableLookup sysTableLookup =
SysTableLookup::newParameters(tableNum(SalesLine), SalesIdCtrl);
;
sysTableLookup.addLookupField(fieldNum(SalesLine, ItemId));
sysTableLookup.addLookupField(fieldNum(SalesLine, Name));
query.addDataSource(tableNum(SalesLine)).addRange(fieldNum(SalesLine,SalesId)).value(SalesIdCtrl.text());
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
} |
5.เก็บรายละเอียด method อื่น ๆ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public container pack()
{
return conNull();
}
public boolean unpack(container packedClass)
{
return true;
}
static void main(Args _args)
{
LookupDialog test1 = new LookupDialog();
;
if (test1.prompt())
{
test1.run();
}
} |
ที่มา :
Written by Komkid on October 15th, 2009 with no comments.
Read more articles on Axapta and Programming.