Skip to content

Instantly share code, notes, and snippets.

@noakesey
noakesey / DictEnum.xpp
Created November 9, 2018 20:35
How to iterate through an enum
DictEnum dictEnum = new DictEnum(enumNum(ProjFundingType));
if (dictEnum)
{
int enumValueCount = dictEnum.values();
//Iterate on positions, not values!!
for (int enumValueIndex = 0; enumValueIndex < enumValueCount; enumValueIndex++)
{
if (dictEnum.index2Value(enumValueIndex) != ProjFundingType::Customer)
{
doSomething(dictEnum.index2Value(enumValueIndex);
SysDictEnum dictEnum = new SysDictEnum(enumNum(ProjSalesPriceMarkup));
int enumValueCount = dictEnum.values();
for (int enumValueIndex = 0; enumValueIndex < enumValueCount; enumValueIndex++)
{
ProjSalesPriceMarkup value = dictEnum.index2Value(enumValueIndex);
str actual = dictEnum.index2Label(enumValueIndex);
str expected = strMin();
/// <summary>
/// Form extensions should have an Extension suffix, and should include the name
/// of the extending model as an infix to maintain uniqueness. The extension class
/// must be marked as final as it would make no logical sense to subclass
/// or extend an extension.
/// </summary>
[ExtensionOf(tableStr(HcmWorker))]
public final class HcmWorker_MyNewModel_Extension
{
public display Name someOtherName()
@noakesey
noakesey / xpp
Created December 10, 2018 09:39
public void processTransactions(true, false, false, false, true, true, false, false, true);
@noakesey
noakesey / xpp
Created December 14, 2018 15:55
Handling form event
[FormEventHandler(formstr(FMVehicle), FormEventyType::Inititialized)]
public static void FMVehicle_OnInitialized(xFormRun sender, FormEventArgs e)
{
FormDataSource ds = sender.dataSource(formDataSourceStr(FMVehicle, FMVehicle)
//etc..
}
@noakesey
noakesey / xpp
Created December 14, 2018 15:56
Handling form datasource event
[FormDataSourceEventHandler(formDataSourceStr(FMVehicle, FMVehicle),
FormDataSourceEventType::written)]
public static void FMVehicle_OnWritten(FormDataSource sender, FormDataSourceEventArgs e)
{
FormRun formRun = sender.formRun() as FormRun;
//etc..
}
@noakesey
noakesey / xpp
Created December 14, 2018 15:56
Handling form control
[FormControlEventHandler(formControlStr(FMVehicle, ShowVersions), FormControlEventType::Clicked)]
public static void ShowVersions_OnClicked(FormControl sender, FormControlEventArgs e)
{
FormRun formRun = sender.formRun() as FormRun;
//etc…
}
@noakesey
noakesey / xpp
Created December 14, 2018 15:57
Handling table events
[DataEventHandler(tableStr(FMVehicle), DataEventType::ValidatedWrite)]
public static void FMVehicle_onValidatedWrite(Common sender, DataEventArgs e)
{
ValidatedEventArgs validateArgs = e as ValidatedEventArgs;
FMVehicle vehicle = sender as FMVehicle;
boolean result = validateArgs.parmValidateResult();
if (vehicle.NumberOfCylinders == 0)
{
result = checkFailed('Invalid number of cylinders.');
@noakesey
noakesey / xpp
Created December 14, 2018 16:19
Subscribe to a multicast delegate
[SubscribesTo(classStr(MyDelegateClass) delegateStr(MyDelegateClass, myDelegate))]
public static void delegateExample_myDelegate(real a, real b, EventHandlerResult result)
{
real total = a+b;
result.result(total);
}
@noakesey
noakesey / xpp
Last active December 14, 2018 16:24
Define a delegate
void myMethod()
{
EventHandlerResult result = new EventHandlerResult();
this.nydelegate(1, 2, result);
var total = result.result();
}
delegate void myDelegate(real parm1, real parm2, EventHandlerResult result)
{