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

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

?? flatutilitys.pas

?? Oracle數據庫備份 寫入日志文件;并附有要使用的控件。
?? PAS
字號:
unit FlatUtilitys;

interface

{$I DFS.inc}

uses Windows, Classes, Graphics, Buttons, Messages, Controls, HSLUtils;

{$IFNDEF DFS_COMPILER_4_UP}
const
  MSH_MOUSEWHEEL = 'MSWHEEL_ROLLMSG';
  WM_MOUSEWHEEL    = $020A;
  WHEEL_DELTA      = 120;
  WHEEL_PAGESCROLL = MAXDWORD;

  SM_MOUSEWHEELPRESENT    = 75;
  SPI_GETWHEELSCROLLLINES = 104;
  SPI_SETWHEELSCROLLLINES = 105;

type
  TWMMouseWheel = record
    Msg: Cardinal;
    Keys: Word;
    Delta: Word;
    case Integer of
      0: (
        XPos: Smallint;
        YPos: Smallint);
      1: (
        Pos: TSmallPoint;
        Result: Longint);
  end;
{$ENDIF}

type
  TScrollType = (up, down);
  TColorCalcType = (lighten, darken);
  TCheckBoxLayout = (checkboxLeft, checkboxRight);
  TRadioButtonLayout = (radioLeft, radioRight);
  {$IFNDEF DFS_DELPHI_4_UP}
  TProgressBarOrientation = (pbHorizontal, pbVertical);
  {$ENDIF}
  TFlatTabPosition = (tpTop, tpBottom);
  TArrowPos = (NE, NW, SE, SW);
  TNumGlyphs = 1..4;
  TAdvColors = 0..100;
  TGroupBoxBorder = (brFull, brOnlyTopLine);
  TTransparentMode = (tmAlways, tmNotFocused, tmNone);

procedure Frame3DBorder (Canvas: TCanvas; Rect: TRect; TopColor, BottomColor: TColor; Width: Integer);
procedure DrawTransparentBmp (Cnv: TCanvas; x, y: Integer; Bmp: TBitmap; clTransparent: TColor);

procedure DrawParentImage (Control: TControl; Dest: TCanvas);

function CreateDisabledBitmap (FOriginal: TBitmap; OutlineColor, BackColor, HighlightColor, ShadowColor: TColor; DrawHighlight: Boolean): TBitmap;
function CalcAdvancedColor (ParentColor, OriginalColor: TColor; Percent: Byte; ColorType: TColorCalcType): TColor;
procedure CalcButtonLayout (Canvas: TCanvas; const Client: TRect; const Offset: TPoint; Layout: TButtonLayout; Spacing, Margin: Integer; FGlyph: TBitmap; FNumGlyphs: Integer; const Caption: string; var TextBounds: TRect; var GlyphPos: TPoint);
function Min (val1, val2: Word): Word;
function GetFontMetrics (Font: TFont): TTextMetric;
function GetFontHeight (Font: TFont): Integer;
function RectInRect (R1, R2: TRect): Boolean;

implementation

procedure Frame3DBorder (Canvas: TCanvas; Rect: TRect; TopColor, BottomColor: TColor; Width: Integer);

  procedure DoRect;
  var
    TopRight, BottomLeft: TPoint;
  begin
    with Canvas, Rect do
    begin
      TopRight.X := Right;
      TopRight.Y := Top;
      BottomLeft.X := Left;
      BottomLeft.Y := Bottom;
      Pen.Color := TopColor;
      PolyLine([BottomLeft, TopLeft, TopRight]);
      Pen.Color := BottomColor;
      Dec(BottomLeft.X);
      PolyLine([TopRight, BottomRight, BottomLeft]);
    end;
  end;

begin
  Canvas.Pen.Width := 1;
  Dec(Rect.Bottom); Dec(Rect.Right);
  while Width > 0 do
  begin
    Dec(Width);
    DoRect;
    InflateRect(Rect, -1, -1);
  end;
  Inc(Rect.Bottom); Inc(Rect.Right);
end;

procedure DrawTransparentBmp (Cnv: TCanvas; x, y: Integer; Bmp: TBitmap; clTransparent: TColor);
var
  bmpXOR, bmpAND, bmpINVAND, bmpTarget: TBitmap;
  oldcol: Longint; 
begin 
  bmpAND := TBitmap.Create;
  bmpINVAND := TBitmap.Create;
  bmpXOR := TBitmap.Create;
  bmpTarget := TBitmap.Create;
  try
    bmpAND.Width := Bmp.Width;
    bmpAND.Height := Bmp.Height; 
    bmpAND.Monochrome := True;
    oldcol := SetBkColor(Bmp.Canvas.Handle, ColorToRGB(clTransparent)); 
    BitBlt(bmpAND.Canvas.Handle, 0, 0, Bmp.Width ,Bmp.Height, Bmp.Canvas.Handle, 0, 0, SRCCOPY);
    SetBkColor(Bmp.Canvas.Handle, oldcol);

    bmpINVAND.Width := Bmp.Width;
    bmpINVAND.Height := Bmp.Height; 
    bmpINVAND.Monochrome := True; 
    BitBlt(bmpINVAND.Canvas.Handle, 0, 0,Bmp.Width,Bmp.Height, bmpAND.Canvas.Handle, 0, 0, NOTSRCCOPY);

    bmpXOR.Width := Bmp.Width;
    bmpXOR.Height := Bmp.Height; 
    BitBlt(bmpXOR.Canvas.Handle, 0, 0,Bmp.Width,Bmp.Height, Bmp.Canvas.Handle, 0, 0, SRCCOPY);
    BitBlt(bmpXOR.Canvas.Handle, 0, 0,Bmp.Width,Bmp.Height, bmpINVAND.Canvas.Handle, 0, 0, SRCAND);

    bmpTarget.Width := Bmp.Width;
    bmpTarget.Height := Bmp.Height; 
    BitBlt(bmpTarget.Canvas.Handle, 0, 0,Bmp.Width,Bmp.Height, Cnv.Handle, x, y, SRCCOPY);
    BitBlt(bmpTarget.Canvas.Handle, 0, 0,Bmp.Width,Bmp.Height, bmpAND.Canvas.Handle, 0, 0, SRCAND);
    BitBlt(bmpTarget.Canvas.Handle, 0, 0,Bmp.Width,Bmp.Height, bmpXOR.Canvas.Handle, 0, 0, SRCINVERT);

    BitBlt(Cnv.Handle, x, y, Bmp.Width, Bmp.Height, bmpTarget.Canvas.Handle, 0, 0, SRCCOPY);
  finally 
    bmpXOR.Free;
    bmpAND.Free; 
    bmpINVAND.Free; 
    bmpTarget.Free; 
  end; 
end; 

procedure DrawParentImage(Control: TControl; Dest: TCanvas);
var
  SaveIndex: Integer;
  DC: HDC;
  Position: TPoint;
begin
  with Control do
  begin
    if Parent = nil then
      Exit;
    DC := Dest.Handle;
    SaveIndex := SaveDC(DC);
    {$IFDEF DFS_COMPILER_2}
    GetViewportOrgEx(DC, @Position);
    {$ELSE}
    GetViewportOrgEx(DC, Position);
    {$ENDIF}
    SetViewportOrgEx(DC, Position.X - Left, Position.Y - Top, nil);
    IntersectClipRect(DC, 0, 0, Parent.ClientWidth, Parent.ClientHeight);
    Parent.Perform(WM_ERASEBKGND, DC, 0);
    Parent.Perform(WM_PAINT, DC, 0);
    RestoreDC(DC, SaveIndex);
  end;
end;

function CreateDisabledBitmap(FOriginal: TBitmap; OutlineColor, BackColor, HighlightColor, ShadowColor: TColor; DrawHighlight: Boolean): TBitmap;
const
  ROP_DSPDxax = $00E20746;
var
  MonoBmp: TBitmap;
  IRect: TRect;
begin
  IRect := Rect(0, 0, FOriginal.Width, FOriginal.Height);
  Result := TBitmap.Create;
  try
    Result.Width := FOriginal.Width;
    Result.Height := FOriginal.Height;
    MonoBmp := TBitmap.Create;
    try
      with MonoBmp do begin
        Width := FOriginal.Width;
        Height := FOriginal.Height;
        Canvas.CopyRect(IRect, FOriginal.Canvas, IRect);
{$IFDEF DFS_DELPHI_3_UP}
        HandleType := bmDDB;
{$ENDIF}
        Canvas.Brush.Color := OutlineColor;
        if Monochrome then begin
          Canvas.Font.Color := clWhite;
          Monochrome := False;
          Canvas.Brush.Color := clWhite;
        end;
        Monochrome := True;
      end;
      with Result.Canvas do begin
        Brush.Color := BackColor;
        FillRect(IRect);
        if DrawHighlight then begin
          Brush.Color := HighlightColor;
          SetTextColor(Handle, clBlack);
          SetBkColor(Handle, clWhite);
          BitBlt(Handle, 1, 1, IRect.Right - IRect.Left, IRect.Bottom - IRect.Top, MonoBmp.Canvas.Handle, 0, 0, ROP_DSPDxax);
        end;
        Brush.Color := ShadowColor;
        SetTextColor(Handle, clBlack);
        SetBkColor(Handle, clWhite);
        BitBlt(Handle, 0, 0, IRect.Right - IRect.Left, IRect.Bottom - IRect.Top, MonoBmp.Canvas.Handle, 0, 0, ROP_DSPDxax);
      end;
    finally
      MonoBmp.Free;
    end;
  except
    Result.Free;
    raise;
  end;
end;

function CalcAdvancedColor (ParentColor, OriginalColor: TColor; Percent: Byte; ColorType: TColorCalcType): TColor;
var
  H, S, L: integer;
begin
  if Percent <> 0 then
  begin
    RGBtoHSLRange(ColorToRGB(ParentColor), H, S, L);
    inc(L, 10);
    if ColorType = lighten then
      if L + Percent > 100 then
        L := 100
      else
        inc(L, Percent)
    else
      if L - Percent < 0 then
        L := 0
      else
        dec(L, Percent);

    Result := HSLRangeToRGB(H, S, L);
  end
  else
    Result := OriginalColor;
end;

procedure CalcButtonLayout (Canvas: TCanvas; const Client: TRect; const Offset: TPoint; Layout: TButtonLayout;
  Spacing, Margin: Integer; FGlyph: TBitmap; FNumGlyphs: Integer;
  const Caption: string; var TextBounds: TRect; var GlyphPos: TPoint);
var
  TextPos: TPoint;
  ClientSize, GlyphSize, TextSize: TPoint;
  TotalSize: TPoint;
begin
  // calculate the item sizes
  ClientSize := Point(Client.Right - Client.Left, Client.Bottom - Client.Top);

  if FGlyph <> nil then
    GlyphSize := Point(FGlyph.Width div FNumGlyphs, FGlyph.Height)
  else
    GlyphSize := Point(0, 0);

  if Length(Caption) > 0 then
    begin
      TextBounds := Rect(0, 0, Client.Right - Client.Left, 0);
      DrawText(Canvas.Handle, PChar(Caption), Length(Caption), TextBounds, DT_CALCRECT or DT_SINGLELINE);
      TextSize := Point(TextBounds.Right - TextBounds.Left, TextBounds.Bottom - TextBounds.Top);
    end
  else
    begin
      TextBounds := Rect(0, 0, 0, 0);
      TextSize := Point(0, 0);
    end;

  // If the layout has the glyph on the right or the left, then both the
  // text and the glyph are centered vertically.  If the glyph is on the top
  // or the bottom, then both the text and the glyph are centered horizontally.
  if Layout in [blGlyphLeft, blGlyphRight] then
  begin
    GlyphPos.Y := (ClientSize.Y - GlyphSize.Y + 1) div 2;
    TextPos.Y := (ClientSize.Y - TextSize.Y + 1) div 2;
  end
  else
  begin
    GlyphPos.X := (ClientSize.X - GlyphSize.X + 1) div 2;
    TextPos.X := (ClientSize.X - TextSize.X + 1) div 2;
  end;

  // if there is no text or no bitmap, then Spacing is irrelevant
  if (TextSize.X = 0) or (GlyphSize.X = 0) then
    Spacing := 0;

  // adjust Margin and Spacing
  if Margin = -1 then
  begin
    if Spacing = -1 then
    begin
      TotalSize := Point(GlyphSize.X + TextSize.X, GlyphSize.Y + TextSize.Y);
      if Layout in [blGlyphLeft, blGlyphRight] then
        Margin := (ClientSize.X - TotalSize.X) div 3
      else
        Margin := (ClientSize.Y - TotalSize.Y) div 3;
      Spacing := Margin;
    end
    else
    begin
      TotalSize := Point(GlyphSize.X + Spacing + TextSize.X, GlyphSize.Y + Spacing + TextSize.Y);
      if Layout in [blGlyphLeft, blGlyphRight] then
        Margin := (ClientSize.X - TotalSize.X + 1) div 2
      else
        Margin := (ClientSize.Y - TotalSize.Y + 1) div 2;
    end;
  end
  else
  begin
    if Spacing = -1 then
    begin
      TotalSize := Point(ClientSize.X - (Margin + GlyphSize.X), ClientSize.Y - (Margin + GlyphSize.Y));
      if Layout in [blGlyphLeft, blGlyphRight] then
        Spacing := (TotalSize.X - TextSize.X) div 2
      else
        Spacing := (TotalSize.Y - TextSize.Y) div 2;
    end;
  end;

  case Layout of
    blGlyphLeft:
    begin
      GlyphPos.X := Margin;
      TextPos.X := GlyphPos.X + GlyphSize.X + Spacing;
    end;
    blGlyphRight:
    begin
      GlyphPos.X := ClientSize.X - Margin - GlyphSize.X;
      TextPos.X := GlyphPos.X - Spacing - TextSize.X;
    end;
    blGlyphTop:
    begin
      GlyphPos.Y := Margin;
      TextPos.Y := GlyphPos.Y + GlyphSize.Y + Spacing;
    end;
    blGlyphBottom:
    begin
      GlyphPos.Y := ClientSize.Y - Margin - GlyphSize.Y;
      TextPos.Y := GlyphPos.Y - Spacing - TextSize.Y;
    end;
  end;

  // fixup the result variables
  with GlyphPos do
  begin
    Inc(X, Client.Left + Offset.X);
    Inc(Y, Client.Top + Offset.Y);
  end;
  OffsetRect(TextBounds, TextPos.X + Client.Left + Offset.X, TextPos.Y + Client.Top + Offset.X);
end;

function Min(val1, val2: Word): Word;
begin
  Result := val1;
  if val1 > val2 then
    Result := val2;
end;

function GetFontMetrics(Font: TFont): TTextMetric;
var
  DC: HDC;
  SaveFont: HFont;
begin
  DC := GetDC(0);
  SaveFont := SelectObject(DC, Font.Handle);
  GetTextMetrics(DC, Result);
  SelectObject(DC, SaveFont);
  ReleaseDC(0, DC);
end;

function GetFontHeight(Font: TFont): Integer;
begin
  with GetFontMetrics(Font) do
    Result := Round(tmHeight + tmHeight / 8);
end;

function RectInRect(R1, R2: TRect): Boolean;
begin
  Result := IntersectRect(R1, R1, R2);
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区啪啪| 国产成人日日夜夜| 国产精品久久二区二区| 一区二区激情视频| **欧美大码日韩| 国产精品毛片无遮挡高清| 久久久久免费观看| 欧美激情综合在线| 国产精品短视频| 国产精品电影院| 椎名由奈av一区二区三区| 亚洲天堂成人在线观看| 一区二区三区在线视频免费观看 | 亚洲一区二区三区四区中文字幕| 国产精品高潮呻吟| 亚洲激情校园春色| 亚洲一区二区三区四区在线观看| 亚洲福中文字幕伊人影院| 亚洲国产日韩综合久久精品| 亚洲www啪成人一区二区麻豆| 日韩和欧美的一区| 国产精品综合二区| 97久久精品人人做人人爽50路| 在线视频一区二区三区| 在线播放日韩导航| 久久免费精品国产久精品久久久久| 国产日韩欧美a| 亚洲一二三区不卡| 久草在线在线精品观看| 国产91色综合久久免费分享| 91老司机福利 在线| 91精品黄色片免费大全| 久久久99免费| 玉米视频成人免费看| 免费看日韩精品| 不卡av电影在线播放| 欧美日韩高清不卡| 久久久高清一区二区三区| 亚洲一级二级三级在线免费观看| 免费在线看成人av| 成人美女视频在线观看18| 欧美日韩日本视频| 国产精品久久久久精k8| 日韩电影在线免费看| 成人av小说网| 日韩久久精品一区| 亚洲一区在线观看视频| 国产成人午夜99999| 欧美亚洲一区二区三区四区| 久久先锋影音av| 视频在线观看91| 99久久免费精品| 亚洲精品一区二区三区福利| 亚洲午夜av在线| 成人黄色软件下载| 久久久久久夜精品精品免费| 91婷婷韩国欧美一区二区| 中文av一区特黄| 成人综合在线观看| 欧美二区乱c少妇| 亚洲日穴在线视频| 成人性视频网站| 精品久久人人做人人爰| 亚洲国产一区二区视频| 色综合天天综合网国产成人综合天| 26uuu精品一区二区三区四区在线| 一区二区视频免费在线观看| 成人黄色av网站在线| 久久蜜桃一区二区| 狠狠色丁香婷婷综合| 日韩美女天天操| 麻豆视频观看网址久久| 69堂精品视频| 午夜精品免费在线| 91麻豆精品国产91久久久久| 亚洲一区二区三区四区在线观看 | 欧美日韩综合在线免费观看| 性做久久久久久免费观看| 欧美激情一区二区三区不卡 | 亚洲一区二区三区影院| 成人美女视频在线观看18| 国产欧美一区二区精品婷婷| 国产精品一二三四五| 国产亚洲一区字幕| 国产精品18久久久| 国产精品久久久久久妇女6080 | 北条麻妃一区二区三区| 国产精品无圣光一区二区| 国产v综合v亚洲欧| 成人免费一区二区三区在线观看| 菠萝蜜视频在线观看一区| 国产又粗又猛又爽又黄91精品| 久久不见久久见免费视频7| 日韩精品一区二区三区蜜臀| 在线视频综合导航| 成人免费精品视频| 中文字幕av一区二区三区| 成人a级免费电影| 亚洲精品成人精品456| 欧美三级日本三级少妇99| 婷婷开心久久网| 精品噜噜噜噜久久久久久久久试看 | 成人听书哪个软件好| 成人欧美一区二区三区黑人麻豆 | 欧美日韩免费不卡视频一区二区三区| 亚洲国产成人高清精品| 男女视频一区二区| 国产中文字幕精品| 麻豆国产91在线播放| 美女免费视频一区二区| 欧美—级在线免费片| 91成人免费网站| 久久www免费人成看片高清| 国产欧美一区二区精品性| 91福利在线导航| 精品一区二区三区视频在线观看| 日本一区二区三区高清不卡| 欧美日韩在线播放一区| 国产精品69毛片高清亚洲| 亚洲人成伊人成综合网小说| 日韩欧美一二三区| 在线精品视频免费观看| 韩国一区二区在线观看| 亚洲第一主播视频| 国产精品美女一区二区在线观看| 欧美福利视频一区| 91丝袜高跟美女视频| 欧美不卡在线视频| 色综合网站在线| 精品国产免费久久| 九色|91porny| 日韩一区二区三区视频在线 | 久久久久久久精| 91网上在线视频| 国产伦精品一区二区三区视频青涩| 一区二区三区在线视频播放| 欧美激情中文字幕一区二区| 日韩精品一区二区三区老鸭窝 | 久久国产精品无码网站| 一区二区三区在线不卡| 欧美国产97人人爽人人喊| 精品国产免费一区二区三区四区| 亚洲美女在线一区| 午夜激情综合网| 亚洲三级在线看| 国产精品视频一区二区三区不卡| 日韩一区二区高清| 欧美乱妇23p| 欧美日韩视频一区二区| 日韩三级视频在线看| 欧美日本视频在线| 欧洲另类一二三四区| 91网站在线观看视频| 91女人视频在线观看| 99精品黄色片免费大全| 99精品欧美一区二区三区小说 | 日韩成人伦理电影在线观看| 亚洲一二三四区不卡| 亚洲蜜臀av乱码久久精品蜜桃| 中文字幕不卡的av| 国产欧美日韩视频一区二区| 久久九九99视频| 欧美日韩黄色影视| 69p69国产精品| 亚洲日本va午夜在线影院| 日本不卡1234视频| 一本色道**综合亚洲精品蜜桃冫| 欧美一区二区久久久| 日韩美女精品在线| 国产在线精品一区二区不卡了| 99精品视频在线观看| 26uuu精品一区二区| 亚瑟在线精品视频| 成人性视频免费网站| 99久久精品免费| 91精品久久久久久蜜臀| 91精品久久久久久久久99蜜臂| 欧美性色欧美a在线播放| 成人一区二区三区中文字幕| 国产成人av资源| 99久久综合色| 正在播放一区二区| 久久一二三国产| 亚洲区小说区图片区qvod| 日韩精品成人一区二区在线| 国产在线视频一区二区三区| 成人免费观看视频| 欧美久久久久久蜜桃| 中文字幕电影一区| 免费在线看成人av| 波多野结衣视频一区| 91精品国产综合久久蜜臀| 久久精品视频免费| 亚洲风情在线资源站| 国产黄色成人av| 欧美日韩性生活| 成人免费视频在线观看| 免费视频最近日韩| 91精品福利视频| 国产亚洲一区二区三区在线观看 |