Hay dos métodos para cada uno: un método presente-continuo (ing) y un método en tiempo pasado (ed). Los métodos ing se invocan antes de que se active el evento, y el método ed se dispara después del evento.
En nuestro ejemplo, el controlador de eventos se utiliza para asignar, validar y actualizar un campo. Por lo tanto, vamos a colocar estos métodos en una clase de ayuda.
En nuestro caso, tenemos como escenario de prueba la aplicación para generar Renta de vehículos. Los registros se almacenan en la tabla HAVehicleRentTable.
- Crear una nueva clase. En nuestro caso HAVehicleRentManager.
- Abra el diseño de la tabla en cuestión, expanda el nodo Eventos y ubique onInserting.
- Haga clic derecho en el evento y elija Copiar el método del controlador de eventos.
- Abra la clase HAVehicleRentManager y pegue el código generado anteriormente en el cuerpo de la clase, como se muestra aquí:
class HAVehicleRentManager
{
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[DataEventHandler(tableStr(HAVehicleRentTable), DataEventType::Inserting)]
public static void HAVehicleRentTable_onInserting(Common sender, DataEventArgs e)
{
}
}
- A continuación, tendremos que escribir el código de la siguiente manera:
class HAVehicleRentManager
{
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[DataEventHandler(tableStr(HAVehicleRentTable), DataEventType::Inserting)]
public static void HAVehicleRentTable_onInserting(Common sender, DataEventArgs e)
{
HAVehicleRentTable vehicleRentTable = sender;
vehicleRentTable.numberDays = vehicleRentTable.toDate - vehicleRentTable.fromDate;
info(strFmt("Renta %1",vehicleRentTable.RentId));
}
}
- Para probar esto, realice una compilación completa que incluya la sincronización de la base de datos. Y al crear una nueva renta de vehículo, el evento ejecuta nuestro código.
- Asignando el número de días y notificando el número de renta creado.
Al controlar campos en un diseño, también necesitamos controlar eventos como modifiedField y validateField. Para controlarlos, nos suscribiremos al evento de datos apropiado.
- Considerando lo antes mencionado. Abra el diseño de la tabla HAVehicleRentTable, haga clic derecho en el evento onValidatedField y elija Copiar el método del controlador de eventos.
- Pegue el código generado en el cuerpo de la clase HAVehicleRentManager, y escriba el código del evento de la siguiente manera:
class HAVehicleRentManager
{
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[DataEventHandler(tableStr(HAVehicleRentTable), DataEventType::ValidatedField)]
public static void HAVehicleRentTable_onValidatedField(Common sender, DataEventArgs e)
{
ValidateFieldEventArgs fieldArgs = e;
HAVehicleRentTable vehicleRentTable = sender;
Boolean ok = true;
switch(fieldArgs.parmFieldId())
{
case fieldnum(HAVehicleRentTable,toDate):
if(vehicleRentTable.toDate < vehicleRentTable.fromDate)
{
ok = checkFailed("Fecha");
}
break;
}
if(!ok)
{
fieldArgs.parmValidateResult(false);
}
}
}
- Para probar esto, realice una compilación completa que incluya la sincronización de la base de datos. Y al modificar el valor del campo de fecha "Hasta", el evento ejecuta nuestra validación.
- Finalmente, abra el diseño de la tabla HAVehicleRentTable, haga clic derecho en el evento onModifyingField y elija Copiar el método del controlador de eventos.
- Pegue el código generado en el cuerpo de la clase HAVehicleRentManager, y escriba el código del evento de la siguiente manera:
class HAVehicleRentManager
{
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[DataEventHandler(tableStr(HAVehicleRentTable), DataEventType::ModifyingField)]
public static void HAVehicleRentTable_onModifyingField(Common sender, DataEventArgs e)
{
ModifyFieldEventArgs fieldArgs = e;
HAVehicleRentTable vehicleRentTable = sender;
//Boolean ok = true;
switch(fieldArgs.parmFieldId())
{
case fieldnum(HAVehicleRentTable,toDate):
vehicleRentTable.numberDays = vehicleRentTable.toDate - vehicleRentTable.fromDate;
break;
}
}
}
- Para probar esto, realice una compilación completa que incluya la sincronización de la base de datos. Y al modificar el valor del campo de fecha "Hasta", el evento ejecuta nuestra actualización.
- Otras clases especializadas en DataEventArgs que son útiles son las siguientes:
No hay comentarios:
Publicar un comentario