1. OnActivated.
//The primary purpose of the _OnActivated event handler is to handle specific actions or modifications
// that need to occur when a form or control becomes active. This can include tasks such as refreshing data,
[FormEventHandler(formStr(PurchEditLines), FormEventType::Activated)]
public static void PurchEditLines_OnActivated(xFormRun sender, FormEventArgs e)
{
FormRun formrun = sender; // form formrun.
FormDataSource formdatasource = formrun.dataSource(); // formdatasource
PurchParmTable purchParmTable = formdatasource.cursor(); // active record.
}
2. OnClosing
// onclosing: the onclosing eventhanlders is triggered while closing the form.
[FormEventHandler(formStr(PurchEditLines), FormEventType::Closing)]
public static void PurchEditLines_OnClosing(xFormRun sender, FormEventArgs e)
{
FormRun formrun = sender; // form formrun.
FormDataSource formdatasource = formrun.dataSource(); // formdatasource
PurchParmTable purchParmTable = formdatasource.cursor();
formdatasource.reread();
formdatasource.refresh();
formdatasource.research();
}
3.OnInitialized.
//OnInitialized: The OnInitialized event handler is triggered after the form has been fully initialized
//and is ready to be interacted with by the user. At this stage, all form controls have been rendered,
// and data sources and data bindings have been established. The OnInitialized event provides an opportunity to perform additional actions,
//such as populating default values, setting focus on specific controls, or applying any post-initialization logic.
[FormEventHandler(formStr(PurchEditLines), FormEventType::Initialized)]
public static void PurchEditLines_OnInitialized(xFormRun sender, FormEventArgs e)
{
FormRun formrun = sender; // form formrun.
formrun senderformrun = formrun.caller_RU();
PurchTable purchtable = formrun.args().record(); // calling form active record using args.
}
4. OnInitializing
//OnInitializing: The OnInitializing event handler is triggered before the form is fully initialized
// and displayed to the user. It is used to perform any necessary setup or modifications on the form
// and its elements before they are rendered on the screen. This event allows you to customize the initial state of the form and its controls.
[FormEventHandler(formStr(PurchEditLines), FormEventType::Initializing)]
public static void PurchEditLines_OnInitializing(xFormRun sender, FormEventArgs e)
{
FormRun formrun = sender;
FormButtonControl control = formrun.design().controlName('control name');
control.visible(false);
}
5.OnPostRun
/// If you want to jump from FormControl, to another Form you can
[FormEventHandler(formStr(PurchEditLines), FormEventType::PostRun)]
public static void PurchEditLines_OnPostRun(xFormRun sender, FormEventArgs e)
{
FormStringControl control = sender.design().controlName(formControlStr(purcheditlines, ok));
control.registerOverrideMethod(methodStr(FormStringControl, jumpRef), methodStr(your jumrefclass, jumpRef), sender);
}
-----------------------------------------------------------------------------------------------------------------------------------
6. OnActivated
// this is a datasource active method.
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmUpdate), FormDataSourceEventType::Activated)]
public static void PurchParmUpdate_OnActivated(FormDataSource sender, FormDataSourceEventArgs e)
{
FormDataSource formdatasource = sender; // current form datasource.
FormRun formrun = formdatasource.formRun(); // current fromrun
FormControl controlname = formrun.design().controlName('name of the control'); // to get the formcontrl.
PurchParmTable purchparmtable = formdatasource.cursor(); // active record.
if (purchparmtable.RecId)
{
controlname.visible(true);
}
}
7.OnCreated
// The primary purpose of the OnCreated event handler is to handle specific actions or modifications that need
// to occur when a new record or object is created. This can include tasks such as initializing default values,
//performing calculations, setting up relationships or dependencies, or any other behavior that should be triggered
//when a new instance is created.
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::Created)]
public static void PurchParmTable_OnCreated(FormDataSource sender, FormDataSourceEventArgs e)
{
FormDataSource formdatasource = sender; // current form datasource.
FormRun formrun = formdatasource.formRun(); // current fromrun
PurchParmTable purchparmtable = formdatasource.cursor(); // active record.
purchparmtable.DeliveryName = "default value"; // initilizing some default values to current record
}
8.OnCreating
1.Allows customization of the record's initial state before it is saved.
2. Useful for performing validations, setting default values, or modifying the record before it is created.
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::Creating)]
public static void PurchParmTable_OnCreating(FormDataSource sender, FormDataSourceEventArgs e)
{
FormDataSource formdatasource = sender; // current form datasource.
PurchParmTable purchparmtable = formdatasource.cursor(); // active record.
purchparmtable.validations();
}
9.OnDeleted
//The primary purpose of the OnDeleted event handler is to handle specific actions or modifications
// that need to occur when a record or object is deleted. This can include tasks such as updating related records,
// performing clean-up operations, logging deletion details, or any other behavior that should be triggered when a deletion occurs.
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::Deleted)]
public static void PurchParmTable_OnDeleted(FormDataSource sender, FormDataSourceEventArgs e)
{
FormDataSource formdatasource = sender; // current form datasource.
PurchParmTable purchparmtable = formdatasource.cursor(); // active record
if (purchparmtable.PurchId)
{
warning("since purchi id is available you cant delete the record");
}
}
10.OnDisplayOptionInitialize
//The primary purpose of the OnDisplayOptionInitialize event handler is to handle specific actions
// or modifications related to the display options of form controls. This can include tasks such as enabling
//or disabling controls, setting their visibility, modifying their labels, or any other behavior
// that should be applied during the initialization of the form.
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::DisplayOptionInitialize)]
public static void PurchParmTable_OnDisplayOptionInitialize(FormDataSource sender, FormDataSourceEventArgs e)
{
FormDataSource formdatasource = sender; // current form datasource.
FormRun formrun = formdatasource.formRun(); // current fromrun
PurchParmTable purchparmtable = formdatasource.cursor(); // active record
FormControl controlname = formrun.design().controlName('name of the control'); // to get the formcontrl.
if (purchparmtable.PurchId)
{
controlname.allowEdit(true);
}
}
11.OnInitialized
// The OnInitilize event handler at the datasource level is particularly useful
//when you need to customize or set up the initial state of the datasource and its related elements,
//such as fields or relations. It allows you to perform actions that should occur during the initialization phase of the datasource,
//ensuring that the datasource is prepared and ready for data operations.
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::Initialized)]
public static void PurchParmTable_OnInitialized(FormDataSource sender, FormDataSourceEventArgs e)
{
FormDataSource formdatasource = sender; // current form datasource.
FormRun formrun = formdatasource.formRun(); // current fromrun
PurchParmTable purchparmtable = formdatasource.cursor(); // active record.
purchparmtable.PurchName ="";
}
12.OnInitValue
//The primary purpose of the OnInitValue event handler at the datasource level is to handle
// specific actions or modifications that need to occur when a field's value is being initialized.
//This can include tasks such as setting default values, performing calculations based on other field values,
// or any other behavior that should be triggered during the value initialization process.
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::InitValue)]
public static void PurchParmTable_OnInitValue(FormDataSource sender, FormDataSourceEventArgs e)
{
FormDataSource formdatasource = sender; // current form datasource.
FormRun formrun = formdatasource.formRun(); // current fromrun
PurchParmTable purchparmtable = formdatasource.cursor(); // active record.
purchparmtable.PurchName ="";
}
13.OnLeavingRecord
//The primary purpose of the OnLeavingRecord event handler at the datasource level is to handle specific actions
// or modifications that need to occur when the focus is leaving a record. This can include tasks such as validating
// the record's data, performing calculations or updates based on the record's values, or any other behavior that should be
//triggered before moving to another record.
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::LeavingRecord)]
public static void PurchParmTable_OnLeavingRecord(FormDataSource sender, FormDataSourceEventArgs e)
{
FormDataSource formdatasource = sender; // current form datasource.
FormRun formrun = formdatasource.formRun(); // current fromrun
PurchParmTable purchparmtable = formdatasource.cursor(); // active record.
if (purchparmtable.PurchName =="")
{
warning("purch name should be enetered");
}
}
14.OnLeftRecord
// The OnLeftRecord event handler at the datasource level is used to perform actions or operations
// after the focus has moved away from a record within a datasource. It is triggered after the focus has left
// the current record, allowing you to perform any necessary calculations, updates, or other actions related to the record
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::LeftRecord)]
public static void PurchParmTable_OnLeftRecord(FormDataSource sender, FormDataSourceEventArgs e)
{
FormDataSource formdatasource = sender; // current form datasource.
FormRun formrun = formdatasource.formRun(); // current fromrun
PurchParmTable purchparmtable = formdatasource.cursor(); // active record.
select forupdate TableName
where TableName.fieldname == purchparmtable.fieldname;
ttsbegin;
TableName.fieldname == purchparmtable.fieldname;
TableName.update();
ttscommit;
}
15.MarkChanged
//The primary purpose of the OnMarkChanged event handler at the datasource level is to handle specific
// actions or modifications that need to occur when a field's value has been changed. This can include
// tasks such as performing calculations, updating related fields or records, or any other behavior that
// should be triggered when a field is marked as changed.
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::MarkChanged)]
public static void PurchParmTable_OnMarkChanged(FormDataSource sender, FormDataSourceEventArgs e)
{
FormDataSource formdatasource = sender; // current form datasource.
FormRun formrun = formdatasource.formRun(); // current fromrun
PurchParmTable purchparmtable = formdatasource.cursor(); // active record.
formdatasource.object(fieldNum(PurchParmTable,PurchName));
}
16.OnPostLinkActive
//The OnPostLinkActive event handler is called when a link is activated on a form data source.
// It is used to perform some action after the link has been activated. The event handler is defined in the FormDataSource class
// and can be overridden in a subclass. The event handler has the following
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::PostLinkActive)]
public static void PurchParmTable_OnPostLinkActive(FormDataSource sender, FormDataSourceEventArgs e)
{
FormDataSource formdatasource = sender; // current form datasource.
FormRun formrun = formdatasource.formRun(); // current fromrun
PurchParmTable purchparmtable = formdatasource.cursor(); // active record.
}
17.OnQueryExecuted
//The primary purpose of the OnQueryExecuted event handler at the datasource level is to handle specific actions or modifications
// that need to occur after a query has been executed. This can include tasks such as manipulating the result set,
// performing calculations or aggregations on the retrieved data, or any other behavior that should be triggered after the query execution.
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::QueryExecuted)]
public static void PurchParmTable_OnQueryExecuted(FormDataSource sender, FormDataSourceEventArgs e)
{
sender.query().dataSourceName(sender.name()).addRange(fieldnum(purchparmtable, purchname)).value("");
}
18.OnQueryExecuting
//The primary purpose of the OnQueryExecuting event handler at the datasource level is to handle specific actions
// or modifications that need to occur before a query is executed. This can include tasks such as modifying the query,
// applying filters, or any other behavior that should be triggered before the query is sent to the data source.
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::QueryExecuted)]
public static void PurchParmTable_OnQueryExecuting(FormDataSource sender, FormDataSourceEventArgs e)
{
sender.query().dataSourceName(sender.name()).addRange(fieldnum(purchparmtable, purchname)).value("");
}
19.OnRefreshed
//The primary purpose of the OnRefreshed event handler at the datasource level is to handle specific actions or modifications
//that need to occur after the datasource has been refreshed and all data-related events have been processed.
// This can include tasks such as updating dependent controls or calculations based on the refreshed data,
// or any other behavior that should be triggered after the data has been refreshed and all data-related events have been handled.
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::Refreshed)]
public static void PurchParmTable_OnRefreshed(FormDataSource sender, FormDataSourceEventArgs e)
{
FormDataSource formdatasource = sender; // current form datasource.
FormRun formrun = formdatasource.formRun(); // current fromrun.
PurchParmTable purchparmtable = formdatasource.cursor(); // active record.
controlname mycontrol = formrun.design().controlName('');
if (purchparmtable)
{
mycontrol.enable(true);
}
}
20.OnReread.
//The primary purpose of the OnReread event handler at the datasource level is to handle specific actions
// or modifications that need to occur after the datasource has been reloaded with the same set of data.
// This can include tasks such as refreshing dependent controls, recalculating values, or any other behavior
// that should be triggered after the data has been reloaded.
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::Reread)]
public static void PurchParmTable_OnReread(FormDataSource sender, FormDataSourceEventArgs e)
{
}
21.OnSelectionChanged.
//The primary purpose of the OnSelectionChanged event handler at the datasource level is to handle specific actions
// or modifications that need to occur when the selection of records in the datasource is changed.
//This can include tasks such as updating dependent controls, recalculating values, or any other behavior
// that should be triggered when the user changes the selected records.
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::SelectionChanged)]
public static void PurchParmTable_OnSelectionChanged(FormDataSource sender, FormDataSourceEventArgs e)
{
}
22.OnValidatedDelete
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::ValidatedDelete)]
public static void PurchParmTable_OnValidatedDelete(FormDataSource sender, FormDataSourceEventArgs e)
{
}
23. OnValidatedWrite
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::ValidatedWrite)]
public static void PurchParmTable_OnValidatedWrite(FormDataSource sender, FormDataSourceEventArgs e)
{
}
24.OnWriting.
//The primary purpose of the OnWriting event handler at the datasource level is to handle specific actions
// or modifications that need to occur before a write operation is performed on the datasource. This can include tasks
// such as validating the data, applying business rules, modifying field values, or any other behavior that should be
//triggered before the write operation takes place.
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::Writing)]
public static void PurchParmTable_OnWriting(FormDataSource sender, FormDataSourceEventArgs e)
{
FormDataSource CaseDetailBase_ds = sender.formRun().datasource(formDataSourceStr(purcheditlines,purchParmTable));
CaseDetailBase_ds.refresh();
CaseDetailBase_ds.research(true);
}
25.OnWritten.
//The primary purpose of the OnWritten event handler at the datasource level is to handle specific actions
//or modifications that need to occur after a write operation has been performed on the datasource.
//This can include tasks such as refreshing dependent controls, updating related data, triggering notifications,
//or any other behavior that should be triggered after the write operation has completed.
[FormDataSourceEventHandler(formDataSourceStr(PurchEditLines, PurchParmTable), FormDataSourceEventType::Written)]
public static void PurchParmTable_OnWritten(FormDataSource sender, FormDataSourceEventArgs e)
{
formrun formrun = sender.formRun();
PurchParmTable purchparmtable = sender.cursor();
//Write your code
}
--------------------------------------------------------------------------------------------------------------------------------------
26.OnModified
[FormDataFieldEventHandler(formDataFieldStr(PurchEditLines, PurchParmTable, BankLCImportLine), FormDataFieldEventType::Modified)]
public static void BankLCImportLine_OnModified(FormDataObject sender, FormDataFieldEventArgs e)
{
FormDataSource purchparmtable_ds = sender.datasource(); // datasource.
PurchParmTable purchparmtable = purchparmtable_ds.cursor(); // active record.
if (purchparmtable.PurchId)
{
purchparmtable.PurchName = "";
}
}
Keep learning!!