亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? monthcal.pas

?? 很COOL的GRID表格控件
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
{*******************************************************}
{                                                       }
{                       EhLib v1.56                     }
{                TMonthCalendar component               }
{                                                       }
{           Part of ComCtrls unit from Delphi 4         }
{                                                       }
{*******************************************************}

unit MonthCal;

interface

uses Messages, Windows, SysUtils, CommCtrl, Classes, Controls, Forms,
  Menus, Graphics, StdCtrls, RichEdit, ToolWin;

resourcestring
  sDateTimeMax = 'Date exceeds maximum of %s';
  sDateTimeMin = 'Date is less than minimum of %s';
  sNeedAllowNone = 'You must be in ShowCheckbox mode to set to this date';
  sFailSetCalDateTime = 'Failed to set calendar date or time';
  sFailSetCalMaxSelRange = 'Failed to set maximum selection range';
  sFailSetCalMinMaxRange = 'Failed to set calendar min/max range';
  sCalRangeNeedsMultiSelect = 'Date range can only be used in multiselect mode';
  sFailsetCalSelRange = 'Failed to set calendar selected range';
  sInvalidComCtl32 = 'This control requires version 4.70 or greater of COMCTL32.DLL';  

type
{ Calendar common control support }

  TCommonCalendar = class;

  ECommonCalendarError = class(Exception);

  TMonthCalColors = class(TPersistent)
  private
    Owner: TCommonCalendar;
    FBackColor: TColor;
    FTextColor: TColor;
    FTitleBackColor: TColor;
    FTitleTextColor: TColor;
    FMonthBackColor: TColor;
    FTrailingTextColor: TColor;
    procedure SetColor(Index: Integer; Value: TColor);
    procedure SetAllColors;
  public
    constructor Create(AOwner: TCommonCalendar);
    procedure Assign(Source: TPersistent); override;
  published
    property BackColor: TColor index 0 read FBackColor write SetColor default clWindow;
    property TextColor: TColor index 1 read FTextColor write SetColor default clWindowText;
    property TitleBackColor: TColor index 2 read FTitleBackColor write SetColor default clActiveCaption;
    property TitleTextColor: TColor index 3 read FTitleTextColor write SetColor default clWhite;
    property MonthBackColor: TColor index 4 read FMonthBackColor write SetColor default clWhite;
    property TrailingTextColor: TColor index 5 read FTrailingTextColor
      write SetColor default clInactiveCaptionText;
  end;

  TCalDayOfWeek = (dowMonday, dowTuesday, dowWednesday, dowThursday,
    dowFriday, dowSaturday, dowSunday, dowLocaleDefault);

  TOnGetMonthInfoEvent = procedure(Sender: TObject; Month: DWORD;
    var MonthBoldInfo: DWORD) of object;

  TDateTimeColors = TMonthCalColors;  // for backward compatibility

  TCommonCalendar = class(TWinControl)
  private
    FCalColors: TMonthCalColors;
    FCalExceptionClass: ExceptClass;
    FDateTime: TDateTime;
    FEndDate: TDate;
    FFirstDayOfWeek: TCalDayOfWeek;
    FMaxDate: TDate;
    FMaxSelectRange: Integer;
    FMinDate: TDate;
    FMonthDelta: Integer;
    FMultiSelect: Boolean;
    FShowToday: Boolean;
    FShowTodayCircle: Boolean;
    FWeekNumbers: Boolean;
    FOnGetMonthInfo: TOnGetMonthInfoEvent;
    function DoStoreEndDate: Boolean;
    function DoStoreMaxDate: Boolean;
    function DoStoreMinDate: Boolean;
    function GetDate: TDate;
    procedure SetCalColors(Value: TMonthCalColors);
    procedure SetDate(Value: TDate);
    procedure SetDateTime(Value: TDateTime);
    procedure SetEndDate(Value: TDate);
    procedure SetFirstDayOfWeek(Value: TCalDayOfWeek);
    procedure SetMaxDate(Value: TDate);
    procedure SetMaxSelectRange(Value: Integer);
    procedure SetMinDate(Value: TDate);
    procedure SetMonthDelta(Value: Integer);
    procedure SetMultiSelect(Value: Boolean);
    procedure SetRange(MinVal, MaxVal: TDate);
    procedure SetSelectedRange(Date, EndDate: TDate);
    procedure SetShowToday(Value: Boolean);
    procedure SetShowTodayCircle(Value: Boolean);
    procedure SetWeekNumbers(Value: Boolean);
  protected
    procedure CheckEmptyDate; virtual;
    procedure CheckValidDate(Value: TDate); virtual;
    procedure CreateWnd; override;
    function GetCalendarHandle: HWND; virtual; abstract;
    function GetCalStyles: DWORD; virtual;
    function MsgSetCalColors(ColorIndex: Integer; ColorValue: TColor): Boolean; virtual; abstract;
    function MsgSetDateTime(Value: TSystemTime): Boolean; virtual; abstract;
    function MsgSetRange(Flags: Integer; SysTime: PSystemTime): Boolean; virtual; abstract;
    property CalColors: TMonthCalColors read FCalColors write SetCalColors;
    property CalendarHandle: HWND read GetCalendarHandle;
    property CalExceptionClass: ExceptClass read FCalExceptionClass write FCalExceptionClass;
    property Date: TDate read GetDate write SetDate;
    property DateTime: TDateTime read FDateTime write SetDateTime;
    property EndDate: TDate read FEndDate write SetEndDate stored DoStoreEndDate;
    property FirstDayOfWeek: TCalDayOfWeek read FFirstDayOfWeek write SetFirstDayOfWeek
      default dowLocaleDefault;
    property MaxDate: TDate read FMaxDate write SetMaxDate stored DoStoreMaxDate;
    property MaxSelectRange: Integer read FMaxSelectRange write SetMaxSelectRange default 31;
    property MinDate: TDate read FMinDate write SetMinDate stored DoStoreMinDate;
    property MonthDelta: Integer read FMonthDelta write SetMonthDelta default 1;
    property MultiSelect: Boolean read FMultiSelect write SetMultiSelect default False;
    property ShowToday: Boolean read FShowToday write SetShowToday default True;
    property ShowTodayCircle: Boolean read FShowTodayCircle write
      SetShowTodayCircle default True;
    property WeekNumbers: Boolean read FWeekNumbers write SetWeekNumbers default False;
    property OnGetMonthInfo: TOnGetMonthInfoEvent read FOnGetMonthInfo write FOnGetMonthInfo;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure BoldDays(Days: array of DWORD; var MonthBoldInfo: DWORD);
  end;

{ TMonthCalendar }

  EMonthCalError = class(ECommonCalendarError);

  TMonthCalendar = class(TCommonCalendar)
  private
    procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
    procedure CNNotify(var Message: TWMNotify); message CN_NOTIFY;
  protected
    function CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; 
    procedure ConstrainedResize(var MinWidth, MinHeight, MaxWidth,
      MaxHeight: Integer);
    procedure CreateParams(var Params: TCreateParams); override;
    function GetCalendarHandle: HWND; override;
    function MsgSetCalColors(ColorIndex: Integer; ColorValue: TColor): Boolean; override;
    function MsgSetDateTime(Value: TSystemTime): Boolean; override;
    function MsgSetRange(Flags: Integer; SysTime: PSystemTime): Boolean; override;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property Align;
//    property Anchors;
//    property AutoSize;
//    property BorderWidth;
//    property BiDiMode;
    property CalColors;
//    property Constraints;
    property MultiSelect;  // must be before date stuff
    property Date;
    property DragCursor;
//    property DragKind;
    property DragMode;
    property Enabled;
    property EndDate;
    property FirstDayOfWeek;
    property Font;
    property ImeMode;
    property ImeName;
    property MaxDate;
    property MaxSelectRange;
    property MinDate;
//    property ParentBiDiMode;
    property ParentFont;
    property ParentShowHint;
    property PopupMenu;
    property ShowHint;
    property ShowToday;
    property ShowTodayCircle;
    property TabOrder;
    property TabStop;
    property Visible;
    property WeekNumbers;
    property OnClick;
    property OnDblClick;
    property OnDragDrop;
    property OnDragOver;
//    property OnEndDock;
    property OnEndDrag;
    property OnEnter;
    property OnExit;
    property OnGetMonthInfo;
    property OnKeyDown;
    property OnKeyPress;
    property OnKeyUp;
//    property OnStartDock;
    property OnStartDrag;
  end;


implementation

{ TMonthCalColors }

const
  ColorIndex: array[0..5] of Integer = (MCSC_BACKGROUND, MCSC_TEXT,
    MCSC_TITLEBK, MCSC_TITLETEXT, MCSC_MONTHBK, MCSC_TRAILINGTEXT);

constructor TMonthCalColors.Create(AOwner: TCommonCalendar);
begin
  Owner := AOwner;
  FBackColor := clWindow;
  FTextColor := clWindowText;
  FTitleBackColor := clActiveCaption;
  FTitleTextColor := clWhite;
  FMonthBackColor := clWhite;
  FTrailingTextColor := clInactiveCaptionText;
end;

procedure TMonthCalColors.Assign(Source: TPersistent);
var
  SourceName: string;
begin
  if Source = nil then SourceName := 'nil'
  else SourceName := Source.ClassName;
  if (Source = nil) or not (Source is TMonthCalColors) then
    raise EConvertError.CreateFmt('Cannot assign a %s to a %s', [SourceName, ClassName]);
  FBackColor := TMonthCalColors(Source).BackColor;
  FTextColor := TMonthCalColors(Source).TextColor;
  FTitleBackColor := TMonthCalColors(Source).TitleBackColor;
  FTitleTextColor := TMonthCalColors(Source).TitleTextColor;
  FMonthBackColor := TMonthCalColors(Source).MonthBackColor;
  FTrailingTextColor := TMonthCalColors(Source).TrailingTextColor;
end;

procedure TMonthCalColors.SetColor(Index: Integer; Value: TColor);
begin
  case Index of
    0: FBackColor := Value;
    1: FTextColor := Value;
    2: FTitleBackColor := Value;
    3: FTitleTextColor := Value;
    4: FMonthBackColor := Value;
    5: FTrailingTextColor := Value;
  end;
  if Owner.HandleAllocated then
    Owner.MsgSetCalColors(ColorIndex[Index], ColorToRGB(Value));
end;

procedure TMonthCalColors.SetAllColors;
begin
  SetColor(0, FBackColor);
  SetColor(1, FTextColor);
  SetColor(2, FTitleBackColor);
  SetColor(3, FTitleTextColor);
  SetColor(4, FMonthBackColor);
  SetColor(5, FTrailingTextColor);
end;

{ TCommonCalendar }

function InitCommonControl(CC: Integer): Boolean;
var
  ICC: TInitCommonControlsEx;
begin
  ICC.dwSize := SizeOf(TInitCommonControlsEx);
  ICC.dwICC := CC;
  Result := InitCommonControlsEx(ICC);
  if not Result then InitCommonControls;
end;

procedure CheckCommonControl(CC: Integer);
begin
  if not InitCommonControl(CC) then
    raise EComponentError.Create(SInvalidComCtl32);
end;

constructor TCommonCalendar.Create(AOwner: TComponent);
begin
  CheckCommonControl(ICC_DATE_CLASSES);
  inherited Create(AOwner);
  FShowToday := True;
  FShowTodayCircle := True;
  ControlStyle := [csOpaque, csClickEvents, csDoubleClicks, csReflector];
  FCalColors := TDateTimeColors.Create(Self);
  FDateTime := Now;
  FFirstDayOfWeek := dowLocaleDefault;
  FMaxSelectRange := 31;
  FMonthDelta := 1;
end;

destructor TCommonCalendar.Destroy;
begin
  inherited Destroy;
  FCalColors.Free;
end;

procedure TCommonCalendar.BoldDays(Days: array of DWORD; var MonthBoldInfo: DWORD);
var
  I: DWORD;
begin
  MonthBoldInfo := 0;
  for I := Low(Days) to High(Days) do
    if (Days[I] > 0) and (Days[I] < 32) then
      MonthBoldInfo := MonthBoldInfo or ($00000001 shl (Days[I] - 1));
end;

procedure TCommonCalendar.CheckEmptyDate;
begin
  // do nothing
end;

procedure TCommonCalendar.CheckValidDate(Value: TDate);
begin
  if (FMaxDate <> 0.0) and (Value > FMaxDate) then
    raise CalExceptionClass.CreateFmt(sDateTimeMax, [DateToStr(FMaxDate)]);
  if (FMinDate <> 0.0) and (Value < FMinDate) then
    raise CalExceptionClass.CreateFmt(sDateTimeMin, [DateToStr(FMinDate)]);
end;

procedure TCommonCalendar.CreateWnd;
begin
  inherited CreateWnd;
  FCalColors.SetAllColors;
  SetRange(FMinDate, FMaxDate);
  SetMaxSelectRange(FMaxSelectRange);
  SetMonthDelta(FMonthDelta);
  SetFirstDayOfWeek(FFirstDayOfWeek);
  if FMultiSelect then
    SetSelectedRange(FDateTime, FEndDate)
  else
    SetDateTime(FDateTime);
end;

const
 MCS_NOTODAYCIRCLE     = $0008;

function TCommonCalendar.GetCalStyles: DWORD;
const
  ShowTodayFlags: array[Boolean] of DWORD = (MCS_NOTODAY, 0);
  ShowTodayCircleFlags: array[Boolean] of DWORD = (MCS_NOTODAYCIRCLE, 0);
  WeekNumFlags: array[Boolean] of DWORD = (0, MCS_WEEKNUMBERS);
  MultiSelFlags: array[Boolean] of DWORD = (0, MCS_MULTISELECT);
begin
  Result := MCS_DAYSTATE or ShowTodayFlags[FShowToday] or
    ShowTodayCircleFlags[FShowTodayCircle] or WeekNumFlags[FWeekNumbers] or
    MultiSelFlags[FMultiSelect];
end;

function TCommonCalendar.DoStoreEndDate: Boolean;
begin
  Result := FMultiSelect;
end;

function TCommonCalendar.DoStoreMaxDate: Boolean;
begin
  Result := FMaxDate <> 0.0;
end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区黄| 久久99国产精品麻豆| 久久这里只有精品视频网| 欧美精品1区2区3区| 91色porny| 91麻豆蜜桃一区二区三区| 成人av先锋影音| 一本大道av一区二区在线播放| 成人性视频免费网站| 丁香婷婷综合激情五月色| 国产乱子轮精品视频| 从欧美一区二区三区| 99久久国产综合色|国产精品| 91看片淫黄大片一级在线观看| 91麻豆swag| 欧美精品tushy高清| 久久久蜜桃精品| 国产精品久久网站| 一区二区三区91| 日韩二区在线观看| 国产精品一区三区| 色狠狠一区二区| 91精品国产色综合久久不卡蜜臀| 精品国产三级a在线观看| 久久亚区不卡日本| 亚洲欧美另类在线| 日韩主播视频在线| 国产精品一二三区在线| 色999日韩国产欧美一区二区| 欧美裸体一区二区三区| 欧美精品一区二区三区蜜桃| 国产精品高清亚洲| 偷窥少妇高潮呻吟av久久免费| 精品系列免费在线观看| 91麻豆国产香蕉久久精品| 日韩免费在线观看| 亚洲人妖av一区二区| 美女在线一区二区| 色综合久久中文字幕| 精品少妇一区二区三区免费观看| 亚洲少妇中出一区| 精品一区二区综合| 精品视频全国免费看| 欧美激情一区二区| 免费久久精品视频| 91国偷自产一区二区使用方法| 久久久久国产精品厨房| 婷婷一区二区三区| 91在线一区二区三区| 精品久久久久久无| 天天av天天翘天天综合网色鬼国产| 国产成人精品1024| 7799精品视频| 亚洲一区二区精品视频| 国产高清不卡一区| 日韩欧美区一区二| 亚洲国产精品嫩草影院| av高清不卡在线| 国产日产欧产精品推荐色| 日韩国产欧美视频| 欧美三级视频在线播放| 亚洲欧美欧美一区二区三区| 不卡视频在线看| 国产婷婷色一区二区三区四区| 美女视频黄免费的久久| 欧美日韩激情在线| 一区二区三区四区不卡在线 | 在线看一区二区| 国产欧美日韩三级| 国产在线麻豆精品观看| 欧美成人综合网站| 青青国产91久久久久久| 欧美军同video69gay| 香蕉成人伊视频在线观看| 91福利在线观看| 一区二区三区美女视频| 色综合亚洲欧洲| 有码一区二区三区| 在线看日韩精品电影| 亚洲午夜免费视频| 69堂精品视频| 麻豆成人免费电影| 精品国产三级电影在线观看| 国产一区二区0| 中文字幕国产一区二区| proumb性欧美在线观看| 亚洲免费伊人电影| 精品视频123区在线观看| 奇米精品一区二区三区在线观看| 欧美妇女性影城| 久久不见久久见免费视频7| 亚洲精品一区二区三区四区高清 | 一本一道久久a久久精品综合蜜臀| 成人欧美一区二区三区在线播放| 97se亚洲国产综合自在线不卡| 亚洲乱码日产精品bd| 欧美日韩亚洲国产综合| 久久疯狂做爰流白浆xx| 久久久精品免费观看| 99久久免费视频.com| 亚洲一区二区欧美日韩| 日韩欧美一级二级三级| 国产麻豆精品95视频| 日韩理论片中文av| 7777精品伊人久久久大香线蕉最新版| 麻豆精品一区二区| 亚洲人亚洲人成电影网站色| 欧美一区二区视频网站| 高清beeg欧美| 天天综合日日夜夜精品| 国产女同性恋一区二区| 欧美视频一区二区三区在线观看 | 在线精品亚洲一区二区不卡| 美女脱光内衣内裤视频久久影院| 日本一区二区三区四区| 欧美在线观看18| 国产精品18久久久| 日韩中文字幕av电影| 国产清纯在线一区二区www| 欧美亚洲综合网| 国产91对白在线观看九色| 亚洲国产精品久久人人爱蜜臀 | 99亚偷拍自图区亚洲| 日本aⅴ免费视频一区二区三区| 国产精品久久三区| www日韩大片| 777色狠狠一区二区三区| 99麻豆久久久国产精品免费优播| 免费高清不卡av| 亚洲宅男天堂在线观看无病毒| 国产三区在线成人av| 欧美一级搡bbbb搡bbbb| 在线一区二区三区| av不卡在线观看| 国产精品18久久久久| 久久se精品一区精品二区| 亚州成人在线电影| 亚洲柠檬福利资源导航| 欧美国产精品久久| 欧美精品一区在线观看| 日韩一区二区三区精品视频 | 精品少妇一区二区三区 | 国产不卡视频在线播放| 麻豆国产一区二区| 日韩av一二三| 日韩影院在线观看| 亚洲福利国产精品| 一区二区三区国产| 亚洲日本va午夜在线影院| 中文字幕永久在线不卡| 国产精品乱人伦中文| 国产无人区一区二区三区| 国产亚洲1区2区3区| 久久久久久久久久久久久夜| 日韩天堂在线观看| 91精品国产综合久久精品 | 欧美激情一区二区三区全黄| 久久久www成人免费无遮挡大片| 精品少妇一区二区三区在线视频| 日韩一区二区三区四区| 欧美mv日韩mv国产| 久久噜噜亚洲综合| 国产网站一区二区三区| 国产精品网站在线播放| 中文字幕一区二区三区在线不卡 | 欧美精品一二三区| 欧美麻豆精品久久久久久| 日韩欧美国产精品| 久久久另类综合| 中文字幕av一区二区三区免费看| 国产精品丝袜一区| 亚洲免费观看视频| 亚洲成人动漫精品| 久久精品国产亚洲高清剧情介绍| 国产一区在线精品| 99热在这里有精品免费| 在线观看日韩国产| 日韩午夜电影在线观看| 国产欧美精品日韩区二区麻豆天美| 国产精品国模大尺度视频| 一区二区三区日韩精品视频| 人禽交欧美网站| 国产成人av电影免费在线观看| 在线观看精品一区| 精品国产网站在线观看| 亚洲色图欧洲色图| 美女脱光内衣内裤视频久久影院| 国产精品18久久久久久久久 | 亚洲免费观看视频| 免费看欧美美女黄的网站| 成人av小说网| 91麻豆精品国产91久久久使用方法| 日韩精品一区二区在线| 亚洲欧美中日韩| 琪琪一区二区三区| 99久久99久久久精品齐齐| 欧美一区二区视频免费观看| 亚洲欧洲日本在线| 精品亚洲国产成人av制服丝袜| 一本大道久久a久久精二百|