Diferencia entre revisiones de «TprxDBEditDateTime»

De Pragma Wiki
Ir a la navegación Ir a la búsqueda
(Página creada con «=Descripción= El objeto '''TprxDBEditDateTime''' (Control de edición de campos DATETIME.) es el control de edición usado para campos DATETIME (fecha y hora). miniaturadeimagen|no|TprxDBDateTime en una factura. =Identidad= Category:MANUAL/PROGRAMADOR Category:CONTROLES *Ancestro: TDBEdit *Carpeta: C:\DevelopPrx\library *Archivo: prxDBEditDateTime.pas =Declaración= <pre> type TprxD…»)
 
Sin resumen de edición
Línea 128: Línea 128:


Normalmente lo instancia [[TprxScrollBox]].
Normalmente lo instancia [[TprxScrollBox]].
=Form TTprxDBEditDateTimePickerForm=
El siguiente form se usa para seleccionar una fecha desde el control de edición:
*[[TTprxDBEditDateTimePickerForm|Selección de una fecha (TTprxDBEditDateTimePickerForm)]] (deriva de TTprxForm).

Revisión del 17:50 27 may 2025

Descripción

El objeto TprxDBEditDateTime (Control de edición de campos DATETIME.) es el control de edición usado para campos DATETIME (fecha y hora).

TprxDBDateTime en una factura.

Identidad

  • Ancestro: TDBEdit
  • Carpeta: C:\DevelopPrx\library
  • Archivo: prxDBEditDateTime.pas

Declaración

type
  TprxDBEditDateTime = class(TDBEdit)
  private
    FDataControl: String;
    FComportamiento: String;

    FOnEnterField: TprxADOOnEnterField;
    FOnExitField: TprxADOOnExitField;

    FDay: Integer;
    FMonth: Integer;
    FYear: Integer;
    FHour: Integer;
    FMinute: Integer;

    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
    function    DecodeValue: Boolean;

    function    prxOccurs(const aStr: string; const aSubstr: string): Integer;

    procedure   LocalKeyPress(Sender: TObject; var Key: Char);

    procedure   SetTextValue;
    function    GetTextValue: Boolean;

    function    EsFechaValida: Boolean;

    property    Day: Integer read FDay write FDay;
    property    Month: Integer read FMonth write FMonth;
    property    Year: Integer read FYear write FYear;
    property    Hour: Integer read FHour write FHour;
    property    Minute: Integer read FMinute write FMinute;
  public
    constructor Create(AOwner: TComponent); override;
    destructor  Destroy; override;
    procedure   Loaded; override;

    procedure   AssignDataSource(aDataSource: TDataSource; aDataField: String);

    procedure   Seleccionar(Sender: TObject);

    property    DataControl: String read FDataControl write FDataControl;
    property    Comportamiento: String read FComportamiento write FComportamiento;
  published
    property    OnEnterField: TprxADOOnEnterField read FOnEnterField write FOnEnterField;
    property    OnExitField: TprxADOOnExitField read FOnExitField write FOnExitField;
  end;

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 TprxDBEditDateTimeCreate(AOwner: TComponent; aDataSource: TDataSource; aFieldName: String): TprxDBEditDateTime

Esta función está definida fuera de la clase y sirve para crear un nuevo control de edición directamente.

Implementación

procedure Loaded

Suscribe a los mensajes de dataset:

TprxADODataSetEdit(DataSource.Dataset).Messages.Subscribe(Self, DataField);
TprxADODataSetEdit(DataSource.Dataset).FieldsXtdList.AssignEditControl(DataField, Self);

Inicializa OnEnter y OnExit a los definidos en el TprxADODataSetEdit:

OnEnterField := TprxADODataSetEdit(DataSource.Dataset).OnEnterFieldXtd;
OnExitField  := TprxADODataSetEdit(DataSource.Dataset).OnExitFieldXtd;

procedure CMEnter(var Message: TCMENTER)

Llama al OnEnterField y poco más.

procedure CMExit(var Message: TCMExit)

Llama al OnExitField, si el resultado es True sigue normalmente, sino vuelve a setear foco en el control.

procedure FieldMessage(var Message: TprxADODataSetMessage)

Recibe y procesa mensajes de la aplicación, los mensajes son:

  • msgEnable habilita (o deshabilita) un control según el estado que tenía.
  • msgDisable deshabilita el control.
  • msgScroll el dataset cambia de registro.
  • msgFocus pone el foco sobre el control (si el control lo admite).
  • msgFindFocus si el control puede enfocar lo hace.

procedure CNKeyDown(var Message: TWMKeyDown)

Atrapa las teclas:

  • VK_RETURN (ENTER) y avanza al siguiente control.
  • VK_F5 (F5) abre el form de selección de fecha.

procedure LocalKeyPress(Sender: TObject; var Key: Char)

Valida los caracteres ingresados según sea una fecha o una hora.

procedure Seleccionar(Sender: TObject)

Abre el form TTprxDBEditDateTimePickerForm para seleccionar una fecha.

procedure SetTextValue

Asigna al control el valor de la fecha u hora en formato texto.

function GetTextValue: Boolean

Toma el valor del control que está en formato texto.

function EsFechaValida: Boolean

Retorna True si el valor del control es una fecha válida.

Uso

En las pantallas de edición, cuando el campo es de tipo DATETIME.

Normalmente lo instancia TprxScrollBox.

Form TTprxDBEditDateTimePickerForm

El siguiente form se usa para seleccionar una fecha desde el control de edición: