当用户在我的TDateTimePicker中选择一个值时,我想将要设置的值覆盖到与所选值一起的周开始。
我尝试在OnChange事件中设置它,但是在完成事件后,将立即设置最初选择的值。
我该怎么做?
答案 0 :(得分:2)
使用onUserInput事件!
答案 1 :(得分:2)
使用“ONCloseUp”事件 - 此示例适用于我(Delphi 7,WinXP)
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: - )
答案 2 :(得分:0)
我会在表单中发布消息,定义消息(WM_USER + 1000 + X),发布消息并处理它。如果你不像这样“挂”它,你也可以做一个PendingDateTimeTimer:在OnChange事件设置PendingDateTimeTimer.Enabled:= true之后稍稍稍后(例如10毫秒)进行验证的TTimer。