• 使用 IntraWeb (22)



    TIWCalendar: 日历控件, 继承于 TIWCustomGrid, 所以它和 TIWGrid 共同属性特多.

    它的 Cell 是 TIWCalendarCell 对象, 直接从 TIWGridCell 继承.

    TIWCalendar 所在单元及继承链:
    IWCompCalendar.TIWCalendar < TIWCustomGrid < TIWCustomControl < TIWBaseHTMLControl < TIWBaseControl < TIWVCLBaseControl < TControl < TComponent < TPersistent < TObject

    主要成员:
    property Cell[const ARow: Integer, const AColumn: Integer]: TIWCalendarCell //
    property CurrentDayImage: TIWFileReference    //显示在当前日期的图片
    property CaptionToday: string                 //当前日期的附加标题
    property PreviousMonthImage: TIWFileReference //"后退"图片
    property NextMonthImage: TIWFileReference     //"前进"图片
    property CaptionPrevious: string          //"后退"标题
    property CaptionNext: string              //"前进"标题
    property CalendarHeaderColor: TIWColor    //标题背景色
    property CalendarColor: TIWColor          //背景色
    property AlternateCalendarColor: TIWColor //用于交替的背景色
    property CheckerBoard: Boolean            //是否使用交替背景
    property CalendarHeaderFont: TIWFont  //标题字体
    property CalendarFont: TIWFont        //字体
    property StartDate: TDateTime         //默认当前日期
    property SelectedDate: TDateTime      //就是刚刚点过的日期
    property DisplayYear: Boolean         //是否显示"年"
    property LocaleID: Integer                 //本地语言 ID
    
    property CellRenderOptions: TIWCellRenderOptions //
    property BorderColors: TIWGridBorderColors //
    property BGColor: TIWColor                 //
    property BorderSize: Integer               //
    property BorderStyle: TIWGridBorderStyle   //
    property Caption: TCaption     //
    property CellPadding: Integer  //          
    property CellSpacing: Integer  //
    property Font: TIWFont         //
    property Lines: TIWGridLines   //
    property Summary: string       //
    property UseFrame: Boolean     //
    property UseSize: Boolean      //
    property HiddenColumns: TStringList //
    
    property OnDateChange: TIWCalendarDateChange     //
    property OnGetDateInformation: TIWCalendarGetDateInformation  //
    property OnGetDayNames: TIWCalendarGetDayNames   //
    property OnGetMonthName: TIWCalendarGetMonthName //
    property OnRenderCell: TIWOnRenderCell           //
    property OnRender: TNotifyEvent                  //
    property OnGetCellRenderOptions: TIWGetCellRenderOptionsEvent //
    
    procedure SetHeaderCells;                                          //
    function IsRowVisible(ARow: Integer): Boolean                      //
    procedure SetColumnVisibility(AColumn: Integer; AVisible: Boolean) //
    


    TIWCalendarCell:

    {IWCompCalendar.TIWCalendarCell < TIWGridCell < TCollectionItem < TPersistent < TObject}
    
    property CellDate: TDateTime          //
    property DateInformation: TStringList //与日期关联的备注信息
    property ImageFile: TIWImageFile      //看来每个 Cell 都可以使用图像; 这应该是为当前日期准备的
    
    {还包括和 TIWGridCell 相同的一些}
    


    改控件拖到窗体上就能用, 如果要写一行代码的话应该是: IWCalendar1.StartDate := Date;

    下面是个比较全面的测试:
    var
      gInfoList: TStrings; //用于记录自定义的备忘信息
    
    procedure TIWForm1.IWAppFormCreate(Sender: TObject);
    begin
      gInfoList := TStringList.Create; //如果是长期保存, 它应该是从服务器上读取某个文件
    
      IWCalendar1.Caption := '';           //标题无用
      IWCalendar1.CaptionPrevious := '<<'; //其实给它图像(PreviousMonthImage)更好看
      IWCalendar1.CaptionNext := '>>';
    
      IWCalendar1.CalendarHeaderColor := $88aaaa;
    
      IWCalendar1.CalendarColor := $eeffff;
      IWCalendar1.AlternateCalendarColor := $ccdddd; //交替颜色
      IWCalendar1.CheckerBoard := True;              //确认使用指定的 "交替颜色" 与背景色交替使用
    
      IWCalendar1.CalendarFont.Size := 12;
      LinkColor := $0033dd; //Cell 中的文本其实成了链接了, 如果要改变 Cell 中文本的显示, 最好使用 Css
    
      IWCalendar1.CaptionToday := '★'; //突出标示当前日期, 或使用图像(CurrentDayImage)
    
      IWCalendar1.StartDate := Date; //显然使用 Date 比 Now 更合理; 这句还能起到刷新的作用
    end;
    
    {通过 OnGetDayNames 事件调整周标题显示}
    procedure TIWForm1.IWCalendar1GetDayNames(var Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday: string);
    begin
      Sunday := '周末';
    end;
    
    {通过 OnGetMonthName 事件调整月份显示}
    procedure TIWForm1.IWCalendar1GetMonthName(MonthNumber: Integer; var MonthName: string);
    begin
      MonthName := MonthNumber.ToString + '月';
    end;
    
    {通过 OnRenderCell 事件调整更多显示细节}
    procedure TIWForm1.IWCalendar1RenderCell(ACell: TIWGridCell; const ARow, AColumn: Integer);
    begin
      {让当前选定的日期在字号上有所区别}
      if TIWCalendarCell(ACell).CellDate = TIWCalendar(ACell.Grid).SelectedDate then
        ACell.Font.Size := 14
      else
        ACell.Font.Size := ACell.Grid.Font.Size;
    
      {ARow = 0 是最上面一行, 也就是带月导航的那行}
      if ARow = 0 then ACell.Font.Size := 13;
      {Arow = 1 是周标题}
      if ARow = 1 then ACell.Height := '20'; //Height 是 字符串在 Html 中不难理解
    end;
    
    {添加和日期关联的备注信息}
    procedure TIWForm1.IWButton1AsyncClick(Sender: TObject; EventParams: TStringList);
    begin
      gInfoList.Values[FormatDateTime('ddmmyyyy', IWCalendar1.SelectedDate)] := IWMemo1.Text;
    end;
    
    {选择不同日期时再取回备注信息}
    procedure TIWForm1.IWCalendar1DateChange(ADate: TDateTime);
    begin
      IWMemo1.Text := gInfoList.Values[FormatDateTime('ddmmyyyy', ADate)];
    end;
    
    {通过切换月份, 可以看到刚添加的与日期关联的备注信息}
    procedure TIWForm1.IWCalendar1GetDateInformation(ADate: TDateTime; VInformation: TStrings);
    begin
      VInformation.Text := gInfoList.Values[FormatDateTime('ddmmyyyy', ADate)];
    end;
    
    procedure TIWForm1.IWAppFormDestroy(Sender: TObject);
    begin
      gInfoList.Free;
    end;
    


    效果图:


  • 相关阅读:
    无标题
    UVA 11987 并查集删点
    屯题 (bestcoder #62~#75)
    codeforces 293E Close Vertices 点分治+滑窗+treap
    hdu4670 Cube number on a tree 点分治
    hdu4812 D Tree 点分治
    poj2112 Boatherds 点分治
    HDU 4866 Shooting 二分+主席树
    poj1741 Tree 点分治
    关于点分治。。。
  • 原文地址:https://www.cnblogs.com/del/p/3793395.html
Copyright © 2020-2023  润新知