TTfvsDBClientFrameCmpCabecera
Descripción
El frame TTfvsDBClientFrameCmpCabecera (Implementa cabecera de comprobantes) implementa el panel superior usado por todos los comprobantes. Contiene los controles de edición necesarios para todos los comprobantes.
Identidad
- Ancestro: TTfvsDBClientFrameScrollBox
- Carpeta: C:\DevelopPrx\frames
- Archivo: fvsDBClientFrameCmpCabecera.pas
Ejemplo de definición
Frame en diseño
En diseño el frame se ve así, los controles se acomodan durante la ejecución de la aplicación:

Define los campos para:
- Código de comprobante.
- Tipo según COMPROBANTES/TIPOS.
- Punto de emisión según COMPROBANTES/PUNTOSEMISION.
- Fecha de emisión.
- Datos de valuación: moneda, fecha de valuación y cotización.
- Estado (ver [[:Category:COMPROBANTES#Estados de un comprobante|Estados de un comprobante).
Frame en runtime
Al ejecutarse, el frame adquiere otro aspecto como se ve en la cabecera de órdenes de compra:

En el recuadro vemos los campos según el diseño, en el panel a la derecha podemos ver los campos que la orden de compra agrega. separando ambos paneles está el splitter.
Definición del frame
No es necesario definir este frame durante el diseño de las clases ya que es la opción por defecto para todas las clases derivadas de:
- cmpCABECERA_pragma_XTD.
- cmpCABECERA.
Ver TprxCmpCABECERA.
Declaración
type TTfvsDBClientFrameCmpCabecera = class(TTfvsDBClientFrameScrollBox) Panel_cmpCodigo: TPanel; Panel_cmpTipo: TPanel; Panel_cmpPuntoEmision: TPanel; Panel_cmpFecha: TPanel; Panel_cmpValuacion: TPanel; Panel_cmpEstado: TPanel; StaticText1: TStaticText; StaticText2: TStaticText; StaticText3: TStaticText; StaticText4: TStaticText; StaticText5: TStaticText; StaticText6: TStaticText; prxDBEdit_cmpCodigo: TprxDBEdit; prxDBEdit_cmpTipo: TprxDBEdit; prxDBEditcmpTipo_Descripcion: TprxDBEdit; prxDBEdit_cmpPuntoEmision: TprxDBEdit; prxDBEdit_cmpPuntoEmision_Descripcion: TprxDBEdit; prxDBEdit_cmpFecha: TprxDBEditDateTime; prxDBEdit_cmpMoneda: TprxDBEdit; prxDBEdit_cmpFechaValuacion: TprxDBEditDateTime; prxDBEdit_cmpCotizacion: TprxDBEdit; prxDBEdit_cmpUsuario: TprxDBEdit; Panel5: TPanel; prxSpeedButton_cmpFechaValuacion: TprxSpeedButton; prxSpeedButton_cmpTipo: TprxSpeedButton; prxSpeedButton_cmpPuntoEmision: TprxSpeedButton; prxSpeedButton_cmpFecha: TprxSpeedButton; prxDBEdit_cmpEstado: TprxDBEdit; procedure DBNavigator1NavigatorClick(Sender: TDBNavigator; aButton: TNavigateBtn; aX, aY: Integer; var aHandled: Boolean); procedure SpeedButton_cmppFecha_GetPopupOptions(Sender: TComponent; aPopupMenu: TprxPopupMenu); procedure prxSpeedButton_cmpTipoClick(Sender: TObject); procedure prxSpeedButton_cmpPuntoEmisionClick(Sender: TObject); procedure prxSpeedButton_cmpFechaClick(Sender: TObject); private FComprobanteTipo: TTfvsDBClientFrameCmpCabecera_Tipo; protected procedure SetDataSet(aValue: TprxADODataSetEdit); override; property ComprobanteTipo: TTfvsDBClientFrameCmpCabecera_Tipo read FComprobanteTipo write FComprobanteTipo; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure OnFrameShow(Sender: TObject); override; procedure ClassShow_BuildFrame(Sender: TObject); override; function ClassShow_AgregarTablaMaster(aTabla: String): Boolean; override; function ClassShow_AgregarControles: Boolean; override; function ClassShow_Activate(aActivateDataSet: Boolean): Boolean; override; procedure ClassShow_CloseFrame(Sender: TObject); override; procedure OnExecute_INSERT(var aHandled: Boolean); override; procedure OnExecute_EDIT(var aHandled: Boolean); override; procedure OnExecute_POST(var aHandled: Boolean); override; procedure OnExecute_CANCEL(var aHandled: Boolean); override; procedure OnExecute_DELETE(var aHandled: Boolean); override; procedure OnExecute_REFRESH(var aHandled: Boolean); override; end;
Implementación
procedure SetDataSet(aValue: TprxADODataSetEdit)
Asocia el dataset a los controles del frame.
Recibe los clicks del navegador:
- nbEdit es la edición y llama a OnExecute_EDIT.
- nbPost es el posteo de los cambios al dataset, llama a OnExecute_POST.
- nbDelete es la eliminación de un registro, llama a OnExecute_DELETE.
function ClassShow_AgregarControles: Boolean
Ajusta los controles al tamaño y posición del frame.
function ClassShow_Activate(aActivateDataSet: Boolean): Boolean
Al activarse el frame verifica si debe insertar o editar conj:
if ClassShow.DataSetState = dsInsert then begin // Si hay que ponerlo en inserción... if DataSet.CanInsertXtd then DataSet.InsertXtd(Self); end else if ClassShow.DataSetState = dsEdit then begin // Si hay que ponerlo en edición... if DataSet.RecordCount > 0 then begin if DataSet.CanEditXtd then DataSet.EditXtd(Self) end; end;
procedure OnExecute_EDIT(var aHandled: Boolean)
Al picar el botón de editar en el navegadro verifica si el comprobante puede ser editado:
- Se encuentra en estado abierto.
- Puede ser reabierto por el usuario.
procedure OnExecute_POST(var aHandled: Boolean)
Guarda los cambios al comprobante, abre el form donde podemos elegir en qué estado se graba el comprobante.
Uso
Definición del frame
El frame se usa para todas las clases derivadas de:
- cmpCABECERA_pragma_XTD.
- cmpCABECERA.
Ver TprxCmpCABECERA.