Исправьте значение в datetimepicker, когда пользователь выбирает дату - PullRequest
1 голос
/ 10 февраля 2010

Когда пользователь выбирает значение в моем TDateTimePicker, я хочу переопределить устанавливаемое значение на начало недели, которая идет с выбранным значением.

Я попытался установить его в событии OnChange, но затем первоначально выбранное значение будет установлено сразу после завершения события.

Как бы я поступил об этом?

Ответы [ 3 ]

2 голосов
/ 10 февраля 2010

используйте событие "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.

- в порядке: -)

2 голосов
/ 10 февраля 2010

Используйте событие onUserInput!

0 голосов
/ 10 февраля 2010

Я бы отправил сообщение в форму, определил сообщение (WM_USER + 1000 + X), опубликовал его и обработал. Если вы не «ожидаете» этого так, вы можете также сделать PendingDateTimeTimer: TTimer, который выполняет проверку чуть позже (скажем, 10 мс) после того, как событие OnChange установит PendingDateTimeTimer.Enabled: = true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...