Diferencia entre revisiones de «TprxDBEdit»
Línea 140: | Línea 140: | ||
===TprxDBEdit.Seleccionar(Sender: TObject)=== | ===TprxDBEdit.Seleccionar(Sender: TObject)=== | ||
Llama directamente a la función [[ | Llama directamente a la función [[Tva_campos_item]].EDIT_SELECT. |
Revisión del 16:48 23 may 2025
Descripción
El objeto TprxDBEdit (Control de edición DB de campos alfanuméricos.) es el control de edición usado para todos los tipos de campo que no sean:
- Lógicos.
- Combos.
- Fechas.
- Memos.
Es el control de edición más usado en la aplicación.
Identidad
- Ancestro: TDBEdit
- Carpeta: C:\DevelopPrx\library
- Archivo: prxDBEdit.pas
Declaración
type TprxDBEdit = class(TDBEdit) private FFieldXTD: Tfva_campos_item; FDataType: TprxEditDataType; FDataControl: String; FOnEnterField: TprxADOOnEnterField; FOnExitField: TprxADOOnExitField; FImages: TImageList; procedure CMEnter(var Message: TCMEnter); message CM_ENTER; procedure CMExit(var Message: TCMExit); message CM_EXIT; procedure CNKeyDown(var Message: TWMKeyDown); message CN_KEYDOWN; procedure FieldMessage(var Message: TprxADODataSetMessage); message MSG_PRXADODATASETMESSAGE; protected property FieldXTD: Tfva_campos_item read FFieldXTD write FFieldXTD; procedure SetImages(aValue: TImageList); procedure LocalKeyPress(Sender: TObject; var Key: Char); procedure MostrarCamposCalculadosForm(Sender: TObject); procedure MostrarSuscripcionEvaluacionesForm(Sender: TObject); procedure MostrarMaestroDo(Sender: TObject); procedure SeleccionarPartidas(Sender: TObject); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure Loaded; override; procedure AssignDataSource(aDataSource: TDataSource; aDataField: String); procedure Seleccionar(Sender: TObject); procedure MostrarMaestro(Sender: TObject); property DataType: TprxEditDataType read FDataType write FDataType; property DataControl: String read FDataControl write FDataControl; property Images: TImageList read FImages write SetImages; published property OnEnterField: TprxADOOnEnterField read FOnEnterField write FOnEnterField; property OnExitField: TprxADOOnExitField read FOnExitField write FOnExitField; end;
FFieldXTD: Tfva_campos_item
Propiedad que guarda referencia al campo del dataset asociado al control de edición.
FDataType: TprxEditDataType
Guarda el tipo de dato: edtCombo, edtAlpha, edtInteger, edtFloat o edtBoolean.
FOnEnterField: TprxADOOnEnterField
Permite definir una referencia al procedimiento que debe manejar el OnEnter.
FOnExitField: TprxADOOnExitField
Permite definir una referencia al procedimiento que debe manejar el OnExit.
Implementación
function TprxDBEditCreate(AOwner: TComponent; aDataSource: TDataSource; aFieldName: String; aImages: TImageList = nil): TprxDBEdit
Esta función está definida fuera de la clase y sirve para crear un nuevo control de edición directamente.
procedure Loaded
El procedimiento Loaded se ejecuta cuando un form ya se ha instanciado y está listo para mostrarse al usuario, inicializa algunas de las propiedades.
Inicializa el campo Tfva_campos_item al que está asociado:
FieldXTD := TprxADODataSetEdit(DataSource.Dataset).FieldsXtdList.FieldByName(DataField); TprxADODataSetEdit(DataSource.Dataset).FieldsXtdList.AssignEditControl(DataField, Self);
Suscribe a los mensajes de dataset:
TprxADODataSetEdit(DataSource.Dataset).Messages.Subscribe(Self, DataField);
Inicializa OnEnter y OnExit a los definidos en el TprxADODataSetEdit:
OnEnterField := TprxADODataSetEdit(DataSource.Dataset).OnEnterFieldXtd; OnExitField := TprxADODataSetEdit(DataSource.Dataset).OnExitFieldXtd;
Si el campo es requerido lo pinta de verde:
if FieldXTD.Requerido then Self.Color := clMoneyGreen;
procedure CMEnter(var Message: TCMENTER)
Ejecutado en el OnEnter del control de edición, normalmente cuando se recibe el mensaje TCMENTER.
Antes que nada, ejecuta el procedimiento asociado a OnEnterField, luego sigue con su propia programación que no es mucha.
procedure CMExit(var Message: TCMExit)
Ejecutado en el OnExit del control de edición, normalmente cuando se recibe el mensaje TCMEXIT.
Una de las cosas más relevantes es llamar a la función de validación del campo, esa función está en Tva_campos_item.EDIT_VALIDATE.
Finalmente llama al procedimiento asociado a OnExitField.
procedure CNKeyDown(var Message: TWMKeyDown)
Ejecutado cuando el usuario presiona una tecla, atrapa las siguientes (sino deja que el código fluya):
- VK_RETURN (la tecla ENTER) y acciona un VK_TAB para avanzar al siguiente campo.
- VK_F5 (la tecla F5) llama a la función de Seleccionar.
- VK_F9 (la tecla F9) muestra la pantalla de maestro asociada al campo enfocado (por ejemplo: si estamos en la pantalla de artículos, sobre el campo familia, si presionamos F9 iremos directo a la pantalla de familias de artículos).
procedure FieldMessage(var Message: TprxADODataSetMessage)
Recibe y procesa mensajes de la aplicación, los mensajes son:
- msgInsert el dataset se pode en modo insert para ingresar un nuevo registro.
- msgEnable habilita (o deshabilita) un control según el estado que tenía.:
- msgScroll cambia el registro, no hace nada.
- msgDisable deshabilita el control.
- msgFocus pone el foco sobre el control (si el control lo admite).
- msgFindFocus si el control puede enfocar lo hace.
- msgTabStop indica al conmtrol de edición que el control puede ser enfocado.
procedure LocalKeyPress(Sender: TObject; var Key: Char)
Procesa el teclado previo a cualquier otra función, hace limpieza de caracteres según el tipo de dato (por ejemplo: si el dato es numérico impide cualquier caracter que no sea un número).procedure
TprxDBEdit.Seleccionar(Sender: TObject)
Llama directamente a la función Tva_campos_item.EDIT_SELECT.