Tfva campos item

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

Descripción

El objeto Tfva_campos_item (Componente que representa un campo de un dataset.) representa a un campo de un TprxADODataSetEdit, implementa funcionalidad que simplifica el comportamiento del campo en una pantalla de edición.

Identidad

  • Ancestro: TComponent
  • Carpeta: C:\DevelopPrx\library
  • Archivo: fva_campos_item,pas

Declaración

type
  Tfva_campos_item = class(TComponent)
  private
    FADODataSet: TprxADODataSet;
    FAncestro: String;
    FFieldName: String;
    FLogicalName: String;
    FColumna: Integer;
    FAtributo: String;
    FEnteros: Integer;
    FDecimales: Integer;
    FComportamiento: String;
    FClave: Boolean;
    FRequerido: Boolean;
    FControl: String;
    FAlias: Boolean;
    FEditaEnINSERT: Boolean;
    FEditaEnUPDATE: Boolean;
    FIndicaDefecto: Boolean;
    FVisible: Boolean;
    FGrupo: String;
    FPanel: String;
    FIndicaciones: String;
    FValorPorDefecto: String;
    FRelacionesCampo: Boolean;

    Fcampos_calculados: TStringList;
    FComputo: String;

    FFKTablaForanea: String;
    FFKCamposPropios: TStringList;
    FFKCamposForaneos: TStringList;

    FRelaxValidation: Boolean;
    FFieldNo: Integer;
    FLookupDS: TprxADODataSetLookup;
    FCargarElementos: String;

    FEditControl: TWinControl;
  protected
    function    ValidateFieldAlias(aTablaF: String; aCampoF: String; aFieldName: String; aAttribute: String; aValorL: String; var aValorRetorno: Variant): Boolean;
  public
    FEnumeracionItems: String;
    FEnumeracionInicializacion: String;

    constructor Create(AOwner: TComponent); override;
    destructor  Destroy; override;
    procedure   Loaded; override;

    function    TableName: String;

    function    Get_Constante: Boolean;
    function    Get_Field: TField;
    function    Get_Query: TprxADOQuery;

    function    CrearFieldDefCampo(aField: TField; aEnteros: Integer; aDecimales: Integer; aRequired: Boolean): TField;
    procedure   CrearFieldDefCamposCalculados(vDS: TADODataSet);
    procedure   CrearSelectCamposCalculados(aCommandFields: TStringList; aCommandFrom: TStringList; aCommandLeftOuter: TStringList);

    function    ValidateField(aConstraint: String; var aMsg: String): Boolean;

    function    ArmarEnumeracion: Boolean;

    function    EDIT_ONENTER: Boolean;
    function    EDIT_SELECT(aConstraint: String = ''): Boolean;
    function    EDIT_ONEXIT: Boolean;
    function    EDIT_VALIDATE(var aMsg: String): Boolean;

    property    ADODataSet: TprxADODataSet read FADODataSet write FADODataSet;
    property    Ancestro: String read FAncestro write FAncestro;
    property    FieldName: String read FFieldName write FFieldName;
    property    LogicalName: String read FLogicalName write FLogicalName;
    property    Columna: Integer read FColumna write FColumna;
    property    Atributo: String read FAtributo write FAtributo;
    property    Enteros: Integer read FEnteros write FEnteros;
    property    Decimales: Integer read FDecimales write FDecimales;

    property    Comportamiento: String read FComportamiento write FComportamiento;

    property    Clave: Boolean read FClave write FClave;
    property    Requerido: Boolean read FRequerido write FRequerido;
    property    Control: String read FControl write FControl;

    property    EnumeracionItems: String read FEnumeracionItems write FEnumeracionItems;
    property    EnumeracionInicializacion: String read FEnumeracionInicializacion write FEnumeracionInicializacion;

    property    Alias: Boolean read FAlias write FAlias;
    property    EditaEnINSERT: Boolean read FEditaEnINSERT write FEditaEnINSERT;
    property    EditaEnUPDATE: Boolean read FEditaEnUPDATE write FEditaEnUPDATE;
    property    Constante: Boolean read Get_Constante; //FConstante write FConstante;
    property    Field: TField read Get_Field;
    property    Query: TprxADOQuery read Get_Query;
    property    IndicaDefecto: Boolean read FIndicaDefecto write FIndicaDefecto;
    property    Visible: Boolean read FVisible write FVisible;
    property    Grupo: String read FGrupo write FGrupo;
    property    xxPanel: String read FPanel write FPanel;
    property    Indicaciones: String read FIndicaciones write FIndicaciones;
    property    ValorPorDefecto: String read FValorPorDefecto write FValorPorDefecto;
    property    RelacionesCampo: Boolean read FRelacionesCampo write FRelacionesCampo;
    property    campos_calculados: TStringList read Fcampos_calculados write Fcampos_calculados;
    property    Computo: String read FComputo write FComputo;

    property    FKTablaForanea: String read FFKTablaForanea write FFKTablaForanea;
    property    FKCamposPropios: TStringList read FFKCamposPropios write FFKCamposPropios;
    property    FKCamposForaneos: TStringList read FFKCamposForaneos write FFKCamposForaneos;

    property    RelaxValidation: Boolean read FRelaxValidation write FRelaxValidation;
    property    FieldNo: Integer read FFieldNo write FFieldNo;
    property    LookupDS: TprxADODataSetLookup read FLookupDS write FLookupDS;

    property    CargarElementos: String read FCargarElementos write FCargarElementos;
    property    EditControl: TWinControl read FEditControl write FEditControl;
  published
  end;

Atributos del campo

Las siguientes variables corresponden a los atributos del campo cargados en la función TprxADODataSetEdit.StructureLoad:

  • FADODataSet: TprxADODataSet;
  • FAncestro: String;
  • FFieldName: String;
  • FLogicalName: String;
  • FColumna: Integer;
  • FAtributo: String;
  • FEnteros: Integer;
  • FDecimales: Integer;
  • FComportamiento: String;
  • FClave: Boolean;
  • FRequerido: Boolean;
  • FControl: String;
  • FAlias: Boolean;
  • FEditaEnINSERT: Boolean;
  • FEditaEnUPDATE: Boolean;
  • FIndicaDefecto: Boolean;
  • FVisible: Boolean;
  • FGrupo: String;
  • FPanel: String;
  • FIndicaciones: String;
  • FValorPorDefecto: String;
  • FRelacionesCampo: Boolean;
  • Fcampos_calculados: TStringList;
  • FComputo: String;

Implementación

function TableName: String

Retorna el nombre de la tabla del TprxADODataSetEdit que pertenece el campo.

function ArmarEnumeracion: Boolean

Arma los elementos del combo de un campo tipo enumeración.

Carga la definición desde las tablas de Enumeraciones usando el siguiente SQL:

SELECT
prxenumeraciones.Enumeracion
, prxenumeraciones.pSelect
, prxenumeraciones.Inicializacion
, prxenumeracionesD.Codigo
FROM prxenumeraciones, prxenumeracionesD WHERE
prxenumeraciones.Enumeracion = @Atributo
AND prxenumeracionesD.Enumeracion = prxenumeraciones.Enumeracion
ORDER BY
prxenumeracionesD.Enumeracion
, prxenumeracionesD.Linea

procedure CrearSelectCamposCalculados(aCommandFields: TStringList; aCommandFrom: TStringList; aCommandLeftOuter: TStringList)

Al SELECT normal para traer los campos de la tabla, agrega los comandos necesarios (LEFT OUTER JOIN) para traer campos calculados (ej: traer la descripción de un artículo).

function ValidateField(aConstraint: String; var aMsg: String): Boolean

Valida un valor ingresado en un campo de tipo 'clase'.

function ValidateFieldAlias(aTablaF: String; aCampoF: String; aFieldName: String; aAttribute: String; aValorL: String; var aValorRetorno: Variant): Boolean

Valida un valor según los campos Alias de una tabla, si encuentra algo retorna el valor del campo clave de la tabla foránea.

function EDIT_ONENTER: Boolean

Ejecutada en el OnEnter de un control de edición.

function EDIT_SELECT(aConstraint: String = blank): Boolean

Ejecutada al presionar F5 para seleccionar un valor en un control de edición. El argumento aConstraint solo se informa si la misma existe sobre el campo.

function EDIT_ONEXIT: Boolean

Ejecutada en el OnExit de un control de edición.

function EDIT_VALIDATE(var aMsg: String): Boolean

Valida un valor ingresado en un control de edición.

Uso