Tfva campos items

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

Descripción

El objeto Tfva_campos_items (Componente que representa a los campos de un dataset (array de Tfva_campos_item)) agrupa a los registros de Tfva_campos_item, que representan a cada campo de un dataset. La propiedad FieldsXtdList de TprxADODataSetEdit es de tipo Tfva_campos_items.

Identidad

  • Ancestro: TComponent
  • Carpeta: C:\DevelopPrx\library
  • Archivo: fva_campos_items.pas

Declaración

type
  Tfva_campos_items = class(TComponent)
  private
    FADODataSet: TprxADODataSet;
    FPKFields: TStringList;
    FSelected: Tfva_campos_item;
    FSelectedIndex: Integer;

    FValidateFieldsInitializeFlag: Boolean;
    FQuery: TprxADOQuery;

    FTimer: TTimer;
    FTimerItem: Integer;

    Ffvs: Boolean;
  protected
    property    ValidateFieldsInitializeFlag: Boolean read FValidateFieldsInitializeFlag write FValidateFieldsInitializeFlag;
    property    Query: TprxADOQuery read FQuery write FQuery;
    property    Timer: TTimer read FTimer write FTimer;
    property    TimerItem: Integer read FTimerItem write FTimerItem;
  public
    Items: array of Tfva_campos_item;
    ItemsCount: Integer;

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

    function    Add(aCatalogDS: TprxADOQuery; aClase: String; aCodigo: String): Tfva_campos_item;
    procedure   AssignEditControl(aFieldName: String; aEditControl: TWinControl);
    procedure   UnassignEditControl(aFieldName: String; aEditControl: TWinControl);

    procedure   FieldsXtdRelate;
    procedure   FieldsVisibleSet;
    function    FieldByName(aFieldName: String): Tfva_campos_item;
    function    FindField(aFieldName: String): Integer;
    function    CheckSelected(aFieldName: String): Boolean;

    procedure   DefaultValuesAssign;
    procedure   ReadOnlyAssign;

    procedure   FocusFirstActiveControl;
    procedure   FocusNextActiveControl(aFieldName: String);
    procedure   FocusField(aFieldName: String);
    procedure   OnTimerSetFocus(Sender: TObject);

    procedure   InternalCalcFields(DataSet: TDataSet);
    function    CrearFieldDefCamposCalculados(aSentencia: String; aTableName: String): Boolean;

    property    ADODataSet: TprxADODataSet read FADODataSet write FADODataSet;

    property    PKFields: TStringList read FPKFields write FPKFields;
    property    Selected: Tfva_campos_item read FSelected;
    property    SelectedIndex: Integer read FSelectedIndex;

    property    fvs: Boolean read Ffvs write Ffvs;
  published
  end;

Items: array of Tfva_campos_item

Es un array de Tfva_campos_item que representa a los campos del dataset.

Implementación

function Add(aCatalogDS: TprxADOQuery; aClase: String; aCodigo: String): Tfva_campos_item

Agrega un campo al array Items, la función es llamada desde TprxADODataSetEdit.StructureLoad.

procedure AssignEditControl(aFieldName: String; aEditControl: TWinControl)

Asocia un control de edición a un campo, sólo lo hace para los campos físicos, ignora los campos calculados (por no encontrarlos en la lista de campos).

El procedimiento se usa desde los siguientes controles de edición:

procedure UnassignEditControl(aFieldName: String; aEditControl: TWinControl)

Desasocia un control de edición de un campo, sólo lo hace para los campos físicos.

procedure FieldsXtdRelate

Relaciona el índice de Items de cada campo con el Tag del campo físico del DataSet, solo lo hace para los campos que no son calculados.

procedure FieldsVisibleSet

Setea columnas no visibles modificando la propiedad Visible de cada campo.

procedure DefaultValuesAssign

Asigna los valores por defecto según lo descripto en el diccionario del catálogo, condiciones:

  • Cuando el comportamiento del campo es AUTOINCREMENT.
  • Cuando el comportamiento del campo es TIMESTAMP.
  • Cuando el comportamiento del campo es COMPUTER_NAME.
  • Cuando el comportamiento del campo es LOGINUSER.
  • Cuando el atributo del campo es prxGUID.
  • Cuando el atributo del campo es pMACADDRESS.
  • Cuando el campo tiene asignada la propiedad ValorPorDefecto en la tabla Clases, campos (prxcampos) o Consultas, argumentos (prxconsultasA).

procedure FocusFirstActiveControl

Activa el primer control de edición según la lista de campos, siempre sigue el orden de la estructura física. Por ejemplo, cuando insertamos un registro se posiciona en el primer control, pero cuando editamos se posiciona sobre el primer control posterior a los campos clave (que no pueden editarse en una edición). El campo sobre el que se posiciona debe estar activo, es decir que debe permitir su edición. Los campos inactivos se saltean, la verificación se hace con:

Self.Items[I].EditControl.CanFocus

procedure FocusNextActiveControl(aFieldName: String)

Similar al anterior, pero setea foco al primer control posterior al del campo informado en el argumento. El campo sobre el que se posiciona debe estar activo, es decir que debe permitir su edición. Los campos inactivos se saltean, la verificación se hace con:

Self.Items[I].EditControl.CanFocus

procedure FocusField(aFieldName: String)

Similar al anterior, pero setea foco al campo informado en el argumento.

procedure OnTimerSetFocus(Sender: TObject)

Setea foco en un control usando el Timer. Es un caso especial:

"Agregado 2007.06.11 por problemas al grabar BRCBA y al intentar dar foco al primer control de BRTRIPULACION (probar si funciona)..."

procedure InternalCalcFields(DataSet: TDataSet)

Cuando un dataset cambia de un registro a otro busca los campos calculados del registro (por ejemplo: cuando un artículo muestra su descripción en un comprobante).

function CrearFieldDefCamposCalculados(aSentencia: String; aTableName: String): Boolean

Arma el TFieldDef de los campos calculados. TFieldDef es una definición que corresponde a un campo físico de un registro de un dataset, esa definición incluye atributos tales como el nombre del campo, el tipo de dato y su tamaño.

Uso

Se usa en TprxADODataSetEdit.FieldsXtdList.