Tfva campos items
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.