當用戶在我的TDateTimePicker中選擇一個值時,我想將要設置的值覆蓋到與選定值一起的星期開始處。當用戶選擇日期時,更正datetimepicker上的值
我試着在OnChange事件中設置它,但是當我完成事件後,最初的選定值將被設置。
我該怎麼辦?
當用戶在我的TDateTimePicker中選擇一個值時,我想將要設置的值覆蓋到與選定值一起的星期開始處。當用戶選擇日期時,更正datetimepicker上的值
我試着在OnChange事件中設置它,但是當我完成事件後,最初的選定值將被設置。
我該怎麼辦?
使用 「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 :-)
使用onUserInput事件!
哦,我從來沒有注意到存在。 – 2010-02-10 16:22:11
我會發布一條消息到表單,定義一條消息(WM_USER + 1000 + X),發佈並處理它。如果你沒有像這樣「掛鉤」,你也可以做一個PendingDateTimeTimer:在OnChange事件設置PendingDateTimeTimer.Enabled:= true後稍微做驗證(比如10毫秒)的TTimer。
這就像一個魅力,Thx – 2010-02-11 08:05:14