WEB开发网      濠电娀娼ч崐濠氬疾椤愶附鍋熸い鏍ㄧ〒闂勫嫰鏌﹀Ο渚Ц闁诲氦顕ч湁婵犲﹤楠告禍鍓х磼鏉堛劌绗氶柟宄版嚇閹晠宕归銈嗘濠电偞鍨堕幐鎾磻閹捐秮褰掓偐閻戞﹩妫勯梺鎼炲妼鐎涒晝绮嬪澶樻晝闁挎繂鏌婇敃鍌涚厵閻庢稒锚閻忥絾绻濇繝鍐ㄧ伌闁诡垰鍟村畷鐔碱敂閸♀晙绱樺┑鐐差嚟婵儳螞閸曨剚鍙忛柍鍝勬噹缁€澶嬬箾閹存繄锛嶆鐐灲閹綊宕惰濡插鏌涢妸銉ヮ劉缂佸倸绉归弫鎾绘晸閿燂拷 ---闂備焦瀵уú鈺呭箯閿燂拷
开发学院软件开发Delphi 判断MonthCalander中鼠标点中了日期还是翻页按钮!... 阅读

判断MonthCalander中鼠标点中了日期还是翻页按钮!

 2006-02-04 13:49:16 来源:WEB开发网 闂備線娼уΛ鎾箯閿燂拷闂備礁鎲¢崹鐢垫崲閹扮増鍎嶆い鎺戝€甸崑鎾斥槈濞嗗秳娌紓鍌氱▌閹凤拷濠电姭鎷冮崨顓濈捕闂侀潧娲ゅú銊╁焵椤掍胶鈯曢柕鍥╁仧缁辩偤鏁撻敓锟�闂備線娼уΛ鎾箯閿燂拷  闂備胶枪缁绘鈻嶉弴銏犳瀬闁绘劕鎼痪褔鏌曟繝蹇曠窗闁煎壊浜滈—鍐偓锝庡墮娴犙勭箾閸喎鐏ユい鏇樺劦椤㈡瑩鎮℃惔銇帮拷
核心提示:uses CommCtrl;var OldWindowPRoc: TWndMethod;procedure TForm1.MyWindowProc(var Msg: TMessage);begin if Msg.Msg = CN_NOTIFY then begin case TWMNotify(msg).NMHd

uses CommCtrl;

var OldWindowPRoc: TWndMethod;

procedure TForm1.MyWindowProc(var Msg: TMessage);
begin
  if Msg.Msg = CN_NOTIFY then
  begin
   case TWMNotify(msg).NMHdr.code of
    MCN_GETDAYSTATE: Memo1.Lines.Add('MCN_GETDAYSTATE');//點了翻页
    MCN_SELECT, MCN_SELCHANGE: Memo1.Lines.Add('MCN_SELECT, MCN_SELCHANGE');//選中日期
   end;
  end;

  OldWindowProc(Msg);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  OldWindowProc := MonthCalendar1.WindowProc;
  MonthCalendar1.WindowProc := MyWindowProc;
end;

549的問題, 吃完飯看了下VCL的源碼, 應該可以! 不過, 點了翻页按鈕也會觸發日期選中的消息的, 相反則不會!

同時還看到一個:

发布TDateTimePicker同时修改日期和时间的解决方案

type
  TCDateTimePicker = class(TDateTimePicker)
  private
   procedure CNNotify(var Message: TWMNotify); message CN_NOTIFY;
  end;

function IsBlankSysTime(const ST: TSystemTime): Boolean;
type
  TFast = array[0..3] of DWord;
begin
  Result := (TFast(ST)[0] or TFast(ST)[1] or TFast(ST)[2] or TFast(ST)[3]) = 0;
end;

procedure TCDateTimePicker.CNNotify(var Message: TWMNotify);
begin
  with Message, NMHdr^ do
  begin
   Result := 0;
   if (code = DTN_DATETIMECHANGE) and
    (PNMDateTimeChange(NMHdr)^.dwFlags = GDT_VALID) and (not DroppedDown) and
    (not (ShowCheckBox and IsBlankSysTime(PNMDateTimeChange(NMHdr)^.st))) then
    DateTime := SystemTimeToDateTime(PNMDateTimeChange(NMHdr)^.st);
  end;
  inherited;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  with TCDateTimePicker.Create(self) do
  begin
   Left := 100;
   Top := 100;
   Parent := Self;
   Format := 'yyyy-MM-dd hh:mm:ss';
   Visible := true;
  end;
end;

可以按上下鍵直接修改, 不錯! 不過要改到可以下拉面板也有時間選擇, 可能難一點!

btw: kylix 又說有新的clx要發布, 有點亂, 不是說停止開發了嗎?? 還有BCB, BCBX的新聞也有點亂, 是borland自己的產品定位還不清, 還是只不過傳言有誤??

Tags:判断 MonthCalander 鼠标

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接