TpAUX CAMPO ONEVENT unit

De Pragma Wiki
Ir a la navegación Ir a la búsqueda

Descripción

El objeto TpAUX_CAMPO_ONEVENT_unit (Eventos de campos) procesa los auxiliares de tipo EVENTO_CAMPOS, ver detalles en DEV AUXILIARES/EVENTO CAMPO.

Identidad

  • Ancestro: TComponent
  • Carpeta: C:\DevelopPrx\pPRAGMA
  • Archivo: pAUX_CAMPO_ONEVENT_unit.pas

Declaración

const
  TpAUX_CAMPO_ONEVENT_ONENTER = 'ONENTER';
  TpAUX_CAMPO_ONEVENT_ONEXIT  = 'ONEXIT';
  TpAUX_CAMPO_ONEVENT_VALIDACION = 'VALIDACION';
  TpAUX_CAMPO_ONEVENT_ADVERTENCIA = 'ADVERTENCIA';

type
  TpAUX_CAMPO_ONEVENT_unit = class(TComponent)
  private
    FDataSet: TDataSet;
    FClase: String;
    FCampo: String;

    FQuery: TprxADOQuery;

    FTag_Evento: String;
    FTag_Tipo: String;
    FTag_NoButtons: Boolean;

    FSQL_COMANDO: TStringList;
    FSQL_MENSAJE: TStringList;
    FSQL_MENSAJEQ: TStringList;
    FSQL_EXECUTE: TStringList;

    FItems: TStringList;
  protected
    property    Tag_Evento: String read FTag_Evento write FTag_Evento;
    property    Tag_Tipo: String read FTag_Tipo write FTag_Tipo;
    property    Tag_NoButtons: Boolean read FTag_NoButtons write FTag_NoButtons;
    property    SQL_COMANDO: TStringList read FSQL_COMANDO write FSQL_COMANDO;
    property    SQL_MENSAJE: TStringList read FSQL_MENSAJE write FSQL_MENSAJE;
    property    SQL_MENSAJEQ: TStringList read FSQL_MENSAJEQ write FSQL_MENSAJEQ;
    property    SQL_EXECUTE: TStringList read FSQL_EXECUTE write FSQL_EXECUTE;
  public
    constructor Create(AOwner: TComponent); override;
    destructor  Destroy; override;

    function    Procesar(aEvento: String; var aMsg: String): Boolean;
    function    ProcesarANTES(aEvento: String; var aMsg: String): Boolean;

    property    DataSet: TDataSet read FDataSet write FDataSet;
    property    Clase: String read FClase write FClase;
    property    Campo: String read FCampo write FCampo;

    property    Query: TprxADOQuery read FQuery write FQuery;

    property    Items: TStringList read FItems;
  published
  end;

Implementación

Modo de uso

El auxiliar se usa de la siguiente manera, primero la inicialización (ejemplo de TprxADODataSetEdit.OnExitFieldXtd):

prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.DataSet := Self;
prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Clase   := ppTableName;
prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Campo   := aFieldName;

Primero asignamos las propiedades:

  • Dataset que se asigna al mismo componente que está llamando al auxiliar.
  • Clase se inicializa al nombre de la tabla del componente que está llamando al auxiliar.
  • Campo se inicializa al nombre del campo cuyo valor queremos asignar.

Posteriormente evaluamos la constricción:

if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Exists then
   begin
   prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Prepare;

   if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.EsTipo_FILTRO = False then
      begin
      if (Trim(FieldByName(aFieldName).AsString) <> '') and (FieldByName(aFieldName).IsNull = False) then
          Result := prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Validate(vMsg);
      end
   else
      begin
      vConstraint    := prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Solucion;
      vConstraintMSG := prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Mensaje;
      end;
   end;

El Exists habilita la evaluación de la constricción.

Distinto es el comportamiento cuando la constricción corresponde a una enumeración, en este caso es el control de edición TprxDBComboBox que carga los ítems de la enumeración:

if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Prepared then
   begin
   if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.EsTipo_ENUMERACION then
      begin
      // Cargamos los ítems del constraint, y posiblemente los ítems del combo...

      ConstraintItems.Clear;

      for I := 0 to prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.SQL_COMANDO_SELECT.Count - 1 do
          ConstraintItems.Add(prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.SQL_COMANDO_SELECT[I]);

      for I := 0 to prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Items.Count - 1 do
          Items.Add(prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Items[I]);
      end;
   end;

Además, la constricción puede aplicar a campos de tipo fecha (TprxDBEditDateTime.Seleccionar):

if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Prepared then
   begin
   if prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.EsTipo_FILTRO then
      vConstraint := prxADOClientDM.pAUX_CAMPO_CONSTRAINT_unit.Solucion;
   end;

Usos

El auxiliar se usa en: