捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
 
广告
评论:MonthPanel 公历、农历控件 (源码)
cnsandboy 9424 2004/11/15 14:10:55
对,而且我也想过计算出来的都存到本地文件中,下次直接载入就好了,也不用那么久
nihaoqiang 9422 2004/11/15 12:56:59
显示一个月不用每一天都调用chinesedate函数吧?计算出一个后,其他的在这个基础上应该容易计算了吧,用不了一秒吧?
rocket 883 2003/12/9 13:36:36
謝謝﹗
cnsandboy 858 2003/12/8 22:29:47
unit SandLisaCalenderFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, uMonthPanel, Buttons, Menus, WAppExt, AppEvnts,DateUtils;

type
  TSandLisaCalender = class(TForm)
    MonthPanel1: TMonthPanel;
    WAppExt1: TWAppExt;
    PopupMenu1: TPopupMenu;
    X1: TMenuItem;
    D1: TMenuItem;
    PopupMenu2: TPopupMenu;
    H1: TMenuItem;
    X2: TMenuItem;
    ApplicationEvents1: TApplicationEvents;
    T1: TMenuItem;
    N1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure X1Click(Sender: TObject);
    procedure D1Click(Sender: TObject);
    procedure WAppExt1TrayDbclick(Sender: TObject);
    procedure H1Click(Sender: TObject);
    procedure MonthPanel1CaptionDBClick(Sender: TObject);
    procedure ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    procedure T1Click(Sender: TObject);
  private
//    procedure WMNCHITTEST(VAR M:TWMNCHITTEST); message wm_nchittest;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  SandLisaCalender: TSandLisaCalender;

implementation
function ExCalcCursorPos(AControl:TControl): TPoint;
begin
  GetCursorPos(Result);
  Result := AControl.ScreenToClient(Result);
end;

{$R *.dfm}

procedure TSandLisaCalender.FormCreate(Sender: TObject);
begin
  MonthPanel1.MonthPanelDate := Now;
  MonthPanel1.Left := 0;
  MonthPanel1.Top := 0;
  Self.Width := MonthPanel1.Width;
  Self.Height := MonthPanel1.Height+14;
end;

procedure TSandLisaCalender.X1Click(Sender: TObject);
begin
  Close;
end;

procedure TSandLisaCalender.D1Click(Sender: TObject);
begin

  Show;
end;

procedure TSandLisaCalender.WAppExt1TrayDbclick(Sender: TObject);
begin

  Show;

end;

procedure TSandLisaCalender.H1Click(Sender: TObject);
begin
  Hide;
end;

procedure TSandLisaCalender.MonthPanel1CaptionDBClick(Sender: TObject);
begin
  Hide;

end;

{
procedure TSandLisaCalender.WMNCHITTEST(var M: TWMNCHITTEST);
begin

end;
}
procedure TSandLisaCalender.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
var
  PPoint:TPoint;
begin
{如果鼠标左键按下的话}
  if Msg.message=WM_LButtonDown then
  begin
  {判断光标是否在用户工作区内}
    if DefWindowProc(Handle,WM_NCHitTest,0,GetMessagePos)=HTClient then
    begin
      {发出鼠标在用户标题栏内被按下的消息}
      PPoint := ExCalcCursorPos(Self);
      if (PPoint.Y < MonthPanel1.MonthCaptionHeight) and (PPoint.X >17) and (PPoint.X<340) then
      begin
        SendMessage(Handle,WM_NCLButtonDown,HTCaption,GetMessagePos);
        Handled := true;
      end;
      {消息处理完毕,窗体不再接受MouseDown及Click事件,如果为false,程序的运行稍微有些不正常。}
    end;
  end;

end;

procedure TSandLisaCalender.T1Click(Sender: TObject);
begin
  (Sender as TMenuItem).Checked := not (Sender as TMenuItem).Checked;
  if (Sender as TMenuItem).Checked then
    Self.FormStyle := fsStayOnTop
  else
    Self.FormStyle := fsNormal;
end;

end.
rocket 833 2003/12/7 8:33:05
有沒有調用的例子程序源碼?
謝謝﹗
flyzerg 771 2003/12/1 21:17:40
真不好意思!但是我确实是将ah_def.inc与MonthPanel.dpk,
                         uMonthPanel.pas,uAHMath.pas
等文件放在一个目录下!但还是出现以上问题......????请问是
什么原因????
cnsandboy 752 2003/12/1 10:30:20
ah_def.inc文件放到dpk目录下,不会有任何问题;
negative_dates_broken:=h>12;
布尔型这样赋值也没有任何问题,主要是编译选项的问题,而编译选项就在ah_def.inc文件中
flyzerg 711 2003/11/27 18:29:49
有了ah_def.inc后,编绎时又出了新的错误!
出现以下错误提示!
1.[Error] uMoon.pas(426): Left side cannot be assigned to
2.[Error] uMoon.pas(430): Left side cannot be assigned to
3.[Error] uMoon.pas(433): Left side cannot be assigned to
4.[Error] uMoon.pas(2788): Left side cannot be assigned to
5.[Error] uMoon.pas(2789): Left side cannot be assigned to
6.[Error] uMoon.pas(2790): Left side cannot be assigned to
7.[Error] uMoon.pas(2791): Left side cannot be assigned to
分别对为:
1. negative_dates_broken:=h>12;  // 好像delphi不扶持这样的语法吧!
2.  calendar_reform_supported:=((d1-d2)=1);
    //是不是calenar_reform_supported 不是boolean类型呀!
3.  julian_calendar_before_1582:=((d1-d2)=2);
4.  julian_offset:=2451544.5-EncodeDate(2000,1,1);
5.   datetime_2000_01_01:=EncodedateCorrect(2000,1,1);
6. datetime_1999_01_01:=EncodedateCorrect(1999,1,1);
7.  datetime_first_lunation:=EncodeDate(1923,1,17);
   
cnsandboy 702 2003/11/27 12:05:10
以下为:ah_def.inc的内容

(*$define iso_latin1 *)
(*@/// Compiler switches for version checks *)
(*$ifdef ver140 *)
  (*$define delphi_6 *)
(*$else *)
  (*$ifdef ver130 *)
    (*$define delphi_5 *)
  (*$else *)
    (*$ifdef ver120 *)
      (*$define delphi_4 *)
    (*$else *)
      (*$ifdef ver110 *)
        (*$define builder_3 *)
      (*$else *)
        (*$ifdef ver100 *)
          (*$define delphi_3 *)
        (*$else *)
          (*$ifdef ver95 *)
            (*$define builder_1 *)
          (*$endif *)
          (*$ifdef ver90 *)
            (*$define delphi_2 *)
          (*$else *)
            (*$ifdef ver80 *)
              (*$define Delphi_1 *)
            (*$else
              (*$define bp_7 *)
            (*$endif *)
          (*$endif *)
        (*$endif *)
      (*$endif *)
    (*$endif *)
  (*$endif *)
(*$endif *)

(*$ifdef delphi_1 *)
  (*$define delphi_ge_1 *)
(*$endif *)
(*$ifdef delphi_2 *)
  (*$define delphi_gt_1 *)
  (*$define delphi_ge_1 *)
  (*$define delphi_ge_2 *)
(*$endif *)
(*$ifdef delphi_3 *)
  (*$define delphi_gt_2 *)
  (*$define delphi_gt_1 *)
  (*$define delphi_ge_1 *)
  (*$define delphi_ge_2 *)
  (*$define delphi_ge_3 *)
(*$endif *)
(*$ifdef delphi_4 *)
  (*$define delphi_gt_3 *)
  (*$define delphi_gt_2 *)
  (*$define delphi_gt_1 *)
  (*$define delphi_ge_1 *)
  (*$define delphi_ge_2 *)
  (*$define delphi_ge_3 *)
  (*$define delphi_ge_4 *)
(*$endif *)
(*$ifdef delphi_5 *)
  (*$define delphi_gt_3 *)
  (*$define delphi_gt_2 *)
  (*$define delphi_gt_1 *)
  (*$define delphi_ge_1 *)
  (*$define delphi_ge_2 *)
  (*$define delphi_ge_3 *)
  (*$define delphi_ge_4 *)
  (*$define delphi_ge_5 *)
(*$endif *)

(*$ifdef delphi_6 *)
  (*$define delphi_gt_4 *)
  (*$define delphi_gt_3 *)
  (*$define delphi_gt_2 *)
  (*$define delphi_gt_1 *)
  (*$define delphi_ge_1 *)
  (*$define delphi_ge_2 *)
  (*$define delphi_ge_3 *)
  (*$define delphi_ge_4 *)
  (*$define delphi_ge_5 *)
  (*$define delphi_ge_6 *)
(*$endif *)

{ shortstring defined  :  use string in VCL methods }
{             undefined:  use ansistring instead    }

(*$ifdef delphi_1 *)
  (*$define shortstring *)
(*$else *)
  { The Delphi2/3 VCL only compiles with huge strings }
  (*$undef shortstring *)
(*$endif *)
(*@\\\*)
flyzerg 675 2003/11/26 13:09:09
你好!安装时出现:
[Fatal Error] uAHMath.pas(3): File not found: 'ah_def.inc'
请问ah_def.inc怎么生成或在哪可以下载!
谢谢!
cnsandboy 612 2003/11/22 18:51:26
这个控件根本不是做日期计算的,你怎么用得起呢?
可以如以下解决:
DaysBetween 返回两个日期间的实际日期差,每天以24小时为单位,用出生日期和系统日期做参数可以返回天数,ABS(Trunc(d1)-Trunc(d2))可以取得天数差值,用第一个函数,2000-11-11 23:59:59 和2000-11-12 00:00:00 返回0,第二个方法返回1。
年份、月份、天数概念太模糊,比如2000-05-1 到 2001-06-30 算1年一个月29天还是1年两个月?根据你自己的想法,只要你确定一种算法,很容易实现的。
chinahth 609 2003/11/22 13:42:24
朋友你好,我用不起你这个,我想请问一下,怎么进行日期的计算啊,如我要计算一个人的年龄,我要的结果是:多少天和多少年多少月多少天?该怎么做呢,我想了很多办法都不可以,能帮我一下吗?最好是你自己通过的
第一页 上一页 下一页 最后页 有 12 条纪录 共1页 1 - 12
 用户名:
 密 码:
自动登陆(30天有效)
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表