TprxDBEditDateTime

De Pragma Wiki
Revisión del 19:23 23 may 2025 de Luciano Carou (discusión | contribs.) (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…»)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda

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.