Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > календарь TDataTimePicker


Автор: Sharl 20.11.2004, 08:25
На форме имеем две компонента TDateTimePicker и TButton

В DateTimePicker выбран
Код

DateMode := dmComboBox;
Kind := dtkDate;



Как можно при клике на Button открыть и показать встроенный календарь DateTimePicker-а ?

Автор: Alex 20.11.2004, 11:56
Код

procedure TForm1.Button2Click(Sender: TObject);
var
 msg: tagEVENTMSG;
begin
 msg.message:=  WM_LBUTTONDOWN;
 msg.paramL:=DateTimePicker1.Height div 2;
 msg.paramH:= DateTimePicker1.Width - 5;
 msg.hwnd:=DateTimePicker1.Handle;
 DateTimePicker1.DefaultHandler(msg);
end;

Автор: Sharl 20.11.2004, 15:07
Во-первых, спасибо за ответ.
Но есть одно но...
Когда нажимаем на кнопку, далее мышкой передвигаемся на кнопку-стрелку, предназначенную для изменения месяца, но не нажимаем на нее. Почему-то кнопка нажимается сама и листает месяцы.
Такое впечатление, что мишка осталась нажатой.
Если так, то как можно выйти из этого?
Я кстати получл то же самое с помощью

Код


procedure TForm1.Button2Click(Sender: TObject);
begin
 DateTimePicker1.Perform( WM_LBUTTONDOWN, 0,DateTimePicker1.Width-5);
end;






Автор: Alex 20.11.2004, 18:03
Так, вот рабочий код:
Код

var
 Pos: TPoint;
begin
 Pos:= Mouse.CursorPos;
 try
   ShowCursor(False);
   with DateTimePicker1 do begin
     Mouse.CursorPos := ClientToScreen(Point(Width - 10, 10));
     mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
     mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
   end
 finally
   Mouse.CursorPos:= Pos;
   ShowCursor(True)
 end;

Автор: Sharl 20.11.2004, 19:29
Ok.
Решение не только рабочее, но и мне кажется во многом учебное.

Большое спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)