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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? chncalendar.pas

?? 一個很漂亮的農(nóng)歷控件
?? PAS
字號:
unit ChnCalendar;

interface

uses
  Windows, DateUtils, Messages, DateWin, Forms, SysUtils, DateCn, StdCtrls, Classes, Controls, CommCtrl, ComCtrls, Graphics;

type
  tagRGBTRIPLE = packed record
    rgbtBlue: Byte;
    rgbtGreen: Byte;
    rgbtRed: Byte;
  end;
  TRGBTriple = tagRGBTRIPLE;
  PRGBTripleArray = ^TRGBTripleArray;
  TRGBTripleArray = array[0..32767] of TRGBTriple;
  TChnCalendar = class(TCustomControl)
  private
    { Private declarations }
//    isChangeBmp: Boolean;
    CnDate: string;
    ButtonRect: TRect;
    YearEdit,
      MonthEdit,
      DayEdit: TEdit;
    MouseStyle: integer;
    FLastChange: TSystemTime;
    FDateTime: TDateTime;
    FFrameColor: TColor;
    FCnDateColor: TColor;
    FButtonColor: TColor;
    FBackPicture: TbitMap;
    FAlphaBlend: Byte;
    procedure DrawButton(iStyle: integer);
    procedure SetDateTime(const Value: TDateTime);
    procedure WMSize(var Msg: TWMSize); message wm_Size;
    procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
    procedure SetFrameColor(const Value: TColor);
    procedure setCnDateColor(const Value: TColor);
    procedure setButtonColor(const Value: TColor);
    procedure SetBackPicture(const Value: TbitMap);
//    procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
//    procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE;
  protected
    { Protected declarations }
    procedure Paint; override;
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published declarations }
    property DateTime: TDateTime read FDateTime write SetDateTime;
    property FrameColor: TColor read FFrameColor write SetFrameColor;
    property CnDateColor: TColor read FCnDateColor write setCnDateColor;
    property ButtonColor: TColor read FButtonColor write setButtonColor;
    property BackPicture: TbitMap read FBackPicture write SetBackPicture;
    property AlphaBlend: Byte read FAlphaBlend write FAlphaBlend;
    property Color;
    property Align;
    property Anchors;
    property Enabled;
    property Font;
    property ParentBiDiMode;
    property ParentBackground;
    property ParentColor;
    property ParentCtl3D;
    property ParentFont;
    property ParentShowHint;
    property PopupMenu;
    property ShowHint;
    property TabOrder;
    property TabStop;
    property Visible;
    property OnClick;
    property OnDblClick;
    property OnEnter;
    property OnExit;
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
    property OnResize;
  end;

procedure Register;

implementation

uses Grids;

procedure Register;
begin
  RegisterComponents('Standard', [TChnCalendar]);
end;



{ TChnCalendar }


constructor TChnCalendar.Create(AOwner: TComponent);
begin
//  CheckCommonControl(ICC_USEREX_CLASSES);
  inherited Create(AOwner);
//  DateTimeToSystemTime(DateTime, FLastChange);
//  FShowCheckbox := False;
//  FChecked := True;
  SetBounds(0, 0, 186, 15);
  ControlStyle := ControlStyle + [csAcceptsControls];
  FBackPicture := TBitMap.Create;
  Color := clWindow;
  FCnDateColor := clGreen;
  FButtonColor := clPurple;
  FAlphaBlend := 50;
  ParentColor := False;
  TabStop := True;
  YearEdit := TEdit.Create(Self);
  with YearEdit do
  begin
    BorderStyle := bsNone;
    Parent := Self;
    SetBounds(0, 0, 31, 13);
    Left := 3;
    Top := 1;
    Text := FormatDateTime('YYYY', Now);
  end;

  MonthEdit := TEdit.Create(Self);
  with MonthEdit do
  begin
    BorderStyle := bsNone;
    Parent := Self;
    SetBounds(0, 0, 15, 13);
    Left := 41;
    Top := 1;
    Text := FormatDateTime('M', Now);
  end;

  DayEdit := TEdit.Create(Self);
  with DayEdit do
  begin
    BorderStyle := bsNone;
    Parent := Self;
    SetBounds(0, 0, 15, 13);
    Left := 65;
    Top := 1;
    Text := FormatDateTime('D', Now);
  end;

  FRM_Date := TFRM_Date.Create(Application);
  DateTime := Now;
//  CnDate := CnanimalOfYear(DateTime) + CnMonthOfDate(DateTime) + CnDayOfDate(DateTime);

end;


destructor TChnCalendar.Destroy;
begin
  FBackPicture.Free;
  inherited;
end;

procedure TChnCalendar.DrawButton(iStyle: integer);
  procedure Trigon(Canvas: TCanvas; xy1, xy2, xy3: TPoint);
  var
    xy: array[1..4] of TPoint;
  begin
    xy[1] := xy1;
    xy[2] := xy2;
    xy[3] := xy3;
    xy[4] := xy1;
    Canvas.Polygon(xy);
  end;
var
  TrigonLeft: integer;
begin
  Canvas.Brush.Style := bsSolid;
  case iStyle of
    0:
      begin
        Canvas.Pen.Color := FrameColor;
        Canvas.Brush.Color := FButtonColor; // clPurple;
      end;
    1, 2:
      begin
        Canvas.Pen.Color := clBlack;
        Canvas.Brush.Color := $00E47AC8;
      end;
  end;

  Canvas.Rectangle(RECT(Width - 15, 1, Width - 1, Height - 1));

  //畫三角形
  case iStyle of
    0, 1:
      begin
        Canvas.Brush.Color := clWhite;
        Canvas.Pen.Color := clWhite;
      end;
    2:
      begin
        Canvas.Brush.Color := $00E4E4E4;
        Canvas.Pen.Color := $00E4E4E4;
      end;
  end;
  TrigonLeft := Width - 15;
  Trigon(Canvas, Point(TrigonLeft + 3, 5), Point(TrigonLeft + 9, 5), Point(TrigonLeft + 6, 8));

end;

procedure TChnCalendar.Paint;
var
  TextTop: integer;
begin
  inherited;
  YearEdit.Color := color;
  MonthEdit.Color := color;
  DayEdit.Color := Color;
  ButtonRect := RECT(Width - 15, 1, Width - 1, Height - 1);
  Canvas.Pen.Color := FrameColor;
  Canvas.Brush.Color := Color;
  Canvas.FillRect(ClientRect);
  Canvas.Rectangle(ClientRect);
  canvas.Font.Color := Font.Color;
  TextTop := (Height - canvas.TextHeight('A')) div 2;
  Canvas.TextOut(33, TextTop, '-');
  Canvas.TextOut(60, TextTop, '-');
  canvas.Font.Color := FCnDateColor;
  Canvas.TextOut(84, TextTop, CnDate);
  canvas.Font.Color := Font.Color;

  DrawButton(0);
end;

procedure BmpAlphaBlend(var dBmp: TBitMap; sBmp: TBitmap; Pos: TPoint; Alpha: integer; TranColor: TColor = -1);
  function IntToByte(i: Integer): Byte;
  begin
    if i > 255 then
      Result := 255
    else if i < 0 then
      Result := 0
    else
      Result := i;
  end;
  function GetSLColor(pRGB: TRGBTriple): TColor;
  begin
    Result := RGB(pRGB.rgbtRed, pRGB.rgbtGreen, pRGB.rgbtBlue);
  end;
var
  p0, p1: PRGBTripleArray;
  r, g, b, p, x, y: Integer;
begin
  sBmp.PixelFormat := pf24bit;
  dBmp.PixelFormat := pf24bit;
  if TranColor = -1 then
    TranColor := sBmp.Canvas.Pixels[0, 0];
  for y := 0 to sBmp.Height - 1 do
    if (y + Pos.y >= 0) and (y + Pos.Y < dBmp.Height) then
    begin
      p0 := dBmp.ScanLine[y + Pos.y];
      p1 := sBmp.ScanLine[y];
      for x := 0 to sBmp.Width - 1 do
        if (x + pos.X >= 0) and (x + Pos.X < dBmp.Width) then
          if GetSLCOlor(p1[x]) <> TranColor then
          begin
            p0[x + pos.X].rgbtRed := IntToByte((p0[x + pos.X].rgbtRed * (100 - Alpha) +
              p1[x].rgbtRed * Alpha) div 100);

            p0[x + pos.X].rgbtGreen := IntToByte((p0[x + pos.X].rgbtGreen * (100 - Alpha) +
              p1[x].rgbtGreen * Alpha) div 100);

            p0[x + pos.X].rgbtBlue := IntToByte((p0[x + pos.X].rgbtBlue * (100 - Alpha) +
              p1[x].rgbtBlue * Alpha) div 100);
          end;
    end;

end;

procedure TChnCalendar.SetBackPicture(const Value: TbitMap);
begin
  FBackPicture.Assign(Value);

end;

procedure TChnCalendar.setButtonColor(const Value: TColor);
begin
  if FButtonColor <> Value then
  begin
    FButtonColor := Value;
    Invalidate;
  end;
end;

procedure TChnCalendar.setCnDateColor(const Value: TColor);
begin
  if FCnDateColor <> Value then
  begin
    FCnDateColor := Value;
    Invalidate;
  end;
end;

procedure TChnCalendar.SetDateTime(const Value: TDateTime);
begin
  if Value <> FDateTime then
  begin
    FDateTime := Value;
    YearEdit.Text := FormatDateTime('YYYY', FDateTime);
    MonthEdit.Text := FormatDateTime('m', FDateTime);
    DayEdit.Text := FormatDateTime('d', FDateTime);
    CnDate := CnanimalOfYear(DateTime) + CnMonthOfDate(DateTime) + CnDayOfDate(DateTime);
    Invalidate;
  end;
end;

procedure TChnCalendar.SetFrameColor(const Value: TColor);
begin
  FFrameColor := Value;
  Invalidate;
end;

function FormExists(FORM_NAME: string): BOOLEAN;
begin
  if Application.FindComponent(FORM_NAME) = nil then
    RESULT := FALSE
  else
    RESULT := TRUE;
end;

function DayOfMonth(Year, Month: Integer): integer; overload;
begin
  try
    Result := MonthDays[IsLeapYear(Year), Month];
  except
    Result := 0;
  end;
end;

function DayOfMonth(Dates: TDateTime): integer; overload;
var
  Year, Month, Day, Hour: Word;

begin
  DecodeDate(Dates, Year, Month, day);
  Result := MonthDays[IsLeapYear(Year), Month];
end;

function DaysOfMonth(Dates: TDateTime): Integer;
begin
  Result := DayOfMonth(YearOf(Dates), MonthOf(Dates));
end;


function SetDateTime(NYear, NMonth, NDay: Word): TDate;
var
  MyDay: Word;
begin
  MyDay := DayOfMonth(NYear, NMonth);
  if MyDay < NDay then
    NDay := MyDay;
  Result := EncodeDate(NYear, NMonth, NDay);

end;


procedure AdjustDropDownForm(AControl: TControl; HostControl: TControl);
var
  WorkArea: TRect;
  HostP, PDelpta: TPoint;
begin
  SystemParametersInfo(SPI_GETWORKAREA, 0, @WorkArea, 0);
  HostP := HostControl.ClientToScreen(Point(0, 0));
  PDelpta := AControl.ClientToScreen(Point(0, 0));

  AControl.Left := HostP.x;
  AControl.Top := HostP.y + HostControl.Height + 1;

  if (AControl.Width > WorkArea.Right - WorkArea.Left) then
    AControl.Width := WorkArea.Right - WorkArea.Left;

  if (AControl.Left + AControl.Width > WorkArea.Right) then
    AControl.Left := WorkArea.Right - AControl.Width;
  if (AControl.Left < WorkArea.Left) then
    AControl.Left := WorkArea.Left;


  if (AControl.Top + AControl.Height > WorkArea.Bottom) then
  begin
    if (HostP.y - WorkArea.Top > WorkArea.Bottom - HostP.y - HostControl.Height) then
      AControl.Top := HostP.y - AControl.Height;
  end;

  if (AControl.Top < WorkArea.Top) then
  begin
    AControl.Height := AControl.Height - (WorkArea.Top - AControl.Top);
    AControl.Top := WorkArea.Top;
  end;

  if (AControl.Top + AControl.Height > WorkArea.Bottom) then
  begin
    AControl.Height := WorkArea.Bottom - AControl.Top;
  end;

end;


procedure TChnCalendar.WMLButtonDown(var Message: TWMLButtonDown);
var
  xy: TPoint;
  P: TPoint;
  bmp: TbitMap;
begin
  xy := Point(Message.Pos.x, Message.Pos.y);
  if PtInRect(ButtonRect, xy) then
  begin
//    FRM_Date.ShowDateWin(YearEdit, MonthEdit, DayEdit, Self);
    FRM_Date.YearEdit := YearEdit;
    FRM_Date.MonthEdit := MonthEdit;
    FRM_Date.DayEdit := DayEdit;
    MHostControl := Self;
//if isChangeBmp then
    with FRM_Date do
    begin
      Image1.Picture.Bitmap.Assign(FBackPicture);
      Label16.Visible := FBackPicture.Width =0;
      Label20.Visible := FBackPicture.Width =0;
      if Image1.Picture.Graphic <> nil then
      begin
        bmp := TbitMap.Create;
        bmp.Width := Image1.Width;
        bmp.Height := Image1.Height;
        bmp.Canvas.Brush.Color := Color;
        bmp.Canvas.FillRect(RECT(0, 0, bmp.Width,
          bmp.Height));

        P := Point((bmp.Width - FBackPicture.Width) div 2,
          (bmp.Height - FBackPicture.Height) div 2);
        BmpAlphaBlend(bmp, FBackPicture, P, FAlphaBlend);
        Image1.Canvas.Draw(0, 0, bmp);
        bmp.free;

      end;
    end;
//    isChangeBmp := False;

    with FRM_Date do
    begin
      if Image1.Picture.Graphic = nil then
        StaticText1.Caption := 'aaaa';

      YearEdit.Text := IntToStr(StrTOIntDef(YearEdit.Text, YearOf(Date)));
      MonthEdit.Text := IntToStr(StrTOIntDef(MonthEdit.Text, MonthOf(Date)));
      DayEdit.Text := IntToStr(StrTOIntDef(DayEdit.Text, DayOfMonth(Date)));

      if (StrToInt(YearEdit.Text) > 2050) or (StrToInt(YearEdit.Text) < 1901) then
        YearEdit.Text := IntToStr(YearOf(Date));

      if (StrToInt(MonthEdit.Text) > 12) or (StrToInt(MonthEdit.Text) < 1) then
        MonthEdit.Text := IntToStr(MonthOf(Date));

      if StrToInt(DayEdit.Text) > DayOfMonth(StrToInt(YearEdit.Text), StrToInt(MonthEdit.Text)) then
        DayEdit.Text := IntToStr(DayOfMonth(StrToInt(YearEdit.Text), StrToInt(MonthEdit.Text)));

      NDate := EncodeDate(StrToInt(YearEdit.text), StrToInt(MonthEdit.text), StrToInt(DayEdit.text));
    end;
    AdjustDropDownForm(FRM_Date, Self);
    FRM_Date.Show;
//    ShowWindow(MonthWin.Handle, SW_SHOWNORMAL);
  end;
{    if MouseStyle <> 2 then
    begin
      MouseStyle := 2;
      DrawButton(2);
    end;
}
end;
{
procedure TChnCalendar.WMLButtonUp(var Message: TWMLButtonUp);
var
  xy: TPoint;
begin
  xy := Point(Message.Pos.x, Message.Pos.y);
  if PtInRect(ButtonRect, xy) then
  begin
    MouseStyle := 0;
    DrawButton(0);
  end;

end;

procedure TChnCalendar.WMMouseMove(var Message: TWMMouseMove);
var
  xy: TPoint;
begin
  xy := Point(Message.Pos.x, Message.Pos.y);
  if PtInRect(ButtonRect, xy) then
    if MouseStyle <> 1 then
    begin
      MouseStyle := 1;
      DrawButton(1);
    end;

end;
 }

procedure TChnCalendar.WMSize(var Msg: TWMSize);
begin
  YearEdit.Top := (Height - YearEdit.Height) div 2;
  MonthEdit.Top := YearEdit.Top;
  DayEdit.Top := YearEdit.Top;
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人亚洲精品狼色在线| 亚洲精品视频在线看| 国产日产欧美精品一区二区三区| 中文在线免费一区三区高中清不卡| 亚洲精品中文字幕乱码三区| 日韩高清在线电影| 成人美女视频在线看| 欧美日韩免费在线视频| 久久久国产精华| 亚洲五码中文字幕| 国产黑丝在线一区二区三区| 在线国产亚洲欧美| 久久先锋影音av鲁色资源| 亚洲久本草在线中文字幕| 激情亚洲综合在线| 在线欧美日韩精品| 久久久久久久久久看片| 亚洲一区国产视频| 大陆成人av片| 这里只有精品免费| 综合中文字幕亚洲| 激情综合网av| 欧美无砖砖区免费| 国产女人18水真多18精品一级做| 亚洲五码中文字幕| 成人黄色777网| 精品国产免费人成电影在线观看四季| 自拍偷拍国产精品| 国产精品亚洲第一区在线暖暖韩国| 欧美性生交片4| 国产精品―色哟哟| 久久国产日韩欧美精品| 欧美日韩在线观看一区二区 | 一区二区三区日韩欧美| 国产一区二区毛片| 337p亚洲精品色噜噜狠狠| 亚洲啪啪综合av一区二区三区| 国产在线视频一区二区三区| 欧美性猛交xxxx黑人交| 自拍偷拍国产亚洲| 成人中文字幕电影| 2023国产精品自拍| 日本亚洲三级在线| 欧美日韩精品一二三区| 亚洲精品日产精品乱码不卡| 国产一区二区三区最好精华液| 91精品欧美综合在线观看最新 | 91在线免费看| 久久精品一区四区| 蜜臀av国产精品久久久久| 欧美体内she精高潮| 亚洲女人****多毛耸耸8| 粉嫩一区二区三区在线看| 精品少妇一区二区三区免费观看| 午夜激情一区二区| 精品视频在线免费观看| 亚洲三级视频在线观看| www.亚洲色图| 国产精品久久久久aaaa樱花| 国产一区二区伦理| 久久九九久久九九| 国产一区二区伦理| 久久精品一区二区三区不卡 | 久久久久久久久久久久久夜| 韩国女主播一区二区三区| 欧美一级欧美三级| 奇米精品一区二区三区在线观看| 欧美精品一卡两卡| 日日噜噜夜夜狠狠视频欧美人 | 尤物视频一区二区| 色狠狠色噜噜噜综合网| 一区二区三区在线免费观看 | 天使萌一区二区三区免费观看| 欧美性受xxxx黑人xyx| 亚洲五月六月丁香激情| 欧美日韩性生活| 日本视频一区二区| 欧美xxxx老人做受| 国产激情精品久久久第一区二区| 国产视频一区二区在线观看| 懂色av一区二区三区免费观看| 国产午夜精品一区二区三区嫩草| 国产电影一区二区三区| 国产精品免费网站在线观看| 99re热这里只有精品免费视频| 国产精品国产馆在线真实露脸| 97久久超碰国产精品电影| 亚洲免费大片在线观看| 欧美日韩黄色一区二区| 日本中文在线一区| 欧美精品一区二区三区蜜臀| 国产成人精品亚洲777人妖| 国产精品每日更新| 91久久国产最好的精华液| 亚洲福利视频三区| 精品免费99久久| 成人午夜在线播放| 一区二区三区四区蜜桃| 777欧美精品| 黄一区二区三区| 国产精品国产馆在线真实露脸| 在线观看91视频| 久久精品国产亚洲aⅴ| 国产精品美女久久久久久久网站| 91久久国产综合久久| 美女视频免费一区| 亚洲国产精品av| 欧美日韩一区二区三区在线| 免费高清成人在线| 国产精品水嫩水嫩| 欧美性感一类影片在线播放| 久久99精品一区二区三区| 国产精品卡一卡二| 欧美精品电影在线播放| 国产精品一二三在| 亚洲国产日韩一区二区| 2019国产精品| 欧美性一级生活| 国产精品亚洲视频| 调教+趴+乳夹+国产+精品| 国产婷婷色一区二区三区在线| 91电影在线观看| 老司机免费视频一区二区三区| 综合久久久久综合| 欧美哺乳videos| 欧美系列在线观看| 国产成人在线免费观看| 亚洲国产cao| 欧美激情一区二区三区不卡 | 激情综合网天天干| 亚洲综合av网| 国产日韩精品一区二区浪潮av| 欧美亚洲一区二区在线| 丁香一区二区三区| 奇米影视7777精品一区二区| 最新热久久免费视频| 精品免费国产二区三区| 欧美丝袜丝nylons| 成人国产亚洲欧美成人综合网| 日本亚洲视频在线| 亚洲午夜久久久久久久久电影网 | 91免费在线视频观看| 久久精品国产久精国产| 亚洲精品国产一区二区三区四区在线| 精品国产亚洲在线| 欧美电影一区二区| 91精彩视频在线观看| 成人深夜在线观看| 久久99久久精品欧美| 亚洲v日本v欧美v久久精品| 亚洲日本护士毛茸茸| 欧美国产日本视频| 精品99一区二区三区| 在线播放/欧美激情| 91搞黄在线观看| gogo大胆日本视频一区| 国产69精品久久99不卡| 激情小说欧美图片| 精品一区二区三区免费观看| 午夜在线电影亚洲一区| 亚洲国产日韩一级| 一区二区三区四区五区视频在线观看| 国产精品电影一区二区| 欧美激情艳妇裸体舞| 国产日本欧洲亚洲| 久久这里只精品最新地址| 日韩精品中文字幕一区| 欧美一级黄色录像| 91精品福利在线一区二区三区 | 日韩av不卡一区二区| 亚洲国产一区二区视频| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲少妇30p| 最新欧美精品一区二区三区| 中文av字幕一区| 国产欧美一区二区精品秋霞影院 | 国产精品资源在线| 国产综合色在线视频区| 国产尤物一区二区在线| 紧缚捆绑精品一区二区| 国产一区二区三区av电影| 久久99最新地址| 国产一区二区三区视频在线播放| 国内精品伊人久久久久av影院 | 国产欧美视频一区二区| 欧美激情艳妇裸体舞| 中文字幕一区二区三区四区| 中文字幕在线观看不卡视频| 国产精品婷婷午夜在线观看| 中文字幕一区二区三区视频| 亚洲三级在线看| 亚洲高清免费在线| 丝袜诱惑制服诱惑色一区在线观看 | av一区二区不卡| 色婷婷av久久久久久久| 欧美色视频一区| 欧美一二三四区在线| 久久久久久久久免费| 国产精品久久国产精麻豆99网站| 亚洲人123区|