TTfvsDBClientFrameMasterClases
Descripción
El frame TTfvsDBClientFrameMasterClases (Implementa ficha de clases) implementa un frame para editar las clases que hemos definido en Clases. Este frame va a crear lo necesario para editar el registro solicitado, y si esa clase tiene detalles va a crearlos también.
Según lo documentado en DEV ETIQUETAS/FRAME EDICION este frame correspondería a la instancia 2.
Imagen del frame en diseño
En diseño el frame se ve de la siguiente manera:

Sus partes son:
- Panel superior: normalmente usado con controles de edición en formato de ficha, puede tener hasta dos paneles (el izquierdo y el derecho).
- Área para detalles: se crean las pestañas para los detalles de la clase master (si los hubiere).
- Panel de comentarios: normalmente contiene el control de edición de comentarios, pero puede tener otros controles de edición.
- Panel de totales: normalmente muestra los totales del comprobante.
Finalmente, abajo a derecha están los botones de aplicar y de cancelar.
El botón Button1 debe ignorarse, se usó para una prueba y no fue eliminado, no es visible en runtime.
Imagen del frame en runtime
En runtime se ve de la siguiente manera (el ejemplo es de una factura de compras de la BD pCatalogo):

Sus partes son (notar que el panel superior se abre en dos, el izquierdo y el derecho):
- Panel superior, izquierda: este panel es muy parecido para todos los comprobantes, pueden variar según si el comprobante valoriza o no o como en este caso agrega el campo Factura Crédito.
- Panel superior, derecha: contiene los datos del proveedor y de la factura presentada
- Detalle de artículos: contiene una grilla (instancia 1) del detalle de la factura, desde aquí se accede a la instancia 2 de esa misma tabla.
- Otros datos en otra pestaña: agrega otra pestaña para guardar otros datos.
- Panel de comentarios: agrega dos controles de edición al estándar de comentarios.
- Panel de totales: muestra los totales del comprobante.
Ubicación de los campos en el frame
En Panel se describe cómo hacer para ubicar un campo en algún panel en particular.

El campo FCUENTA se ubica en panel main pero como tiene el comando BREAK se muestra en el panel a derecha.

El campo FRECUPEROIVA se ubica en panel comentarios.
Declaración
const TTAplicarText = 'Aplicar'; TTCancelarText = 'Cancelar'; type TTfvsDBClientFrameMasterClases = class(TTfvsDBClientFrame) PanelBASE: TPanel; PanelCABECERA: TPanel; PanelPIE: TPanel; SplitterCENTRAL: TSplitter; PopupMenu1: TPopupMenu; PanelCENTRAL: TPanel; SplitterPIE: TSplitter; PageControlDETALLES: TPageControl; PanelBOTONES_PIE: TPanel; ButtonAPLICAR: TButton; ButtonCANCELAR: TButton; StatusBar1: TStatusBar; PanelPIE_Comentarios: TPanel; Splitter_PanelPIE_Vertical: TSplitter; PanelPIE_Totales: TPanel; Panel5: TPanel; Panel1: TPanel; prxScrollBox_Comentarios: TprxScrollBox; prxScrollBox_Totales: TprxScrollBox; Button1: TButton; Action_INSERT_Master: TAction; Action_EDIT_Master: TAction; Action_POST_Master: TAction; Action_CANCEL_Master: TAction; Action_DELETE_Master: TAction; Action_INSERT_Detail: TAction; Action_EDIT_Detail: TAction; Action_POST_Detail: TAction; Action_CANCEL_Detail: TAction; Action_DELETE_Detail: TAction; Label_wflFIRMASX: TLabel; procedure prxADODataSetEdit1ppOnShowFieldHint(Sender: TprxADODataSet; aCampo, aAtributo: String; aEnteros, aDecimales: Integer; aRequerido: Boolean; aIndicaciones: String; aConstraint: String); procedure Button1Click(Sender: TObject); procedure PageControlDETALLESChange(Sender: TObject); procedure OnExecute_INSERT_Master(Sender: TObject); procedure OnExecute_EDIT_Master(Sender: TObject); procedure OnExecute_POST_Master(Sender: TObject); procedure OnExecute_CANCEL_Master(Sender: TObject); procedure OnExecute_DELETE_Master(Sender: TObject); procedure OnExecute_REFRESH_Master(Sender: TObject); procedure OnExecute_INSERT_Detail(Sender: TObject); procedure OnExecute_EDIT_Detail(Sender: TObject); procedure OnExecute_DELETE_Detail(Sender: TObject); procedure OnExecute_POST_Detail(Sender: TObject); private FUsaPanelCENTRAL: Boolean; FUsaPanelPIE: Boolean; FUsaPanelPIE_Totales: Boolean; FPanelCABECERA_ClassShow_Frame: TTfvsFrame; protected procedure SetDataSet(aValue: TprxADODataSetEdit); override; procedure FieldMessage(var Message: TprxADODataSetMessage); message MSG_PRXADODATASETMESSAGE; procedure UsaPanelCENTRALSet(aValue: Boolean); function UsaPanelCENTRALGet: Boolean; procedure UsaPanelPIESet(aValue: Boolean); function UsaPanelPIEGet: Boolean; procedure UsaPanelPIE_Totales_Set(aValue: Boolean); function UsaPanelPIE_Totales_Get: Boolean; procedure ClassShow_BuildFrame_ArmaTab_Especial(aTabName: String); procedure ClassShow_BuildFrame_PanelesAlPie(aPanelName: String; aScrollBox: TprxScrollBox); function OnExecute_Detail_Select_Frame(var aFrame: TTfvsDBClientFrame): Boolean; property UsaPanelCENTRAL: Boolean read UsaPanelCENTRALGet write UsaPanelCENTRALSet; property UsaPanelPIE: Boolean read UsaPanelPIEGet write UsaPanelPIESet; property UsaPanelPIE_Totales: Boolean read UsaPanelPIE_Totales_Get write UsaPanelPIE_Totales_Set; property PanelCABECERA_ClassShow_Frame: TTfvsFrame read FPanelCABECERA_ClassShow_Frame write FPanelCABECERA_ClassShow_Frame; 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; end;
Implementación
Identidad
- Ancestro: TTfvsDBClientFrame
- Carpeta: C:\DevelopPrx\frames
- Archivo: fvsDBClientFrameMasterClases.pas