请教:如何设置datetimepicker从星期一开始?

fox600123 2013-03-18 01:15:38



如图,
左边的为 MonthCalendar,可通过属性 FirstDayOfWeek:=dowMonday;设置从星期一开始
右边的是展开的 DateTimePicker,不知何故DateTimePicker并没有把FirstDayOfWeek属性继承下来,所以没法设置,我曾尝试 在type里增加
Type
Tmydatetimepicker = class (TDateTimePicker);

或者
Type
Tmydatetimepicker = class (TCommonCalendar);

然后再调用
procedure TForm1.FormCreate(Sender: TObject);
begin
Tmydatetimepicker(DateTimePicker1 ).FirstDayOfWeek:=dowMonday;
end;

编译通过,但实际上并不起作用,DateTimePicker仍然是从星期日开始~请大牛们指点,谢谢!
...全文
830 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fox600123 2013-03-18
  • 打赏
  • 举报
回复
呵呵,问题完美解决,谢谢~

sololie 2013-03-18
  • 打赏
  • 举报
回复
引用 4 楼 sololie 的回复:
Delphi/Pascal code?123456// 可以再简化点,一句写完procedure TForm1.dtp1DropDown(Sender: TObject);begin SendMessage(SendMessage(dtp1DropDown.Handle, $1000 + 8, 0, 0), $1000 + 15, 0, 1) // 最后的参……

  SendMessage(SendMessage(dtp1.Handle, $1000 + 8, 0, 0),
          $1000 + 15, 0, Ord(dowMonday))
// 或
  SendMessage(SendMessage(dtp1.Handle, $1000 + 8, 0, 0),
    $1000 + 15, 0, 0)
sololie 2013-03-18
  • 打赏
  • 举报
回复
高个P,都是初学者,这些方法都可以在源码里找到。 sendmessage的第一个参数是datetimepicker的handle,贴了两次代码都写错了。
fox600123 2013-03-18
  • 打赏
  • 举报
回复
引用 4 楼 sololie 的回复:
Delphi/Pascal code?123456// 可以再简化点,一句写完procedure TForm1.dtp1DropDown(Sender: TObject);begin SendMessage(SendMessage(dtp1DropDown.Handle, $1000 + 8, 0, 0), $1000 + 15, 0, 1) // 最后的参……
您水平这么高,想象不出您是怎么学习的?呵呵~
fox600123 2013-03-18
  • 打赏
  • 举报
回复
引用 3 楼 sololie 的回复:
Delphi/Pascal code?123456789101112// 最简单的方法就是在 DateTimePicker 的 DropDown 事件中处理相应的消息即可 procedure TForm1.DateTimePicker1DropDown(Sender: TObject);var DOWFlag: Integer; hmw: HWND;begin DO……
您太强悍了,再次感谢~~
sololie 2013-03-18
  • 打赏
  • 举报
回复

// 可以再简化点,一句写完
procedure TForm1.dtp1DropDown(Sender: TObject);
begin
  SendMessage(SendMessage(dtp1DropDown.Handle, $1000 + 8, 0, 0),
      $1000 + 15, 0, 1)  // 最后的参数 1 即 dowMonday
end;
sololie 2013-03-18
  • 打赏
  • 举报
回复

// 最简单的方法就是在 DateTimePicker 的 DropDown 事件中处理相应的消息即可

procedure TForm1.DateTimePicker1DropDown(Sender: TObject);
var
  DOWFlag: Integer;
  hmw: HWND;
begin
  DOWFlag := ord(dowMonday);
  hmw := SendMessage(dtp1.Handle, $1000 + 8, 0, 0);
  if hmw > 0 then
    SendMessage(hmw, $1000 + 15, 0, DOWFlag)
end;

fox600123 2013-03-18
  • 打赏
  • 举报
回复
以前我看过一个汉化DBnavigator的范例,就是用这种方法,我也试过可行,但到这里就不起作用了,可能是情况不一样吧
UnkownState 2013-03-18
  • 打赏
  • 举报
回复
不同的控件,不能这样强制转换

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧