取出日期值,比如19990602,转换为格式1999-6-2,再用StrToDate函数转换成日期值,赋值给MonthCalendar1的Date属性即可,不知楼上的妹妹有何不解之处?

解决方案 »

  1.   

    请注意,比如MonthCalendar1显示的是1999年 6月,那么就要求把19990602,19990601,19990608这些不连续的日期显示出来。谢谢!
      

  2.   

    在TMonthCalendar的OnGetMonthInfo事件中写如下代码,
    可粗显1,3,5三天,不过这种方法还是不理想。MonthCalendar1.BoldDays([1, 3, 5], MonthBoldInfo);
      

  3.   

    那和lin.db结合起来,该怎样呢?结合了lin.db后,[1, 3, 5]参数该如何写?
    还有,那种方法比较理想?
    或者是第三方控件?能否举个例子,谢谢。
    我做的股票分析,就被卡在这里,非常非常感谢!!!!
      

  4.   

    a为全局变量,a: array of Longword;procedure TForm1.Button1Click(Sender: TObject);
    var
      MonthBoldInfo: Cardinal;
    begin
      SetLength(a, 3);
      a[0] := 1;
      a[1] := 6;
      a[2] := 8;
      MonthCalendar1.BoldDays(a, MonthBoldInfo);
    //这里可加一段代码,改变一下MonthCalendar的月份,再该回来,要不然不会刷新;
    end;如果用TMontCalendar控件,暂时还没有更好的方法,
    有没有这类第三方控件,我就不清楚了,因为我几乎不用第三方控件。
      

  5.   

    在Delphi的Samples中有一个TCalendar的控件,
    有源代码,稍微改一下就可以了,你可用它。
      

  6.   

    设days:array[0..25] of word;如何利用MonthCalendar1.BoldDays方法,将这26个日期用粗体显示?以下这个办法不好使啊,
    for i:=0 to 25 do
    MonthCalendar1.BoldDays(day[i], MonthBoldInfo);//TCalendar控件,功能不够,显示不了年日。
      

  7.   

    非常谢谢你,prometheusphinx,以上的问题我已经解决了,最后问你一个问题,那些用粗体表示的日期,能否对它们着上颜色(对我的程序很重要!)?否者,看不清楚。
      

  8.   

    用TMonthCalender和TCalender结合吧,
    在TMonthCalender上面放一个TCalender盖住它的日期部份(也就是中间那一部份),
    但TCalender的源代码要改一改,主要是改一下它的DrawCell那一部份。
    另外在TMonthCalender的OnGetMonthInfo事件中要写一点代码:
    var
      y, m, d: word;
    begin
      DecodeDate(MonthCalendar1.Date, y, m, d);
      Calendar1.Year := y;
      Calendar1.Month := m;
      Calendar1.Day := d;
    end;
      

  9.   

    在TMonthCalender的OnGetMonthInfo事件中,第一次用DecodeDate(MonthCalendar1.Date, y, m, d);得到的month是当前的月份,可是,改变到下一个月份的时候,再用DecodeDate(MonthCalendar1.Date, y, m, d);
    得到的月份就不是当前的月份,你昨天说的‘’这里可加一段代码,改变一下MonthCalendar的月份,再该回来,要不然不会刷新;“该如何实现刷新?
    还有:
    procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject;
      Month: Cardinal; var MonthBoldInfo: Cardinal);在这个过程中,得到的参数month的值怎么会不是当前月份的值呢?
      

  10.   

    请看下面的程序:
    1:
    var
    monthboldinfo:Cardinal;
    procedure TForm1.MonthCalendar1Click(Sender: TObject);
    begin
     MonthCalendar1.BoldDays([1,4],monthboldinfo);
    end;
    这样的话,粗体得不到显示,是不是说明MonthCalendar1.BoldDays方法,必须用在TForm1.MonthCalendar1GetMonthInfo事件中?如果可以,请具体说明方法。2:
    form1上放有MonthCalendar1,edit1,代码如下:
    y,m,d:word;
    procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject;
      Month: Cardinal; var MonthBoldInfo: Cardinal);
    begin
    decodedate(MonthCalendar1.date,y,m,d);
    edit1.text:=inttostr(m);
    end;
    当点击日历指向下一个月份的时候,为什么在edit1.text中,没有办法正确反映月份的值?月份的值都比当前月份少一。如何改正?
    一定一定加分!!
      

  11.   

    刷新可用以下方法:procedure TForm1.Button2Click(Sender: TObject);
    var
      MonthBoldInfo: Cardinal;
      y, m, d: Word;
    begin
      SetLength(a, 3);
      a[0] := 1;
      a[1] := 6;
      a[2] := 8;
      MonthCalendar1.BoldDays(a, MonthBoldInfo);
      DecodeDate(MonthCalendar1.Date, y, m, d);
      if m < 12 then
        MonthCalendar1.Date := EncodeDate(y, m + 1, d)
      else
        MonthCalendar1.Date := EncodeDate(y, m - 1, d)
      MonthCalendar1.Date := EncodeDate(y, m, d);
    end;取正确月份应该这样:procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject;
      Month: Cardinal; var MonthBoldInfo: Cardinal);
    begin
      if Month = 1 then
        Month := 12
      else
        Dec(Month);
      Edit1.Text := IntToStr(Month);
    end;