Diferencia entre revisiones de «TTfvsDBClientFrameMasterClases»

De Pragma Wiki
Ir a la navegación Ir a la búsqueda
Línea 32: Línea 32:
===Ubicación de los campos en el frame===
===Ubicación de los campos en el frame===
En [[DEV CLASES/CAMPOS#Panel|Panel]] se describe cómo hacer para ubicar un campo en algún panel en particular.
En [[DEV CLASES/CAMPOS#Panel|Panel]] se describe cómo hacer para ubicar un campo en algún panel en particular.
[[Archivo:20250603 0933 CAMPO FCUENTA.png|miniaturadeimagen|no|Campo FCUENTA en panel '''main'''.]]
[[Archivo:20250603 0933 CAMPO FCUENTA.png|miniaturadeimagen|no|Campo FCUENTA en panel '''main'''.]]
El campo FCUENTA se ubica en panel '''main''' pero como tiene el comando <pre><BR></pre> se muestra en el panel a derecha.


El campo FCUENTA se ubica en panel '''main''' pero como tiene el comando <pre><BR></pre> se muestra en el panel a derecha.
[[Archivo:20250603 0951 CAMPO FRECUPEROIVA.png|miniaturadeimagen|no|Campo FRECUPEROIVA en el panel comentarios.]]
El campo FRECUPEROIVA se ubica en panel '''comentarios'''.


=Declaración=
=Declaración=

Revisión del 14:53 3 jun 2025

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:

Frame en diseño.

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):

Frame en runtime.

Sus partes son (notar que el panel superior se abre en dos, el izquierdo y el derecho):

  • Panel superior, izquierda: los comprobantes del sistema tienen casi los mismos datos en este panel, pueden variar según si el comprobante valoriza o no o como en este caso agrega el campo Factura Crédito pero son todos muy parecidos.
  • 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.

Campo FCUENTA en panel main.

El campo FCUENTA se ubica en panel main pero como tiene el comando

<BR>

se muestra en el panel a derecha.

Campo FRECUPEROIVA en el panel comentarios.

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