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

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

?? monthcal.pas

?? Delphi控件源碼
?? PAS
?? 第 1 頁 / 共 2 頁
字號:

function TCommonCalendar.DoStoreMinDate: Boolean;
begin
  Result := FMinDate <> 0.0;
end;

function TCommonCalendar.GetDate: TDate;
begin
  Result := TDate(FDateTime);
end;

procedure TCommonCalendar.SetCalColors(Value: TDateTimeColors);
begin
  if FCalColors <> Value then FCalColors.Assign(Value);
end;

procedure TCommonCalendar.SetDate(Value: TDate);
var
  TruncValue: TDate;
begin
  TruncValue := Trunc(Value);
  Value := TruncValue + Frac(FDateTime);
  if Value = 0.0 then CheckEmptyDate;
  try
    CheckValidDate(TruncValue);
    SetDateTime(Value);
  except
    SetDateTime(FDateTime);
    raise;
  end;
end;

procedure TCommonCalendar.SetDateTime(Value: TDateTime);
var
  ST: TSystemTime;
begin
  DateTimeToSystemTime(Value, ST);
  if FMultiSelect then
    SetSelectedRange(Value, FEndDate)
  else begin
    if HandleAllocated then
      if not MsgSetDateTime(ST) then
        raise ECommonCalendarError.Create(sFailSetCalDateTime);
    FDateTime := Value;
  end;
end;

procedure TCommonCalendar.SetEndDate(Value: TDate);
var
  TruncValue: TDate;
begin
  TruncValue := Trunc(Value);
  if Trunc(FEndDate) <> TruncValue then
  begin
    Value := TruncValue + 0.0;
    if Value = 0.0 then CheckEmptyDate;
    CheckValidDate(TruncValue);
    SetSelectedRange(Date, TruncValue);
  end;
end;

procedure TCommonCalendar.SetFirstDayOfWeek(Value: TCalDayOfWeek);
var
  DOWFlag: Integer;
  A: array[0..1] of char;
begin
  if HandleAllocated then
  begin
    if Value = dowLocaleDefault then
    begin
      GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_IFIRSTDAYOFWEEK, A, SizeOf(A));
      DOWFlag := Ord(A[0]) - Ord('0');
    end
    else
      DOWFlag := Ord(Value);
    if CalendarHandle <> 0 then
      MonthCal_SetFirstDayOfWeek(CalendarHandle, DOWFlag);
  end;
  FFirstDayOfWeek := Value;
end;

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

procedure TCommonCalendar.SetMaxSelectRange(Value: Integer);
begin
  if FMultiSelect and HandleAllocated then
    if not MonthCal_SetMaxSelCount(CalendarHandle, Value) then
      raise ECommonCalendarError.Create(sFailSetCalMaxSelRange);
  FMaxSelectRange := Value;
end;

procedure TCommonCalendar.SetMinDate(Value: TDate);
begin
  if (FMaxDate <> 0.0) and (Value > FMaxDate) then
    raise CalExceptionClass.CreateFmt(SDateTimeMax, [DateToStr(FMaxDate)]);
  if FMinDate <> Value then
  begin
    SetRange(Value, FMaxDate);
    FMinDate := Value;
  end;
end;

procedure TCommonCalendar.SetMonthDelta(Value: Integer);
begin
  if HandleAllocated and (CalendarHandle <> 0) then
    MonthCal_SetMonthDelta(CalendarHandle, Value);
  FMonthDelta := Value;
end;

procedure TCommonCalendar.SetMultiSelect(Value: Boolean);
begin
  if FMultiSelect <> Value then
  begin
    FMultiSelect := Value;
    if Value then FEndDate := FDateTime
    else FEndDate := 0.0;
    RecreateWnd;
  end;
end;

procedure TCommonCalendar.SetRange(MinVal, MaxVal: TDate);
var
  STA: packed array[1..2] of TSystemTime;
  Flags: DWORD;
  TruncDate, TruncEnd, TruncMin, TruncMax: DWORD{Int64};
begin
  Flags := 0;
  TruncMin := Trunc(MinVal);
  TruncMax := Trunc(MaxVal);
  TruncDate := Trunc(FDateTime);
  TruncEnd := Trunc(FEndDate);
  if TruncMin <> 0 then
  begin
    if TruncDate < TruncMin then SetDate(MinVal);
    if TruncEnd < TruncMin then SetEndDate(MinVal);
    Flags := Flags or GDTR_MIN;
    DateTimeToSystemTime(TruncMin, STA[1]);
  end;
  if TruncMax <> 0 then
  begin
    if TruncDate > TruncMax then SetDate(MaxVal);
    if TruncEnd > TruncMax then SetEndDate(MaxVal);
    Flags := Flags or GDTR_MAX;
    DateTimeToSystemTime(TruncMax, STA[2]);
  end;
  if HandleAllocated then
    if not MsgSetRange(Flags, @STA[1]) then
      raise ECommonCalendarError.Create(sFailSetCalMinMaxRange);
end;

procedure TCommonCalendar.SetSelectedRange(Date, EndDate: TDate);
var
  DateArray: array[1..2] of TSystemTime;
begin
  if not FMultiSelect then
    SetDateTime(Date)
  else begin
    DateTimeToSystemTime(Date, DateArray[1]);
    DateTimeToSystemTime(EndDate, DateArray[2]);
    if HandleAllocated then
      if not MonthCal_SetSelRange(Handle, @DateArray[1]) then
        raise ECommonCalendarError.Create(sFailsetCalSelRange);
    FDateTime := Date;
    FEndDate := EndDate;
  end;
end;

procedure SetComCtlStyle(Ctl: TWinControl; Value: Integer; UseStyle: Boolean);
var
  Style: Integer;
begin
  if Ctl.HandleAllocated then
  begin
    Style := GetWindowLong(Ctl.Handle, GWL_STYLE);
    if not UseStyle then Style := Style and not Value
    else Style := Style or Value;
    SetWindowLong(Ctl.Handle, GWL_STYLE, Style);
  end;
end;

procedure TCommonCalendar.SetShowToday(Value: Boolean);
begin
  if FShowToday <> Value then
  begin
    FShowToday := Value;
    SetComCtlStyle(Self, MCS_NOTODAY, not Value);
  end;
end;

procedure TCommonCalendar.SetShowTodayCircle(Value: Boolean);
begin
  if FShowTodayCircle <> Value then
  begin
    FShowTodayCircle := Value;
    SetComCtlStyle(Self, MCS_NOTODAYCIRCLE, not Value);
  end;
end;

procedure TCommonCalendar.SetWeekNumbers(Value: Boolean);
begin
  if FWeekNumbers <> Value then
  begin
    FWeekNumbers := Value;
    SetComCtlStyle(Self, MCS_WEEKNUMBERS, Value);
  end;
end;

function IsBlankSysTime(const ST: TSystemTime): Boolean;
begin
  with ST do
    Result := (wYear = 0) and (wMonth = 0) and (wDayOfWeek = 0) and
      (wDay = 0) and (wHour = 0) and (wMinute = 0) and (wSecond = 0) and
      (wMilliseconds = 0);
end;

{ TMonthCalendar }

constructor TMonthCalendar.Create(AOwner: TComponent);
begin
  FCalExceptionClass := EMonthCalError;
  inherited Create(AOwner);
  Width := 176;
  Height := 153;
end;

procedure TMonthCalendar.CMFontChanged(var Message: TMessage);
begin
  inherited;
  if HandleAllocated then Perform(WM_SIZE, 0, 0);
end;

procedure TMonthCalendar.CNNotify(var Message: TWMNotify);
var
  ST: PSystemTime;
  I, MonthNo: Integer;
  CurState: PMonthDayState;
begin
  with Message, NMHdr^ do
  begin
    case code of
      MCN_GETDAYSTATE:
        with PNmDayState(NMHdr)^ do
        begin
          FillChar(prgDayState^, cDayState * SizeOf(TMonthDayState), 0);
          if Assigned(FOnGetMonthInfo) then
          begin
            CurState := prgDayState;
            for I := 0 to cDayState - 1 do
            begin
              MonthNo := stStart.wMonth + I;
              if MonthNo > 12 then MonthNo := MonthNo - 12;
              FOnGetMonthInfo(Self, MonthNo, CurState^);
              Inc(CurState);
            end;
          end;
        end;
      MCN_SELECT, MCN_SELCHANGE:
        begin
          ST := @PNMSelChange(NMHdr).stSelStart;
          if not IsBlankSysTime(ST^) then
            FDateTime := SystemTimeToDateTime(ST^);
          if FMultiSelect then
          begin
            ST := @PNMSelChange(NMHdr).stSelEnd;
            if not IsBlankSysTime(ST^) then
              FEndDate := SystemTimeToDateTime(ST^);
          end;
        end;
    end;
  end;
  inherited;
end;

procedure TMonthCalendar.ConstrainedResize(var MinWidth, MinHeight, MaxWidth,
  MaxHeight: Integer);
var
  R: TRect;
  CtlMinWidth, CtlMinHeight: Integer;
begin
  if HandleAllocated then
  begin
    MonthCal_GetMinReqRect(Handle, R);
    with R do
    begin
      CtlMinHeight := Bottom - Top;
      CtlMinWidth := Right - Left;
    end;
    if MinHeight < CtlMinHeight then MinHeight := CtlMinHeight;
    if MinWidth < CtlMinWidth then MinWidth := CtlMinWidth;
  end;
  //inherited ConstrainedResize(MinWidth, MinHeight, MaxWidth, MaxHeight);
end;

procedure TMonthCalendar.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  CreateSubClass(Params, MONTHCAL_CLASS);
  with Params do
  begin
    Style := Style or GetCalStyles;
    WindowClass.style := WindowClass.style and not (CS_HREDRAW or CS_VREDRAW) or
      CS_DBLCLKS;
  end;
end;

function TMonthCalendar.GetCalendarHandle: HWND;
begin
  Result := Handle;
end;

function TMonthCalendar.MsgSetCalColors(ColorIndex: Integer; ColorValue: TColor): Boolean;
begin
  Result := True;
  if HandleAllocated then
    Result := MonthCal_SetColor(Handle, ColorIndex, ColorValue) <> True{DWORD($FFFFFFFF)};
end;

function TMonthCalendar.MsgSetDateTime(Value: TSystemTime): Boolean;
begin
  Result := True;
  if HandleAllocated then
    Result := MonthCal_SetCurSel(Handle, Value);
end;

function TMonthCalendar.MsgSetRange(Flags: Integer; SysTime: PSystemTime): Boolean;
begin
  Result := True;
  if HandleAllocated then
    if Flags <> 0 then Result := MonthCal_SetRange(Handle, Flags, SysTime);
end;

function TMonthCalendar.CanAutoSize(var NewWidth, NewHeight: Integer): Boolean;
var
  R: TRect;
begin
  if HandleAllocated then
  begin
    Result := True;
    Perform(MCM_GETMINREQRECT, 0, Longint(@R));
    with R do
    begin
      NewWidth := Right - Left;
      NewHeight := Bottom - Top;
    end;
  end
  else Result := False;
end;


end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲免费视频| 欧美电影免费观看高清完整版在 | 日本国产一区二区| 成人国产精品免费网站| 国产一区二区福利| 国产精品亚洲专一区二区三区 | 国产成人综合在线观看| 国产在线精品不卡| 成人免费看片app下载| 国产一区二区精品久久| 国产精品综合av一区二区国产馆| 麻豆精品国产91久久久久久| 久久成人精品无人区| 国产乱子伦视频一区二区三区 | 欧美va日韩va| 国产视频在线观看一区二区三区| 国产精品污污网站在线观看| 亚洲色图一区二区三区| 亚洲国产精品久久久久秋霞影院| 亚洲第一狼人社区| 国产在线日韩欧美| 99视频在线精品| 欧美日韩国产高清一区| 精品久久久久久无| 亚洲男人的天堂av| 奇米精品一区二区三区四区| 国产精品一区二区男女羞羞无遮挡| 不卡一卡二卡三乱码免费网站| 欧美综合天天夜夜久久| 91精品国产综合久久久久久漫画| 精品国产3级a| 一区二区三区高清不卡| 国产在线精品免费| 在线观看欧美日本| 国产清纯白嫩初高生在线观看91| 专区另类欧美日韩| 精品无人码麻豆乱码1区2区| 99精品视频在线观看免费| 欧美一区二区三区在线| 中文字幕中文字幕中文字幕亚洲无线| 亚洲黄色小说网站| 国产一区二区在线视频| 在线欧美日韩国产| 国产精品传媒入口麻豆| 另类欧美日韩国产在线| 欧美午夜精品久久久久久超碰 | 欧美在线视频不卡| 国产精品日日摸夜夜摸av| 天堂资源在线中文精品| 成人aa视频在线观看| 日韩欧美中文字幕精品| 亚洲欧美视频一区| 成人久久久精品乱码一区二区三区| 欧美男女性生活在线直播观看| 中文字幕欧美日本乱码一线二线| 日韩精品福利网| 欧美伊人精品成人久久综合97| 久久综合久久综合久久| 奇米一区二区三区av| 欧美猛男超大videosgay| 欧美精品一区二区在线播放| 日韩黄色免费网站| 欧美精品少妇一区二区三区| 亚洲日本成人在线观看| 成人黄色免费短视频| 久久先锋影音av| 国产一区二区在线观看视频| 777xxx欧美| 亚洲一二三四区不卡| 在线观看日韩毛片| 亚洲一区二区不卡免费| 欧美中文字幕一区二区三区亚洲| 亚洲三级在线免费观看| eeuss鲁片一区二区三区| 中文字幕欧美国产| 成人av资源在线| 国产精品美日韩| 91在线精品一区二区三区| 国产精品视频观看| 99久久国产综合精品色伊| 亚洲视频免费在线观看| 在线免费观看日本一区| 亚洲成人动漫在线免费观看| 欧美日韩视频在线观看一区二区三区 | 日韩精品一卡二卡三卡四卡无卡| 欧美日韩色一区| 天堂久久久久va久久久久| 欧美疯狂性受xxxxx喷水图片| 亚洲国产一二三| 日韩欧美一区中文| 国产一区不卡在线| 午夜精彩视频在线观看不卡| 在线不卡中文字幕| 激情综合色播五月| 亚洲国产精品激情在线观看| 成人动漫一区二区| 亚洲综合在线五月| 日韩欧美中文一区| 成人激情小说乱人伦| 专区另类欧美日韩| 91麻豆精品国产自产在线 | 欧美一区二区三区日韩| 久久国产夜色精品鲁鲁99| 日本一区二区久久| 日本精品免费观看高清观看| 亚洲曰韩产成在线| 亚洲精品一区二区三区精华液 | 欧美性xxxxxxxx| 日本在线观看不卡视频| 精品91自产拍在线观看一区| 成人网男人的天堂| 日韩av在线播放中文字幕| 久久九九全国免费| 欧美三级韩国三级日本一级| 玖玖九九国产精品| 亚洲蜜臀av乱码久久精品| 91精品午夜视频| 99久久精品情趣| 国产一区二区免费在线| 亚洲一二三专区| 国产精品三级av在线播放| 欧美猛男gaygay网站| 懂色av中文字幕一区二区三区| 午夜精品国产更新| 国产精品女主播在线观看| 91精品国产福利| 91久久精品一区二区二区| 麻豆成人91精品二区三区| 成人免费一区二区三区视频| 欧美刺激脚交jootjob| 色哟哟一区二区在线观看| 午夜影视日本亚洲欧洲精品| 国产天堂亚洲国产碰碰| 欧美精品久久99| 成年人午夜久久久| 国内精品久久久久影院薰衣草| 一区二区三区成人在线视频| 中文字幕国产一区| 久久综合色综合88| 日韩欧美国产电影| 欧美色大人视频| 91福利精品视频| 成+人+亚洲+综合天堂| 国产成人精品影院| 国内精品不卡在线| 日本vs亚洲vs韩国一区三区二区 | 国产激情精品久久久第一区二区 | 99久久精品国产一区| 国产91高潮流白浆在线麻豆| 精品在线观看免费| 久久国产精品一区二区| 日韩激情一区二区| 日本亚洲天堂网| 日韩中文字幕亚洲一区二区va在线| 综合色中文字幕| ㊣最新国产の精品bt伙计久久| 欧美成人三级电影在线| 久久综合av免费| 亚洲精品在线电影| 国产亚洲欧美中文| 国产精品久久三| 午夜精品aaa| 男人的天堂久久精品| 久久不见久久见免费视频1| 久久99精品久久久久| 国产激情一区二区三区| 99久久综合狠狠综合久久| 99免费精品视频| 欧美在线免费播放| 日韩午夜中文字幕| 国产亚洲精品精华液| 一区免费观看视频| 亚洲高清免费视频| 激情综合色综合久久| 岛国精品在线观看| 在线免费观看日本欧美| 日韩一卡二卡三卡四卡| 欧美精品一区二区在线播放| 国产精品国产自产拍在线| 亚洲国产日韩精品| 久久66热re国产| av电影在线观看一区| 91精品国产综合久久精品app| 精品乱码亚洲一区二区不卡| **欧美大码日韩| 老司机一区二区| 不卡电影一区二区三区| 欧美日韩mp4| 国产欧美日韩在线视频| 亚洲一线二线三线久久久| 精品在线视频一区| 91麻豆swag| 精品欧美乱码久久久久久 | 亚洲第一成人在线| 国产一区二区三区在线观看免费 | 日韩欧美在线观看一区二区三区| 国产蜜臀97一区二区三区| 亚洲r级在线视频| av午夜一区麻豆| 精品三级av在线|