Diferencia entre revisiones de «TTfvsDBClientFrameCmpCabecera»

De Pragma Wiki
Ir a la navegación Ir a la búsqueda
Sin resumen de edición
 
Línea 29: Línea 29:
===Definición del frame===
===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:
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=
<pre>
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;
</pre>
=Implementación=
===procedure SetDataSet(aValue: TprxADODataSetEdit)===
Asocia el dataset a los controles del frame.
===procedure DBNavigator1NavigatorClick(Sender: TDBNavigator; aButton: TNavigateBtn; aX, aY: Integer; var aHandled: Boolean)===
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:
<pre>
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;
</pre>
===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_pragma_XTD.
*cmpCABECERA.
*cmpCABECERA.
Ver [[TprxCmpCABECERA]].
Ver [[TprxCmpCABECERA]].

Revisión actual - 20:39 3 jun 2025

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

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:

Frame para comprobantes en diseño.

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:

Frame para comprobantes en runtime.

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.

procedure DBNavigator1NavigatorClick(Sender: TDBNavigator; aButton: TNavigateBtn; aX, aY: Integer; var aHandled: Boolean)

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.