使用 IntraWeb (22) - 基本控件之 TIWCalendar

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

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


TIWCalendar 所在单元及继承链:
IWCompCalendar.TIWCalendar

主要成员:


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

改控件拖到窗体上就能用, 如果要写一行代码的话应该是: IWCalendar1.StartDate := Date; 下面是个比较全面的测试:
var
  gInfoList: TStrings; //用于记录自定义的备忘信息

procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  gInfoList := TStringList.Create; //如果是长期保存, 它应该是从服务器上读取某个文件

  IWCalendar1.Caption := ‘‘;           //标题无用
  IWCalendar1.CaptionPrevious := ‘>‘;

  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;

效果图:


使用 IntraWeb (22) - 基本控件之 TIWCalendar,布布扣,bubuko.com

时间: 2024-10-05 23:58:31

使用 IntraWeb (22) - 基本控件之 TIWCalendar的相关文章

使用 IntraWeb (28) - 基本控件之 TIWTemplateProcessorHTML、TIWLayoutMgrHTML、TIWLayoutMgrForm

TIWTemplateProcessorHTML //使用外部的 html 文件做模板 TIWLayoutMgrHTML //直接输入 Html 文本做模板 TIWLayoutMgrForm //这应该只是内部使用的东西, 对用户没有意义 {需要把它们关联到窗体的 LayoutMgr 属性; 主模板需要通过 IWServerController.MasterTemplate 指定} TIWTemplateProcessorHTML 所在单元及继承链: IWTemplateProcessorHTM

使用 IntraWeb (26) - 基本控件之 TIWMenu

TIWMenu 的任务是让原来的 TMainMenu 呈现在网页上, 通过其 AttachedMenu 属性关联一个 TMainMenu 是必需的. TIWMenu 所在单元及继承链: IWCompMenu.TIWMenu 主要成员: property TextOffset: Integer //菜单文本偏移(只读) property AttachedMenu: TMainMenu //指定要包装的 TMainMenu property ItemSpacing: TIWSpaceItems //

使用 IntraWeb (13) - 基本控件之 TIWLabel、TIWLink、TIWURL、TIWURLWindow

TIWLabel    // TIWLink      //内部链接 TIWURL      //外部链接 TIWURLWindow //页内框架, 就是 <iframe></iframe> TIWLabel 所在单元及继承链:IWCompLabel.TIWLabel < TIWCustomLabel < TIWCustomControl < TIWBaseHTMLControl < TIWBaseControl < TIWVCLBaseControl

使用 IntraWeb (16) - 基本控件之 TIWList、TIWListbox、TIWComboBox、TIWOrderedListbox

TIWList //列表; 它对应 Html 中的 OL.LI(某些选项下会用表格模拟); TIWListbox 和 TIWComboBox 则对应 Html 在的 Option TIWListbox //列表框 TIWComboBox //组合下拉框 TIWOrderedListbox //可手动调整顺序的列表; 好像是新增的, 还不成熟 TIWList 所在单元及继承链: IWHTMLControls.TIWList 主要成员: property Items: TStringList //

使用 IntraWeb (23) - 基本控件之 TIWTimer、TIWProgressBar、TIWProgressIndicator、TIWTimeEdit

TIWTimer //和 TTimer 没多大区别, 它的默认事件现在是异步的(OnAsyncTimer), 在网络上使用 OnTimer 肯定是非常糟糕的 TIWProgressBar //进度条 TIWProgressIndicator //进度提示器; 这是个新东西, 非常好; 当碰到时间较长的加载时(同步或异步)都可以用用; 使用前需要先关联到窗体的 ProgressIndicator 属性 TIWTimeEdit //个人认为这个东西一点用也没有; 只是给个分钟数按 8 小时换算成天.

使用 IntraWeb (17) - 基本控件之 TIWRadioButton、TIWRadioGroup、TIWCheckBox

TIWRadioButton //单选 TIWRadioGroup //单选组 TIWCheckBox //复选 TIWRadioButton 所在单元及继承链: IWCompRadioButton.TIWRadioButton 主要成员: property Editable: Boolean // property Checked: Boolean // property Group: string //分组名; 在统一母体中的单选按钮, 组名相同者互斥 property Value: str

使用 IntraWeb (25) - 基本控件之 TIWRegion

这应该是 IW 中最重要的容器了, 和它同父的还有 TIWTabControl TIWRegion 所在单元及继承链: IWRegion.TIWRegion 主要成员: property Align: TAlign property Anchors: TAnchors property BorderOptions: TIWContainerBorderOptions //设置边框的宽度.颜色.样式 property Color: TIWColor property ClipRegion: Boo

使用 IntraWeb (21) - 基本控件之 TIWTabControl

TIWTabControl 包含的是 TIWTabPage; 设计时通过右键菜单 Add Page 添加(再给页面添加东西时一定要先选定页面); 下面例子是动态添加的. TIWTabControl 所在单元及继承链: IWCompTabControl.TIWTabControl 主要成员: property Pages: TList //TIWTabPage 对象的集合; 但它是 TList 类型, 使用前需转换下 property ActiveTabFont: TIWFont //当前 Tab

使用 IntraWeb (29) - 基本控件之 TIWAutherList、TIWAutherINI、TIWAutherEvent

TIWAutherList //通过一组户名与密码验证登陆 TIWAutherINI //通过记录户名与密码信息的 #Auth.ini 文件验证登陆 TIWAutherEvent //通过其 OnCheck 事件验证登陆 {作为站点级的验证, 验证控件应该是放在 ServerController 的窗体上, 并与其 Auther 属性关联.} TIWAutherList 所在单元及继承链: IWAutherList.TIWAutherList 主要成员: property List: TStri