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

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

?? monthcal.pas

?? 很COOL的GRID表格控件
?? 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一区二区三区免费野_久草精品视频
日韩欧美国产一区在线观看| 久久九九久精品国产免费直播| 成人18视频在线播放| 成人免费毛片a| 成人福利在线看| 色噜噜狠狠色综合中国| 欧美自拍丝袜亚洲| 欧美老女人在线| 日韩一级免费一区| 久久久久久夜精品精品免费| 国产蜜臀97一区二区三区| 国产精品国产a| 亚洲午夜久久久久久久久久久| 亚洲成人三级小说| 精品一区二区日韩| eeuss影院一区二区三区| 一本久道久久综合中文字幕| 欧美精品vⅰdeose4hd| 日韩精品综合一本久道在线视频| 蜜桃视频一区二区三区在线观看 | 一本到不卡免费一区二区| 成人午夜视频在线| 欧美中文字幕一区二区三区亚洲 | 成人午夜视频免费看| 在线日韩国产精品| 欧美电影免费观看高清完整版在| www久久久久| 亚洲激情五月婷婷| 黄色小说综合网站| 在线中文字幕不卡| 久久亚洲二区三区| 亚洲综合色成人| 国产盗摄精品一区二区三区在线| 在线免费视频一区二区| 精品电影一区二区三区| 亚洲精品第1页| 国产98色在线|日韩| 欧美丰满少妇xxxbbb| 国产精品免费aⅴ片在线观看| 日韩专区欧美专区| 色狠狠色狠狠综合| 国产亚洲精品精华液| 日韩国产欧美一区二区三区| voyeur盗摄精品| 久久久青草青青国产亚洲免观| 亚洲一区二区三区影院| 国产黄色精品视频| 91精品欧美久久久久久动漫| 亚洲美女偷拍久久| 成人免费电影视频| 精品三级在线观看| 视频一区二区三区中文字幕| 日韩亚洲欧美在线| 一区二区视频在线| 成人高清视频在线| 久久久久97国产精华液好用吗| 日韩在线观看一区二区| 色偷偷久久人人79超碰人人澡| 国产欧美日韩在线看| 激情图区综合网| 日韩精品自拍偷拍| 免费的成人av| 欧美一区二区三区免费| 视频一区中文字幕国产| 欧美色图第一页| 亚洲一二三四区| 精品视频全国免费看| 亚洲精品成a人| 在线观看av一区| 亚洲综合在线电影| 欧美日韩国产a| 午夜影院在线观看欧美| 欧美日韩一区三区四区| 婷婷久久综合九色综合绿巨人| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 久久精品日韩一区二区三区| 国产真实乱偷精品视频免| 久久综合999| 成人妖精视频yjsp地址| 综合网在线视频| 日本精品视频一区二区| 亚洲一卡二卡三卡四卡无卡久久| 欧美视频一区二区| 日韩 欧美一区二区三区| 欧美成人综合网站| 国产91清纯白嫩初高中在线观看| 国产精品国产三级国产aⅴ入口 | 国产欧美精品在线观看| 成人福利在线看| 伊人婷婷欧美激情| 欧美日韩大陆在线| 精品一区二区三区免费毛片爱| 欧美激情综合五月色丁香小说| 成人一级黄色片| 亚洲国产精品视频| 久久精品网站免费观看| 日本高清无吗v一区| 免费看欧美女人艹b| 精品国产91久久久久久久妲己| av亚洲精华国产精华精华| 成人激情综合网站| 亚洲 欧美综合在线网络| 久久影视一区二区| 91国偷自产一区二区三区观看| 免费一级欧美片在线观看| 国产精品天美传媒| 欧美日韩高清不卡| 福利91精品一区二区三区| 亚洲一二三四区不卡| 国产午夜亚洲精品羞羞网站| 欧美在线观看一区二区| 激情成人午夜视频| 亚洲一区二区三区国产| 国产午夜三级一区二区三| 欧美日韩在线播放一区| 成人午夜大片免费观看| 男女视频一区二区| 亚洲精品欧美激情| 欧美激情在线一区二区三区| 91精品国产综合久久蜜臀| 91在线精品秘密一区二区| 激情另类小说区图片区视频区| 亚洲在线视频一区| 亚洲三级久久久| 日本一区二区三区视频视频| 欧美tk—视频vk| 欧美精品一二三四| 欧美三级资源在线| 91亚洲男人天堂| 不卡av在线免费观看| 国产综合久久久久久久久久久久| 亚洲一区二区三区视频在线| 亚洲欧洲日韩综合一区二区| 久久久久久久久蜜桃| 精品国产sm最大网站| 日韩欧美国产不卡| 7777精品伊人久久久大香线蕉超级流畅 | 国产欧美一区二区三区在线看蜜臀 | 欧美三日本三级三级在线播放| 成人黄色在线视频| 不卡一区中文字幕| 成人午夜精品一区二区三区| 国产福利91精品| 国产成人亚洲精品青草天美| 国产精品中文字幕一区二区三区| 久久成人羞羞网站| 国产最新精品精品你懂的| 韩国精品主播一区二区在线观看 | 亚洲国产精品久久久男人的天堂| 亚洲欧美日韩在线不卡| 一区二区三区中文字幕| 一区二区三区高清| 午夜视频一区二区三区| 天天av天天翘天天综合网 | 色94色欧美sute亚洲线路一ni| 97久久超碰精品国产| 日本精品裸体写真集在线观看| 色婷婷综合激情| 欧美视频在线一区| 欧美一级国产精品| 久久久久久夜精品精品免费| 中文字幕在线观看一区二区| 亚洲精品国产a久久久久久| 亚洲一区二区三区国产| 美女在线视频一区| 成人一区二区三区视频| 91福利在线免费观看| 在线综合视频播放| 久久久综合视频| 一区二区在线观看免费| 美洲天堂一区二卡三卡四卡视频| 激情图片小说一区| 91视频一区二区三区| 在线播放欧美女士性生活| 精品国产成人在线影院 | www国产成人| 亚洲女同女同女同女同女同69| 亚洲综合色婷婷| 国产风韵犹存在线视精品| 欧美私模裸体表演在线观看| 精品91自产拍在线观看一区| 中文字幕在线不卡| 免费观看91视频大全| 暴力调教一区二区三区| 欧美一区二区三区免费在线看| 日本一区二区成人在线| 日本在线播放一区二区三区| 国产91露脸合集magnet| 51精品国自产在线| 亚洲欧美国产高清| 国产在线精品一区二区三区不卡 | 精品处破学生在线二十三| 樱花影视一区二区| 国产成人av电影在线| 欧美人狂配大交3d怪物一区| 国产精品久久久久久户外露出 | 大尺度一区二区| 91精品久久久久久蜜臀| 亚洲另类在线视频| 国产成人久久精品77777最新版本|