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

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

?? toolctrlseh.pas

?? EHlib CN For Delphi2009
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
      end;
    end else if UseButtonsBitmapCache then
    begin
      BitmapInfo.Size := Point(ARect.Right - ARect.Left, ARect.Bottom - ARect.Top);
      BitmapInfo.Pressed := DownButton <> 0;
      Bitmap := ButtonsBitmapCache.GetButtonBitmap(BitmapInfo);
      StretchBlt(DC, ARect.Left, ARect.Top, ARect.Right - ARect.Left,
        ARect.Bottom - ARect.Top, Bitmap.Canvas.Handle, 0, 0,
        Bitmap.Width, Bitmap.Height, cmSrcCopy);
    end else
      DrawOneButton(DC, Style, ARect, Enabled, Flat, Active, DownButton <> 0, True);

    if IsClipRgn then
    begin
      InflateRect(ARect, 1, 1);
      if not UseButtonsBitmapCache then
      begin
        if r = 0
          then SelectClipRgn(DC, 0)
          else SelectClipRgn(DC, SaveRgn);
        DeleteObject(SaveRgn);
      end;
      Brush := CreateSolidBrush(ColorToRGB(ParentColor));
      FrameRect(DC, ARect, Brush);
      DeleteObject(Brush);
    end;
  end;
end;

function GetDefaultFlatButtonWidth: Integer;
var
  DC: HDC;
  SysMetrics: TTextMetric;
begin
  DC := GetDC(0);
  GetTextMetrics(DC, SysMetrics);
  ReleaseDC(0, DC);
  Result := Round(SysMetrics.tmHeight / 3 * 2);
  if Result mod 2 = 0 then Inc(Result);
  if Result > GetSystemMetrics(SM_CXVSCROLL)
    then Result := GetSystemMetrics(SM_CXVSCROLL);
end;

function DefaultEditButtonHeight(EditButtonWidth: Integer; Flat: Boolean): Integer;
begin
  if Flat
    then Result := Round(EditButtonWidth * 3 / 2)
    else Result := EditButtonWidth;
end;

//{$DEBUGINFO OFF}
function VarEquals(const V1, V2: Variant): Boolean;
var
  i: Integer;
begin
  Result := not (VarIsArray(V1) xor VarIsArray(V2));
  if not Result then Exit;
  Result := False;
  try
    if VarIsArray(V1) and VarIsArray(V2) and
      (VarArrayDimCount(V1) = VarArrayDimCount(V2)) and
      (VarArrayLowBound(V1, 1) = VarArrayLowBound(V2, 1)) and
      (VarArrayHighBound(V1, 1) = VarArrayHighBound(V2, 1))
      then
      for i := VarArrayLowBound(V1, 1) to VarArrayHighBound(V1, 1) do
      begin
        Result := V1[i] = V2[i];
        if not Result then Exit;
      end
    else
      begin
        Result := not (VarIsEmpty(V1) xor VarIsEmpty(V2));
        if not Result
          then Exit
          else Result := (V1 = V2);
      end;
  except
  end;
end;
//{$DEBUGINFO ON}


{$IFNDEF EH_LIB_6}

function VarCompareValue(const A, B: Variant): TVariantRelationship;
const
  CTruth: array [Boolean] of TVariantRelationship = (vrNotEqual, vrEqual);
var
  LA, LB: TVarData;
begin
  LA := TVarData(A);
  LB := TVarData(B);
  if LA.VType = varEmpty then
    Result := CTruth[LB.VType = varEmpty]
  else if LA.VType = varNull then
    Result := CTruth[LB.VType = varNull]
  else if LB.VType in [varEmpty, varNull] then
    Result := vrNotEqual
  else if A = B then
    Result := vrEqual
  else if A < B then
    Result := vrLessThan
  else
    Result := vrGreaterThan;
end;

{$ENDIF}

function DBVarCompareOneValue(const A, B: Variant): TVariantRelationship;
begin
  if VarIsNull(A) and VarIsNull(B) then
    Result := vrEqual
  else if VarIsNull(A) then
    Result := vrLessThan
  else if VarIsNull(B) then
    Result := vrGreaterThan
  else Result := VarCompareValue(A, B);
end;

function DBVarCompareValue(const A, B: Variant): TVariantRelationship;
var
  i: Integer;
  IsComparable: Boolean;
begin
  Result := vrNotEqual;
  IsComparable := not (VarIsArray(A) xor VarIsArray(B));
  if not IsComparable then Exit;
  if VarIsArray(A) and VarIsArray(B) and
    (VarArrayDimCount(A) = VarArrayDimCount(B)) and
    (VarArrayLowBound(A, 1) = VarArrayLowBound(B, 1)) and
    (VarArrayHighBound(A, 1) = VarArrayHighBound(B, 1))
    then
    for i := VarArrayLowBound(A, 1) to VarArrayHighBound(A, 1) do
    begin
      Result := DBVarCompareOneValue(A[i], B[i]);
      if Result <> vrEqual then Exit;
    end
  else
    Result := DBVarCompareOneValue(A, B);
end;

function GetRGBColor(Value: TColor): DWORD;
begin
  Result := ColorToRGB(Value);
  case Result of
    clNone: Result := CLR_NONE;
    clDefault: Result := CLR_DEFAULT;
  end;
end;

procedure DrawImage(DC: HDC; ARect: TRect; Images: TCustomImageList;
  ImageIndex: Integer; Selected: Boolean);
const
  ImageTypes: array[TImageType] of Longint = (0, ILD_MASK);
  ImageSelTypes: array[Boolean] of Longint = (0, ILD_SELECTED);
var CheckedRect, AUnionRect: TRect;
  OldRectRgn, RectRgn: HRGN;
  r, x, y: Integer;
  procedure DrawIm;
  var ABlendColor: TColor;
  begin
    with Images do
      if HandleAllocated then
      begin
        if Selected then ABlendColor := clHighlight
        else ABlendColor := BlendColor;
        ImageList_DrawEx(Handle, ImageIndex, DC, x, y, 0, 0,
          GetRGBColor(BkColor), GetRGBColor(ABlendColor),
          ImageTypes[ImageType] or ImageSelTypes[Selected]);
      end;
  end;
begin
  with Images do
  begin
    x := (ARect.Right + ARect.Left - Images.Width) div 2;
    y := (ARect.Bottom + ARect.Top - Images.Height) div 2;
    CheckedRect := Rect(X, Y, X + Images.Width, Y + Images.Height);
    UnionRect(AUnionRect, CheckedRect, ARect);
    if EqualRect(AUnionRect, ARect) then // ARect containt image
      DrawIm
    else
    begin // Need clip
      OldRectRgn := CreateRectRgn(0, 0, 0, 0);
      r := GetClipRgn(DC, OldRectRgn);
      RectRgn := CreateRectRgn(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom);
      SelectClipRgn(DC, RectRgn);
      DeleteObject(RectRgn);

      DrawIm;

      if r = 0
        then SelectClipRgn(DC, 0)
        else SelectClipRgn(DC, OldRectRgn);
      DeleteObject(OldRectRgn);
    end;
  end;
end;

function AlignDropDownWindowRect(MasterAbsRect: TRect; DropDownWin: TWinControl; Align: TDropDownAlign): TPoint;
var
  P: TPoint;
  Y: Integer;
  WorkArea: TRect;
  MonInfo: TMonitorInfo;
begin
  P := MasterAbsRect.TopLeft;
  Y := P.Y + (MasterAbsRect.Bottom - MasterAbsRect.Top);

  MonInfo.cbSize := SizeOf(MonInfo);
{$IFDEF CIL}
  GetMonitorInfo(MonitorFromRect(MasterAbsRect, MONITOR_DEFAULTTONEAREST), MonInfo);
{$ELSE}
  GetMonitorInfo(MonitorFromRect(@MasterAbsRect, MONITOR_DEFAULTTONEAREST), @MonInfo);
{$ENDIF}
  WorkArea := MonInfo.rcWork;
//  SystemParametersInfo(SPI_GETWORKAREA, 0, Pointer(@WorkArea), 0);

  if ((Y + DropDownWin.Height > WorkArea.Bottom) and (P.Y - DropDownWin.Height >= WorkArea.Top)) or
    ((P.Y - DropDownWin.Height < WorkArea.Top) and (WorkArea.Bottom - Y < P.Y - WorkArea.Top))
    then
  begin
    if P.Y - DropDownWin.Height < WorkArea.Top then
      DropDownWin.Height := P.Y - WorkArea.Top;
    Y := P.Y - DropDownWin.Height;
    DropDownWin.Perform(cm_SetSizeGripChangePosition, Ord(sgcpToTop), 0);
  end else
  begin
    if Y + DropDownWin.Height > WorkArea.Bottom then
      DropDownWin.Height := WorkArea.Bottom - Y;
    DropDownWin.Perform(cm_SetSizeGripChangePosition, Ord(sgcpToBottom), 0);
  end;

  case Align of
    daRight: Dec(P.X, DropDownWin.Width - (MasterAbsRect.Right - MasterAbsRect.Left));
    daCenter: Dec(P.X, (DropDownWin.Width - (MasterAbsRect.Right - MasterAbsRect.Left)) div 2);
  end;

  if (DropDownWin.Width > WorkArea.Right - WorkArea.Left) then
    DropDownWin.Width := WorkArea.Right - WorkArea.Left;
  if (P.X + DropDownWin.Width > WorkArea.Right) then
  begin
    P.X := WorkArea.Right - DropDownWin.Width;
    DropDownWin.Perform(cm_SetSizeGripChangePosition, Ord(sgcpToLeft), 0);
  end
  else if P.X < WorkArea.Left then
  begin
    P.X := WorkArea.Left;
    DropDownWin.Perform(cm_SetSizeGripChangePosition, Ord(sgcpToRight), 0);
  end else if Align = daRight then
    DropDownWin.Perform(cm_SetSizeGripChangePosition, Ord(sgcpToLeft), 0)
  else
    DropDownWin.Perform(cm_SetSizeGripChangePosition, Ord(sgcpToRight), 0);

  Result := Point(P.X, Y);
end;

function AlignDropDownWindow(MasterWin, DropDownWin: TWinControl; Align: TDropDownAlign): TPoint;
var
  MasterAbsRect: TRect;
begin
  MasterAbsRect.TopLeft := MasterWin.Parent.ClientToScreen(Point(MasterWin.Left, MasterWin.Top));
  MasterAbsRect.Bottom := MasterAbsRect.Top + MasterWin.Height;
  MasterAbsRect.Right := MasterAbsRect.Left + MasterWin.Width;
  Result := AlignDropDownWindowRect(MasterAbsRect, DropDownWin, Align);
end;

type
  TIntArray = array[0..16384] of Integer;
  PIntArray = ^TIntArray;

procedure DrawDotLine(Canvas: TCanvas; FromPoint: TPoint; ALength: Integer;
  Along: Boolean; BackDot: Boolean);
var
  Points: array of TPoint;
  StrokeList: array of DWORD;
  DotWidth, DotCount, I: Integer;
begin
//  Canvas.Pen.Style
  if Along then
  begin
    if ((FromPoint.X mod 2) <> (FromPoint.Y mod 2)) xor BackDot then
    begin
      Inc(FromPoint.X);
      Dec(ALength);
    end;
  end else
  begin
    if ((FromPoint.X mod 2) <> (FromPoint.Y mod 2)) xor BackDot then
    begin
      Inc(FromPoint.Y);
      Dec(ALength);
    end;
  end;

  DotWidth := Canvas.Pen.Width;
  DotCount := ALength div (2 * DotWidth);
  if DotCount < 0 then Exit;
  if ALength mod 2 <> 0 then
    Inc(DotCount);
  SetLength(Points, DotCount * 2); // two points per stroke
  SetLength(StrokeList, DotCount);
  for I := 0 to DotCount - 1 do
    StrokeList[I] := 2;
  if Along then
    for I := 0 to DotCount - 1 do
    begin
      Points[I * 2] := Point(FromPoint.X, FromPoint.Y);
      Points[I * 2 + 1] := Point(FromPoint.X + 1, FromPoint.Y);
      Inc(FromPoint.X, (2 * DotWidth));
    end
  else
    for I := 0 to DotCount - 1 do
    begin
      Points[I * 2] := Point(FromPoint.X, FromPoint.Y);
      Points[I * 2 + 1] := Point(FromPoint.X, FromPoint.Y + 1);
      Inc(FromPoint.Y, (2 * DotWidth));
    end;

{$IFDEF CIL}
  PolyPolyLine(Canvas.Handle, Points, StrokeList, DotCount);
{$ELSE}
  PolyPolyLine(Canvas.Handle, PIntArray(Points)^, PIntArray(StrokeList)^, DotCount);
{$ENDIF}
end;

procedure DrawTreeElement(Canvas: TCanvas; ARect: TRect;
  TreeElement: TTreeElementEh; BackDot: Boolean; ScaleX, ScaleY: Double;
  RightToLeft: Boolean);
var
  ABoxRect: TRect;
//  ABoxRectWidth: Integer;
  ACenter: TPoint;
  X1, X2, X4, Y1, Y2, Y4: Integer;
begin
  ACenter.X := (ARect.Right + ARect.Left) div 2;
  ACenter.Y := (ARect.Bottom + ARect.Top) div 2;
  X1 := Trunc(ScaleX);
  X2 := Trunc(ScaleX*2);
  X4 := Trunc(ScaleX*4);
  Y1 := Trunc(ScaleY);
  Y2 := Trunc(ScaleY*2);
  Y4 := Trunc(ScaleY*4);

  with Canvas do
  begin
    ABoxRect := Rect(ACenter.X-X4, ACenter.Y-Y4, ACenter.X+X4+1, ACenter.Y+Y4+1);
//    ABoxRectWidth := ABoxRect.Right - ABoxRect.Left;
    if TreeElement in [tehMinusUpDown .. tehPlusDown] then
    begin
      Brush.Color := clWindow;
      Pen.Color := clBtnShadow;
      Pen.Style := psSolid;
      if RightToLeft
        then Rectangle(ABoxRect.Left-1, ABoxRect.Top, ABoxRect.Right-1, ABoxRect.Bottom)
        else Rectangle(ABoxRect.Left, ABoxRect.Top, ABoxRect.Right, ABoxRect.Bottom);
      Pen.Color := clWindowText;
      MoveTo(ABoxRect.Left + X2, ACenter.Y);
      LineTo(ABoxRect.Right - X2, ACenter.Y);

      if TreeElement in [tehPlusUpDown, tehPlusUp, tehPlusDown] then
      begin
        MoveTo(ACenter.X, ABoxRect.Top + Y2);
        LineTo(ACenter.X, ABoxRect.Bottom - Y2);
      end;

      Pen.Color := clBtnShadow;
      DrawDotLine(Canvas, Point(ABoxRect.Right + X1, ACenter.Y),
       (ARect.Right - ABoxRect.Right), True, False);

      if TreeElement in [tehMinusUpDown, tehM

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆国产精品久久| 欧美一区二区三区人| 日日摸夜夜添夜夜添亚洲女人| 精品国产网站在线观看| 91麻豆精品一区二区三区| 日本美女一区二区| 亚洲欧洲综合另类在线| 精品国产伦一区二区三区观看方式 | 亚洲一区二区三区国产| 久久久亚洲午夜电影| 欧美日韩国产大片| 91在线视频18| 国产精品99久| 久久综合综合久久综合| 亚洲综合一区二区| 国产精品久久久久久久久动漫| 欧美一级高清大全免费观看| 91久色porny | 三级欧美在线一区| 一区二区三区四区五区视频在线观看 | 另类小说图片综合网| 1024成人网色www| 欧美极品美女视频| 久久亚洲私人国产精品va媚药| 在线播放视频一区| 欧美日韩在线观看一区二区 | 久久精品国产亚洲aⅴ| 久久爱另类一区二区小说| 一区二区三区不卡视频| 国产精品的网站| 国产精品久久久久精k8| 国产亚洲成aⅴ人片在线观看| 欧美成人一区二区三区| 91精品久久久久久久99蜜桃| 欧美性xxxxxxxx| 欧美在线视频全部完| 一本高清dvd不卡在线观看| 91在线丨porny丨国产| 国产91富婆露脸刺激对白| 韩国精品免费视频| 韩国在线一区二区| 国产一区二区成人久久免费影院| 久久精品国产在热久久| 九色综合狠狠综合久久| 国产一区二区三区四区在线观看 | 成人av在线影院| 国产91丝袜在线18| 国产成人精品在线看| 高清不卡在线观看| av午夜精品一区二区三区| 成人免费黄色在线| 91视频国产观看| 在线一区二区三区做爰视频网站| 在线中文字幕不卡| 欧美日韩一区三区| 欧美videossexotv100| 26uuu色噜噜精品一区二区| 久久九九久精品国产免费直播| 国产三级欧美三级日产三级99| 国产欧美精品一区二区色综合朱莉| 国产精品无遮挡| 亚洲美女淫视频| 亚洲成av人在线观看| 久久国产免费看| 成人免费av资源| 91国产福利在线| 日韩美女主播在线视频一区二区三区| 日韩精品一区二区三区视频播放 | 久久久不卡网国产精品一区| 日本一区二区三区免费乱视频| 国产精品每日更新在线播放网址| 一区二区三区丝袜| 日本不卡的三区四区五区| 91在线播放网址| 51精品秘密在线观看| 久久天堂av综合合色蜜桃网 | 青青青伊人色综合久久| 国产一区欧美一区| 91香蕉视频在线| 欧美一激情一区二区三区| 久久麻豆一区二区| 亚洲综合网站在线观看| 韩国精品主播一区二区在线观看 | 91久久精品网| 欧美精品一区二区三区在线| 最新成人av在线| 天涯成人国产亚洲精品一区av| 国产精品自拍网站| 欧美一a一片一级一片| 久久婷婷综合激情| 亚洲电影一区二区三区| 国产成人亚洲综合a∨猫咪| 欧美在线色视频| 久久久久国产精品麻豆| 亚洲成a人片在线不卡一二三区| 国产一区二区不卡老阿姨| 欧美色老头old∨ideo| 久久久久久久免费视频了| 一区二区三区电影在线播| 国产精一品亚洲二区在线视频| 欧美亚洲愉拍一区二区| 日本一区二区三区电影| 蜜臂av日日欢夜夜爽一区| av亚洲精华国产精华精华| 欧美精品一二三| 亚洲欧洲性图库| 国产毛片一区二区| 在线不卡免费av| 一区二区在线电影| 国产精品69毛片高清亚洲| 欧美午夜片在线看| 18成人在线观看| 国产成人精品影视| 精品日产卡一卡二卡麻豆| 午夜精品成人在线视频| 色婷婷久久一区二区三区麻豆| 欧美激情一区二区| 久久91精品久久久久久秒播| 欧美高清一级片在线| 樱桃视频在线观看一区| 99亚偷拍自图区亚洲| 久久久www成人免费毛片麻豆 | 日本免费新一区视频| 在线观看区一区二| 亚洲免费观看高清完整版在线观看| 国产激情视频一区二区在线观看 | 国产一区二区看久久| 日韩精品中文字幕一区| 日韩极品在线观看| 欧美亚洲尤物久久| 一区二区三区不卡在线观看| 色综合网色综合| 亚洲视频一区二区在线| 91香蕉视频黄| 美国三级日本三级久久99| 在线看不卡av| 一区二区三区视频在线看| 一本久久a久久免费精品不卡| 日韩毛片精品高清免费| 99国产精品久久久久久久久久| 国产精品免费丝袜| 91色|porny| 亚洲综合视频网| 欧美人体做爰大胆视频| 亚洲成人免费看| 91精品国产91久久久久久一区二区| 婷婷综合另类小说色区| 日韩亚洲电影在线| 美女免费视频一区| 2020国产精品| 成人美女视频在线看| 中文字幕一区二区三区不卡| 色八戒一区二区三区| 亚洲国产成人va在线观看天堂 | 精品国产青草久久久久福利| 久久66热偷产精品| 国产婷婷一区二区| www.成人在线| 亚洲国产视频在线| 精品捆绑美女sm三区| 成人精品视频.| 亚洲精品日韩综合观看成人91| 精品视频一区 二区 三区| 麻豆国产欧美日韩综合精品二区| 精品88久久久久88久久久| 成人一级视频在线观看| 亚洲一区二区三区四区在线 | 另类人妖一区二区av| 久久久久成人黄色影片| 一本色道亚洲精品aⅴ| 婷婷综合久久一区二区三区| 久久网站最新地址| 在线观看三级视频欧美| 久久国产综合精品| 亚洲人成影院在线观看| 91精品国产乱码久久蜜臀| 国产成人午夜视频| 亚洲国产日产av| 国产亚洲短视频| 欧美日韩精品专区| 国产高清在线精品| 亚洲午夜影视影院在线观看| 欧美成人艳星乳罩| 色综合久久久久综合99| 精品一区二区三区免费| 亚洲激情六月丁香| 久久精品视频一区二区| 欧美丰满一区二区免费视频| 风间由美一区二区av101| 日欧美一区二区| 国产精品麻豆久久久| 欧美一级久久久久久久大片| 成人动漫一区二区在线| 久久精品久久精品| 亚洲一区av在线| 国产精品激情偷乱一区二区∴| 日韩欧美一二三四区| 色狠狠av一区二区三区| 韩国成人精品a∨在线观看| 亚洲高清免费视频|