2010-02-10 9 views

Répondre

2

utiliser l'événement "OnCloseUp" - cet exemple fonctionne pour moi (Delphi 7, Windows XP)

unit Unit1; 

interface 

uses 
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
    Dialogs, ComCtrls, DateUtils, StdCtrls; 

type 
    TForm1 = class(TForm) 
    dtp1: TDateTimePicker; 
    btn1: TButton; 
    edt1: TEdit; 
    procedure btn1Click(Sender: TObject); 
    procedure dtp1CloseUp(Sender: TObject); 
    private 
    { Private declarations } 
    procedure SetDayToMonday(); 
    public 
    { Public declarations } 
    end; 

var 
    Form1: TForm1; 

implementation 

{$R *.dfm} 

procedure TForm1.SetDayToMonday; 
begin 
    dtp1.DateTime := dtp1.DateTime - DayOfTheWeek(dtp1.DateTime) + 1; 
end; 

procedure TForm1.dtp1CloseUp(Sender: TObject); 
begin 
    SetDayToMonday; 
end; 

end. 

:-) --reinhard

+0

Cela a fonctionné comme un charme, Thx –

2

Utilisez l'événement onUserInput!

+0

Oh, je ne remarqué qui existait. –

0

Je posterais un message au formulaire, définirais un message (WM_USER + 1000 + X), le posterais, et le manipulerais. Si vous ne le faites pas, vous pouvez également faire un PendingDateTimeTimer: TTimer qui effectue une validation légèrement plus tard (disons 10msec) après que l'événement OnChange a défini PendingDateTimeTimer.Enabled: = true.

Questions connexes