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

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

?? pickdate.pas

?? RX Library contains a large number of components, objects and routines for Borland Delphi with full
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
{*******************************************************}
{                                                       }
{         Delphi VCL Extensions (RX)                    }
{                                                       }
{         Copyright (c) 1995, 1996 AO ROSNO             }
{         Copyright (c) 1997, 1998 Master-Bank          }
{                                                       }
{*******************************************************}

unit PickDate;

{$I RX.INC}
{$S-}

interface

uses Windows, Classes, Variants, Controls, SysUtils, Graphics, DateUtil;

{ Calendar dialog }

function SelectDate(var Date: TDateTime; const DlgCaption: TCaption;
  AStartOfWeek: TDayOfWeekName; AWeekends: TDaysOfWeek;
  AWeekendColor: TColor; BtnHints: TStrings): Boolean;
function SelectDateStr(var StrDate: string; const DlgCaption: TCaption;
  AStartOfWeek: TDayOfWeekName; AWeekends: TDaysOfWeek;
  AWeekendColor: TColor; BtnHints: TStrings): Boolean;
function PopupDate(var Date: TDateTime; Edit: TWinControl): Boolean;

{ Popup calendar }

function CreatePopupCalendar(AOwner: TComponent
  {$IFDEF RX_D4}; ABiDiMode: TBiDiMode = bdLeftToRight {$ENDIF}): TWinControl;
procedure SetupPopupCalendar(PopupCalendar: TWinControl;
  AStartOfWeek: TDayOfWeekName; AWeekends: TDaysOfWeek;
  AWeekendColor: TColor; BtnHints: TStrings; FourDigitYear: Boolean);

const
  PopupCalendarSize: TPoint = (X: 187; Y: 124);

implementation

uses Messages, Consts, Forms, Buttons, StdCtrls, Grids, ExtCtrls, RXCtrls,
  RXCConst, ToolEdit, VCLUtils, MaxMin, rxStrUtils;

{$IFDEF WIN32}
 {$R *.R32}
{$ELSE}
 {$R *.R16}
{$ENDIF}

const
  SBtnGlyphs: array[0..3] of PChar = ('PREV2', 'PREV1', 'NEXT1', 'NEXT2');

procedure FontSetDefault(AFont: TFont);
{$IFDEF WIN32}
var
  NonClientMetrics: TNonClientMetrics;
{$ENDIF}
begin
{$IFDEF WIN32}
  NonClientMetrics.cbSize := SizeOf(NonClientMetrics);
  if SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @NonClientMetrics, 0) then
    AFont.Handle := CreateFontIndirect(NonClientMetrics.lfMessageFont)
  else
{$ENDIF}
  with AFont do begin
    Color := clWindowText;
    Name := 'MS Sans Serif';
    Size := 8;
    Style := [];
  end;
end;

{ TRxTimerSpeedButton }

type
  TRxTimerSpeedButton = class(TRxSpeedButton)
  public
    constructor Create(AOwner: TComponent); override;
  published
    property AllowTimer default True;
    property Style default bsWin31;
  end;

constructor TRxTimerSpeedButton.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Style := bsWin31;
  AllowTimer := True;
{$IFDEF WIN32}
  ControlStyle := ControlStyle + [csReplicatable];
{$ENDIF}
end;

{ TRxCalendar }

{ TRxCalendar implementation copied from Borland CALENDAR.PAS sample unit
  and modified }

type
  TDayOfWeek = 0..6;

  TRxCalendar = class(TCustomGrid)
  private
    FDate: TDateTime;
    FMonthOffset: Integer;
    FOnChange: TNotifyEvent;
    FReadOnly: Boolean;
    FStartOfWeek: TDayOfWeekName;
    FUpdating: Boolean;
    FUseCurrentDate: Boolean;
    FWeekends: TDaysOfWeek;
    FWeekendColor: TColor;
    function GetCellText(ACol, ARow: Integer): string;
    function GetDateElement(Index: Integer): Integer;
    procedure SetCalendarDate(Value: TDateTime);
    procedure SetDateElement(Index: Integer; Value: Integer);
    procedure SetStartOfWeek(Value: TDayOfWeekName);
    procedure SetUseCurrentDate(Value: Boolean);
    procedure SetWeekendColor(Value: TColor);
    procedure SetWeekends(Value: TDaysOfWeek);
    function IsWeekend(ACol, ARow: Integer): Boolean;
    procedure CalendarUpdate(DayOnly: Boolean);
    function StoreCalendarDate: Boolean;
  protected
    procedure CreateParams(var Params: TCreateParams); override;
    procedure Change; dynamic;
    procedure ChangeMonth(Delta: Integer);
    procedure Click; override;
    function DaysThisMonth: Integer;
    procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); override;
    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
    procedure KeyPress(var Key: Char); override;
    function SelectCell(ACol, ARow: Longint): Boolean; override;
    procedure WMSize(var Message: TWMSize); message WM_SIZE;
  public
    constructor Create(AOwner: TComponent); override;
    procedure NextMonth;
    procedure NextYear;
    procedure PrevMonth;
    procedure PrevYear;
    procedure UpdateCalendar; virtual;
    property CellText[ACol, ARow: Integer]: string read GetCellText;
  published
    property CalendarDate: TDateTime read FDate write SetCalendarDate
      stored StoreCalendarDate;
    property Day: Integer index 3  read GetDateElement write SetDateElement stored False;
    property Month: Integer index 2  read GetDateElement write SetDateElement stored False;
    property ReadOnly: Boolean read FReadOnly write FReadOnly default False;
    property StartOfWeek: TDayOfWeekName read FStartOfWeek write SetStartOfWeek default Mon;
    property UseCurrentDate: Boolean read FUseCurrentDate write SetUseCurrentDate default True;
    property WeekendColor: TColor read FWeekendColor write SetWeekendColor default clRed;
    property Weekends: TDaysOfWeek read FWeekends write SetWeekends default [Sun];
    property Year: Integer index 1  read GetDateElement write SetDateElement stored False;
    property OnChange: TNotifyEvent read FOnChange write FOnChange;
  end;

constructor TRxCalendar.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FUseCurrentDate := True;
  FStartOfWeek := Mon;
  FWeekends := [Sun];
  FWeekendColor := clRed;
  FixedCols := 0;
  FixedRows := 1;
  ColCount := 7;
  RowCount := 7;
  ScrollBars := ssNone;
  Options := Options - [goRangeSelect] + [goDrawFocusSelected];
  ControlStyle := ControlStyle + [csFramed];
  FDate := Date;
  UpdateCalendar;
end;

procedure TRxCalendar.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.Style := Params.Style or WS_BORDER;
{$IFDEF WIN32}
  Params.ExStyle := Params.ExStyle and not WS_EX_CLIENTEDGE;
{$ENDIF}
{$IFDEF RX_D4}
  AddBiDiModeExStyle(Params.ExStyle);
{$ENDIF}
end;

procedure TRxCalendar.Change;
begin
  if Assigned(FOnChange) then FOnChange(Self);
end;

procedure TRxCalendar.Click;
var
  TheCellText: string;
begin
  inherited Click;
  TheCellText := CellText[Col, Row];
  if TheCellText <> '' then Day := StrToInt(TheCellText);
end;

function TRxCalendar.DaysThisMonth: Integer;
begin
  Result := DaysPerMonth(Year, Month);
end;

procedure TRxCalendar.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);
var
  TheText: string;
begin
  TheText := CellText[ACol, ARow];
  with ARect, Canvas do begin
    if IsWeekend(ACol, ARow) and not (gdSelected in AState) then
      Font.Color := WeekendColor;
    TextRect(ARect, Left + (Right - Left - TextWidth(TheText)) div 2,
      Top + (Bottom - Top - TextHeight(TheText)) div 2, TheText);
  end;
end;

function TRxCalendar.GetCellText(ACol, ARow: Integer): string;
var
  DayNum: Integer;
begin
  if ARow = 0 then  { day names at tops of columns }
    Result := ShortDayNames[(Ord(StartOfWeek) + ACol) mod 7 + 1]
  else begin
    DayNum := FMonthOffset + ACol + (ARow - 1) * 7;
    if (DayNum < 1) or (DayNum > DaysThisMonth) then Result := ''
    else Result := IntToStr(DayNum);
  end;
end;

procedure TRxCalendar.KeyDown(var Key: Word; Shift: TShiftState);
begin
  if Shift = [] then
    case Key of
      VK_LEFT, VK_SUBTRACT:
        begin
          if (Day > 1) then Day := Day - 1
          else CalendarDate := CalendarDate - 1;
          Exit;
        end;
      VK_RIGHT, VK_ADD:
        begin
          if (Day < DaysThisMonth) then Day := Day + 1
          else CalendarDate := CalendarDate + 1;
          Exit;
        end
    end;
  inherited KeyDown(Key, Shift);
end;

procedure TRxCalendar.KeyPress(var Key: Char);
begin
  if Key in ['T', 't'] then begin
    CalendarDate := Trunc(Now);
    Key := #0;
  end;
  inherited KeyPress(Key);
end;

function TRxCalendar.SelectCell(ACol, ARow: Longint): Boolean;
begin
  if ((not FUpdating) and FReadOnly) or (CellText[ACol, ARow] = '') then
    Result := False
  else Result := inherited SelectCell(ACol, ARow);
end;

procedure TRxCalendar.SetCalendarDate(Value: TDateTime);
begin
  if FDate <> Value then begin
    FDate := Value;
    UpdateCalendar;
    Change;
  end;
end;

function TRxCalendar.StoreCalendarDate: Boolean;
begin
  Result := not FUseCurrentDate;
end;

function TRxCalendar.GetDateElement(Index: Integer): Integer;
var
  AYear, AMonth, ADay: Word;
begin
  DecodeDate(FDate, AYear, AMonth, ADay);
  case Index of
    1: Result := AYear;
    2: Result := AMonth;
    3: Result := ADay;
    else Result := -1;
  end;
end;

procedure TRxCalendar.SetDateElement(Index: Integer; Value: Integer);
var
  AYear, AMonth, ADay: Word;
begin
  if Value > 0 then begin
    DecodeDate(FDate, AYear, AMonth, ADay);
    case Index of
      1: if AYear <> Value then AYear := Value else Exit;
      2: if (Value <= 12) and (Value <> AMonth) then begin
           AMonth := Value;
           if ADay > DaysPerMonth(Year, Value) then
             ADay := DaysPerMonth(Year, Value);
         end else Exit;
      3: if (Value <= DaysThisMonth) and (Value <> ADay) then
           ADay := Value
         else Exit;
      else Exit;
    end;
    FDate := EncodeDate(AYear, AMonth, ADay);
    FUseCurrentDate := False;
    CalendarUpdate(Index = 3);
    Change;
  end;
end;

procedure TRxCalendar.SetWeekendColor(Value: TColor);
begin
  if Value <> FWeekendColor then begin
    FWeekendColor := Value;
    Invalidate;
  end;
end;

procedure TRxCalendar.SetWeekends(Value: TDaysOfWeek);
begin
  if Value <> FWeekends then begin
    FWeekends := Value;
    UpdateCalendar;
  end;
end;

function TRxCalendar.IsWeekend(ACol, ARow: Integer): Boolean;
begin
  Result := TDayOfWeekName((Integer(StartOfWeek) + ACol) mod 7) in FWeekends;
end;

procedure TRxCalendar.SetStartOfWeek(Value: TDayOfWeekName);
begin
  if Value <> FStartOfWeek then begin
    FStartOfWeek := Value;
    UpdateCalendar;
  end;
end;

procedure TRxCalendar.SetUseCurrentDate(Value: Boolean);
begin
  if Value <> FUseCurrentDate then begin
    FUseCurrentDate := Value;
    if Value then begin
      FDate := Date; { use the current date, then }
      UpdateCalendar;
    end;
  end;
end;

{ Given a value of 1 or -1, moves to Next or Prev month accordingly }
procedure TRxCalendar.ChangeMonth(Delta: Integer);
var
  AYear, AMonth, ADay: Word;
  NewDate: TDateTime;
  CurDay: Integer;
begin
  DecodeDate(FDate, AYear, AMonth, ADay);
  CurDay := ADay;
  if Delta > 0 then ADay := DaysPerMonth(AYear, AMonth)
  else ADay := 1;
  NewDate := EncodeDate(AYear, AMonth, ADay);
  NewDate := NewDate + Delta;
  DecodeDate(NewDate, AYear, AMonth, ADay);
  if DaysPerMonth(AYear, AMonth) > CurDay then ADay := CurDay
  else ADay := DaysPerMonth(AYear, AMonth);
  CalendarDate := EncodeDate(AYear, AMonth, ADay);
end;

procedure TRxCalendar.PrevMonth;
begin
  ChangeMonth(-1);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www一区二区| 欧美日本一区二区在线观看| 久久欧美一区二区| 国产精品99久久久久| 日本一区免费视频| 色综合中文综合网| 日韩成人午夜电影| 精品入口麻豆88视频| 国产精品夜夜爽| 成人免费小视频| 欧美三级乱人伦电影| 毛片av一区二区三区| 日本一区二区不卡视频| 欧洲另类一二三四区| 亚洲h精品动漫在线观看| 欧美xfplay| 成人激情综合网站| 亚洲成人av中文| 精品国产免费人成在线观看| 国产精品亚洲成人| 亚洲摸摸操操av| 91麻豆精品国产91| 国产91对白在线观看九色| 亚洲色图一区二区| 欧美一级高清片| 成人免费黄色在线| 丝袜诱惑制服诱惑色一区在线观看 | 久久av资源站| 99久久免费精品| 精品久久久久久久久久久久久久久久久 | 久久理论电影网| 日本道免费精品一区二区三区| 日本中文一区二区三区| 国产精品美女久久久久久久网站| 欧美日韩亚洲高清一区二区| 国产精品77777| 日韩制服丝袜先锋影音| 国产精品久久久久久久久搜平片| 欧美男男青年gay1069videost| 国产伦精品一区二区三区视频青涩 | 日本一区二区动态图| 制服丝袜av成人在线看| 99精品欧美一区二区蜜桃免费| 免费人成在线不卡| 一区二区欧美在线观看| 国产视频在线观看一区二区三区| 欧美亚洲国产一区二区三区va | 久久精品国产澳门| 亚洲宅男天堂在线观看无病毒| 久久精品欧美日韩精品| 欧美一区二区在线播放| 91精品福利在线| eeuss影院一区二区三区 | 高清不卡一二三区| 久久福利资源站| 午夜婷婷国产麻豆精品| 亚洲男人的天堂在线aⅴ视频| 国产校园另类小说区| 正在播放亚洲一区| 欧美日韩视频在线一区二区| 91色九色蝌蚪| 波多野结衣亚洲一区| 国产精品亚洲一区二区三区妖精 | 亚洲男同性视频| 亚洲欧洲日产国产综合网| 国产性做久久久久久| 久久久影视传媒| 精品粉嫩aⅴ一区二区三区四区| 欧美精品一二三四| 欧美三级资源在线| 欧美日韩中文字幕一区二区| 欧美午夜精品电影| 在线视频你懂得一区二区三区| 97久久精品人人做人人爽50路| 国产成人福利片| 国产成人免费av在线| 国产一区二区精品久久99| 国产精品一区二区在线观看不卡| 精品一区二区三区香蕉蜜桃 | 免费在线欧美视频| 免费在线看一区| 精品无人码麻豆乱码1区2区 | 久久精品人人做人人综合| 久久精品亚洲麻豆av一区二区| 久久午夜老司机| 久久久精品tv| 中文字幕在线观看不卡| 综合色中文字幕| 亚洲自拍欧美精品| 日韩成人精品视频| 精品一区二区精品| 国产经典欧美精品| 99精品国产99久久久久久白柏| 91在线精品秘密一区二区| 色8久久精品久久久久久蜜| 精品1区2区3区| 欧美大片在线观看一区| 久久先锋影音av鲁色资源| 中文字幕亚洲电影| 亚洲国产精品久久不卡毛片 | 亚洲午夜影视影院在线观看| 午夜精品福利在线| 精品一区二区三区免费毛片爱| 国产不卡视频在线播放| 91麻豆免费视频| 日韩一二在线观看| 国产欧美一区二区精品性色超碰 | 丝袜脚交一区二区| 国内欧美视频一区二区| 99久久99精品久久久久久| 欧美人妇做爰xxxⅹ性高电影| 欧美精品一区二区三区高清aⅴ| 精品电影一区二区| 中文字幕佐山爱一区二区免费| 首页欧美精品中文字幕| 国产精品1区2区3区| 在线观看www91| 精品国产乱码久久久久久1区2区| 国产精品久久久爽爽爽麻豆色哟哟 | 欧美高清精品3d| 国产欧美一区二区三区在线看蜜臀| 一区二区三区 在线观看视频| 精品在线亚洲视频| 欧美日韩一二三| 国产精品国产三级国产普通话99| 性做久久久久久久久| 成人小视频免费观看| 7777精品久久久大香线蕉| 国产精品午夜久久| 美腿丝袜在线亚洲一区| 色综合天天性综合| 精品国免费一区二区三区| 一区二区三区在线免费| 福利一区在线观看| 欧美成人艳星乳罩| 午夜av一区二区| 91美女视频网站| 国产三级精品视频| 日韩av在线免费观看不卡| 91福利精品视频| 国产精品拍天天在线| 久久99精品国产| 91精品国产综合久久福利 | 国产精品网站一区| 免费不卡在线观看| 欧美日韩高清一区二区| 亚洲美女偷拍久久| 顶级嫩模精品视频在线看| 精品毛片乱码1区2区3区| 五月天亚洲精品| 色呦呦日韩精品| 亚洲精品伦理在线| 91视视频在线观看入口直接观看www| 欧美成人综合网站| 青青草91视频| 日韩欧美在线网站| 亚洲国产中文字幕在线视频综合| 99精品欧美一区二区蜜桃免费| 欧美国产精品一区二区三区| 国产麻豆精品久久一二三| 久久这里只有精品首页| 久久国产生活片100| 精品奇米国产一区二区三区| 免费不卡在线观看| 日韩欧美国产小视频| 久久成人羞羞网站| 26uuu欧美| 国产精品123区| 国产精品国产精品国产专区不蜜| 国产91露脸合集magnet| 日本一区免费视频| 99久久99久久免费精品蜜臀| 亚洲人成电影网站色mp4| 91麻豆文化传媒在线观看| 亚洲裸体在线观看| 在线观看日韩电影| 日韩精品五月天| 91精品午夜视频| 精品一区二区国语对白| 日本一区二区免费在线观看视频 | 激情另类小说区图片区视频区| 欧美刺激午夜性久久久久久久| 国产一区二三区好的| 国产精品无码永久免费888| 91啪九色porn原创视频在线观看| 亚洲黄色尤物视频| 欧美一区二区性放荡片| 国产美女视频91| 亚洲女人的天堂| 日韩一区和二区| 国产精品91一区二区| 亚洲精品国产高清久久伦理二区 | 日韩欧美国产一区二区在线播放 | 中文字幕综合网| 欧美日本一道本在线视频| 青青草原综合久久大伊人精品优势| 精品国产不卡一区二区三区| 丁香天五香天堂综合| 亚洲午夜电影在线| 久久久久久久久岛国免费|