可以变通一下吗,可以使用TQrlable.caption:=formatdatatime();
这样不是也可以吗?

解决方案 »

  1.   

    const CapNum :array[0..31] of String = ('0','一','二','三','四','五','六','七','八','九','十','十一',......,'三十一');var sStr: String;
        sYear,sMonth,sDay: String;
       DateTimeToString(sYear,'YYYY',Date);
       DateTimeToString(sMonth,'MM',Date);
       DateTimeToString(sDay,'DD',Date);
       sStr := CapNum[StrToInt(sYear[0])]+CapNum[StrToInt(sYear[1])]+
               CapNum[StrToInt(sYear[2])]+CapNum[StrToInt(sYear[3])]+ '年'+
               CapNum[StrToInt(sMonth)]+'月'+
               CapNum[StrToInt(sDay)]+'日';  
       
       
      

  2.   

    function CDate(Date:TDateTime):String;
    var y,m,d:Word;
        s:String;  function CDigital(I:Integer):String;
      begin
        Case i of
        0:Result:='○';
        1:Result:='一';
        2:Result:='二';
        3:Result:='三';
        4:Result:='四';
        5:Result:='五';
        6:Result:='六';
        7:Result:='七';
        8:Result:='八';
        9:Result:='九';
        10:Result:='十';
        end;
      end;begin
      DecodeDate(Date,y,m,d);
      s:=CDigital(y div 1000);
      y:=y mod 1000;
      s:=s+CDigital(y div 100);
      y:=y mod 100;
      s:=s+CDigital(y div 10);
      y:=y mod 10;
      s:=s+CDigital(y)+'年';
      if m>10 then
        s:=s+'十'+CDigital(m mod 10)+'月'
      else
        s:=s+CDigital(m)+'月';
      if (d>10) and (d<20) then
        s:=s+'十'+CDigital(d mod 10)
      else if (d>20) and (d<>30) then
        s:=s+CDigital(d div 10)+'十'+CDigital(d mod 10)
      else if (d=20) or (d=30) then
        s:=s+CDigital(d div 10)+'十'
      else
        s:=s+CDigital(d);
      s:=s+'日';
      Result:=s;
    end;