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

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

?? tflathintunit.pas

?? vod點(diǎn)歌系統(tǒng),DELPHI的通用軟件 會(huì)有幫助
?? PAS
字號(hào):
unit TFlatHintUnit;

interface

uses
  Classes, Windows, Graphics, Messages, Controls, Forms, SysUtils, FlatUtilitys;

type
  TFlatHint = class(TComponent)
  private
    FHintFont: TFont;
    FBackgroundColor: TColor;
    FBorderColor: TColor;
    FArrowBackgroundColor: TColor;
    FArrowColor: TColor;
    FHintWidth: Integer;
    FOnShowHint: TShowHintEvent;
   {$IFDEF DFS_DELPHI_4_UP}
    FBidiMode: TBidiMode;
   {$ENDIF}
    procedure SetColors (Index: Integer; Value: TColor);
    procedure SetHintFont (Value: TFont);
    procedure GetHintInfo (var HintStr: string; var CanShow: Boolean; var HintInfo: THintInfo);
   {$IFDEF DFS_DELPHI_4_UP}
    procedure SetBidiMode(const Value: TBidiMode);
   {$ENDIF}
  public
    constructor Create (AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property ColorBackground: TColor index 0 read FBackgroundColor write SetColors default clWhite;
    property ColorBorder: TColor index 1 read FBorderColor write SetColors default clBlack;
    property ColorArrowBackground: TColor index 2 read FArrowBackgroundColor write SetColors default $0053D2FF;
    property ColorArrow: TColor index 3 read FArrowColor write SetColors default clBlack;
    property MaxHintWidth: Integer read FHintWidth write FHintWidth default 200;
    property Font: TFont read FHintFont write SetHintFont;
    property OnShowHint: TShowHintEvent read FOnShowHint write FOnShowHint;
   {$IFDEF DFS_DELPHI_4_UP}
    property BidiMode: TBidiMode read FBidiMode write SetBidiMode;
   {$ENDIF}
  end;

  TFlatHintWindow = class(THintWindow)
  private
    FArrowPos: TArrowPos;
    FArrowPoint: TPoint;
    FHint: TFlatHint;
    function FindFlatHint: TFlatHint;
  protected
    procedure Paint; override;
    procedure CreateParams (var Params: TCreateParams); override;
  public
    procedure ActivateHint (HintRect: TRect; const AHint: string); Override;
  end;

implementation

var
  HintControl: TControl; // control the tooltip belongs to

constructor TFlatHint.Create (AOwner: TComponent);
begin
  inherited Create(AOwner);

  if not (csDesigning in ComponentState) then
  begin
    HintWindowClass := TFlatHintWindow;

    with Application do
    begin
      ShowHint := not ShowHint;
      ShowHint := not ShowHint;
      OnShowHint := GetHintInfo;

      HintShortPause := 25;
      HintPause := 500;
      HintHidePause := 5000;
    end;
  end;

  FBackgroundColor := clWhite;
  FBorderColor := clBlack;
  FArrowBackgroundColor := $0053D2FF;
  FArrowColor := clBlack;
  FHintWidth := 200;

  FHintFont := TFont.Create;
end;

destructor TFlatHint.Destroy;
begin
  FHintFont.Free;
  inherited Destroy;
end;

procedure TFlatHint.SetColors (Index: Integer; Value: TColor);
begin
  case Index of
    0: FBackgroundColor := Value;
    1: FBorderColor := Value;
    2: FArrowBackgroundColor := Value;
    3: FArrowColor := Value;
  end;
end;

procedure TFlatHint.SetHintFont (Value: TFont);
begin
  FHintFont.Assign(Value);
end;

procedure TFlatHint.GetHintInfo (var HintStr: string; var CanShow: Boolean; var HintInfo: THintInfo);
begin
  if Assigned(FOnShowHint) then
    FOnShowHint(HintStr, CanShow, HintInfo);
  HintControl := HintInfo.HintControl;
end;

{$IFDEF DFS_DELPHI_4_UP}
procedure TFlatHint.SetBidiMode(const Value: TBidiMode);
begin
  if FBiDiMode <> Value then
    FBiDiMode := Value;
end;
{$ENDIF}

{ TFlatHintWindow }

function TFlatHintWindow.FindFlatHint: TFlatHint;
var
  currentComponent: Integer;
begin
  Result := nil;

  with Application.MainForm do
    for currentComponent := 0 to ComponentCount - 1 do
      if Components[currentComponent] is TFlatHint then
      begin
        Result := TFlatHint(Components[currentComponent]);
        Break;
      end;
end;

procedure TFlatHintWindow.CreateParams (var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.Style := Params.Style - WS_BORDER;
end;

procedure TFlatHintWindow.Paint;
var
  ArrowRect, TextRect: TRect;
begin
  // Set the Rect's
  case FArrowPos of
    NW, SW:
      begin
        ArrowRect := Rect(ClientRect.Left + 1, ClientRect.Top + 1, ClientRect.Left + 15, ClientRect.Bottom - 1);
        TextRect  := Rect(ClientRect.Left + 15, ClientRect.Top + 1, ClientRect.Right - 1, ClientRect.Bottom - 1);
      end;
    NE, SE:
      begin
        ArrowRect := Rect(ClientRect.Right - 15, ClientRect.Top + 1, ClientRect.Right - 1, ClientRect.Bottom - 1);
        TextRect  := Rect(ClientRect.Left + 1, ClientRect.Top + 1, ClientRect.Right - 15, ClientRect.Bottom - 1);
      end;
  end;

  // DrawBackground
  canvas.brush.color := FHint.FArrowBackgroundColor;
  canvas.FillRect(ArrowRect);
  canvas.brush.color := FHint.FBackgroundColor;
  canvas.FillRect(TextRect);

  // DrawBorder
  canvas.Brush.Color := FHint.FBorderColor;
  canvas.FrameRect(ClientRect);

  // DrawArrow
  case FArrowPos of
    NW: FArrowPoint := Point(ArrowRect.Left + 2, ArrowRect.Top + 2);
    NE: FArrowPoint := Point(ArrowRect.Right - 3, ArrowRect.Top + 2);
    SW: FArrowPoint := Point(ArrowRect.Left + 2, ArrowRect.Bottom - 3);
    SE: FArrowPoint := Point(ArrowRect.Right - 3, ArrowRect.Bottom - 3);
  end;
  canvas.Pen.Color := FHint.FArrowColor;
  case FArrowPos of
    NW: canvas.Polyline([Point(FArrowPoint.x,     FArrowPoint.y),     Point(FArrowPoint.x, FArrowPoint.y + 6),
                         Point(FArrowPoint.x + 1, FArrowPoint.y + 6), Point(FArrowPoint.x + 1, FArrowPoint.y),
                         Point(FArrowPoint.x + 6, FArrowPoint.y),     Point(FArrowPoint.x + 6, FArrowPoint.y + 1),
                         Point(FArrowPoint.x + 2, FArrowPoint.y + 1), Point(FArrowPoint.x + 2, FArrowPoint.y + 4),
                         Point(FArrowPoint.x + 5, FArrowPoint.y + 7), Point(FArrowPoint.x + 6, FArrowPoint.y + 7),
                         Point(FArrowPoint.x + 3, FArrowPoint.y + 4), Point(FArrowPoint.x + 3, FArrowPoint.y + 3),
                         Point(FArrowPoint.x + 6, FArrowPoint.y + 6), Point(FArrowPoint.x + 7, FArrowPoint.y + 6),
                         Point(FArrowPoint.x + 3, FArrowPoint.y + 2), Point(FArrowPoint.x + 4, FArrowPoint.y + 2),
                         Point(FArrowPoint.x + 7, FArrowPoint.y + 5), Point(FArrowPoint.x + 7, FArrowPoint.y + 6)]);
    NE: canvas.Polyline([Point(FArrowPoint.x,     FArrowPoint.y),     Point(FArrowPoint.x, FArrowPoint.y + 6),
                         Point(FArrowPoint.x - 1, FArrowPoint.y + 6), Point(FArrowPoint.x - 1, FArrowPoint.y),
                         Point(FArrowPoint.x - 6, FArrowPoint.y),     Point(FArrowPoint.x - 6, FArrowPoint.y + 1),
                         Point(FArrowPoint.x - 2, FArrowPoint.y + 1), Point(FArrowPoint.x - 2, FArrowPoint.y + 4),
                         Point(FArrowPoint.x - 5, FArrowPoint.y + 7), Point(FArrowPoint.x - 6, FArrowPoint.y + 7),
                         Point(FArrowPoint.x - 3, FArrowPoint.y + 4), Point(FArrowPoint.x - 3, FArrowPoint.y + 3),
                         Point(FArrowPoint.x - 6, FArrowPoint.y + 6), Point(FArrowPoint.x - 7, FArrowPoint.y + 6),
                         Point(FArrowPoint.x - 3, FArrowPoint.y + 2), Point(FArrowPoint.x - 4, FArrowPoint.y + 2),
                         Point(FArrowPoint.x - 7, FArrowPoint.y + 5), Point(FArrowPoint.x - 7, FArrowPoint.y + 6)]);
    SW: canvas.Polyline([Point(FArrowPoint.x,     FArrowPoint.y),     Point(FArrowPoint.x, FArrowPoint.y - 6),
                         Point(FArrowPoint.x + 1, FArrowPoint.y - 6), Point(FArrowPoint.x + 1, FArrowPoint.y),
                         Point(FArrowPoint.x + 6, FArrowPoint.y),     Point(FArrowPoint.x + 6, FArrowPoint.y - 1),
                         Point(FArrowPoint.x + 2, FArrowPoint.y - 1), Point(FArrowPoint.x + 2, FArrowPoint.y - 4),
                         Point(FArrowPoint.x + 5, FArrowPoint.y - 7), Point(FArrowPoint.x + 6, FArrowPoint.y - 7),
                         Point(FArrowPoint.x + 3, FArrowPoint.y - 4), Point(FArrowPoint.x + 3, FArrowPoint.y - 3),
                         Point(FArrowPoint.x + 6, FArrowPoint.y - 6), Point(FArrowPoint.x + 7, FArrowPoint.y - 6),
                         Point(FArrowPoint.x + 3, FArrowPoint.y - 2), Point(FArrowPoint.x + 4, FArrowPoint.y - 2),
                         Point(FArrowPoint.x + 7, FArrowPoint.y - 5), Point(FArrowPoint.x + 7, FArrowPoint.y - 6)]);
    SE: canvas.Polyline([Point(FArrowPoint.x,     FArrowPoint.y),     Point(FArrowPoint.x, FArrowPoint.y - 6),
                         Point(FArrowPoint.x - 1, FArrowPoint.y - 6), Point(FArrowPoint.x - 1, FArrowPoint.y),
                         Point(FArrowPoint.x - 6, FArrowPoint.y),     Point(FArrowPoint.x - 6, FArrowPoint.y - 1),
                         Point(FArrowPoint.x - 2, FArrowPoint.y - 1), Point(FArrowPoint.x - 2, FArrowPoint.y - 4),
                         Point(FArrowPoint.x - 5, FArrowPoint.y - 7), Point(FArrowPoint.x - 6, FArrowPoint.y - 7),
                         Point(FArrowPoint.x - 3, FArrowPoint.y - 4), Point(FArrowPoint.x - 3, FArrowPoint.y - 3),
                         Point(FArrowPoint.x - 6, FArrowPoint.y - 6), Point(FArrowPoint.x - 7, FArrowPoint.y - 6),
                         Point(FArrowPoint.x - 3, FArrowPoint.y - 2), Point(FArrowPoint.x - 4, FArrowPoint.y - 2),
                         Point(FArrowPoint.x - 7, FArrowPoint.y - 5), Point(FArrowPoint.x - 7, FArrowPoint.y - 6)]);
  end;

  // DrawHintText
  canvas.brush.Style := bsClear;
  InflateRect(TextRect, -3, -1);
  {$IFDEF DFS_COMPILER_4_UP}
  if BidiMode = bdRightToLeft then
    DrawText(canvas.handle, PChar(Caption), Length(Caption), TextRect, DT_RIGHT or DT_WORDBREAK or DT_NOPREFIX)
  else
    DrawText(canvas.handle, PChar(Caption), Length(Caption), TextRect, DT_WORDBREAK or DT_NOPREFIX);
  {$ELSE}
  DrawText(canvas.handle, PChar(Caption), Length(Caption), TextRect, DT_WORDBREAK or DT_NOPREFIX);
  {$ENDIF}
end;

procedure TFlatHintWindow.ActivateHint (HintRect: TRect; const AHint: string);
var
  curWidth: Byte;
  Pnt: TPoint;
  HintHeight, HintWidth: Integer;
  NordWest, NordEast, SouthWest, SouthEast: TRect;
begin
  Caption := AHint;
  FHint := FindFlatHint;

  if FHint <> nil then
    Canvas.Font.Assign(FHint.FHintFont);

  // Calculate width and height
  HintRect.Right := HintRect.Left + FHint.FHintWidth - 22;

  {$IFDEF DFS_COMPILER_4_UP}
  if BidiMode = bdRightToLeft then
    DrawText(Canvas.Handle, @AHint[1], Length(AHint), HintRect, DT_RIGHT or DT_CALCRECT or DT_WORDBREAK or DT_NOPREFIX)
  else
    DrawText(Canvas.Handle, @AHint[1], Length(AHint), HintRect, DT_CALCRECT or DT_WORDBREAK or DT_NOPREFIX);
  {$ELSE}
  DrawText(Canvas.Handle, @AHint[1], Length(AHint), HintRect, DT_CALCRECT or DT_WORDBREAK or DT_NOPREFIX);
  {$ENDIF}


  DrawText(Canvas.Handle, @AHint[1], Length(AHint), HintRect, DT_CALCRECT or DT_WORDBREAK or DT_NOPREFIX);
  Inc(HintRect.Right, 22);
  Inc(HintRect.Bottom, 6);

  // Divide the screen in 4 pices
  NordWest :=  Rect(0, 0, Screen.Width div 2, Screen.Height div 2);
  NordEast :=  Rect(Screen.Width div 2, 0, Screen.Width, Screen.Height div 2);
  SouthWest := Rect(0, Screen.Height div 2, Screen.Width div 2, Screen.Height);
  SouthEast := Rect(Screen.Width div 2, Screen.Height div 2, Screen.Width, Screen.Height);

  GetCursorPos(Pnt);

  if PtInRect(NordWest, Pnt) then
    FArrowPos := NW
  else
    if PtInRect(NordEast, Pnt) then
      FArrowPos := NE
    else
      if PtInRect(SouthWest, Pnt) then
        FArrowPos := SW
      else
        FArrowPos := SE;

  // Calculate the position of the hint
  if FArrowPos = NW then
    curWidth := 12
  else
    curWidth := 5;

  HintHeight := HintRect.Bottom - HintRect.Top;
  HintWidth  := HintRect.Right - HintRect.Left;

  case FArrowPos of
    NW: HintRect := Rect(Pnt.x + curWidth, Pnt.y + curWidth, Pnt.x + HintWidth + curWidth, Pnt.y + HintHeight + curWidth);
    NE: HintRect := Rect(Pnt.x - HintWidth - curWidth, Pnt.y + curWidth, Pnt.x - curWidth, Pnt.y + HintHeight + curWidth);
    SW: HintRect := Rect(Pnt.x + curWidth, Pnt.y - HintHeight - curWidth, Pnt.x + HintWidth + curWidth, Pnt.y - curWidth);
    SE: HintRect := Rect(Pnt.x - HintWidth - curWidth, Pnt.y - HintHeight - curWidth, Pnt.x - curWidth, Pnt.y - curWidth);
  end;

  BoundsRect := HintRect;

  Pnt := ClientToScreen(Point(0, 0));

  SetWindowPos(Handle, HWND_TOPMOST, Pnt.X, Pnt.Y, 0, 0, SWP_SHOWWINDOW or SWP_NOACTIVATE or SWP_NOSIZE);
end;

end.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合色综合88| 国产香蕉久久精品综合网| 国产不卡高清在线观看视频| 一区二区三区免费网站| 亚洲精品一区二区三区四区高清 | 国产精品乡下勾搭老头1| 亚洲永久免费av| 亚洲欧美视频一区| 国产欧美一区二区精品秋霞影院| 欧美久久久久久久久中文字幕| 国产成人精品www牛牛影视| 蜜臀国产一区二区三区在线播放| 亚洲免费电影在线| 国产精品高清亚洲| 国产精品理论片在线观看| 国产亚洲欧美激情| 日本一区二区三区dvd视频在线| 欧美一级日韩免费不卡| 日韩一级高清毛片| 日韩欧美精品三级| 日韩欧美一区二区三区在线| 欧美丰满少妇xxxxx高潮对白| 欧美系列日韩一区| 欧美人与禽zozo性伦| 91精品国产欧美一区二区成人| 精品视频999| 911精品国产一区二区在线| 在线播放视频一区| 日韩免费看的电影| 欧美激情一区二区| 亚洲精选一二三| 五月天国产精品| 国产精品一区二区在线播放| 成人免费av网站| 欧美三级中文字| 国产日韩欧美电影| 亚洲一区二区中文在线| 精品亚洲免费视频| 色老汉一区二区三区| 日韩欧美国产三级电影视频| 26uuu国产在线精品一区二区| 亚洲视频免费观看| 日本免费新一区视频| 国产精品一线二线三线精华| 色综合久久久久久久久久久| 欧美一区二区三区小说| 国产人成亚洲第一网站在线播放 | 日韩一级大片在线观看| 亚洲国产精品精华液2区45| 亚洲国产精品视频| 丰满少妇久久久久久久| 欧美成人伊人久久综合网| 亚洲色图制服诱惑 | 五月激情综合网| 91一区二区三区在线观看| 欧美电影免费观看高清完整版在线观看| 日本一区二区三区在线不卡| 丝袜美腿一区二区三区| 色偷偷88欧美精品久久久| 中文字幕不卡在线播放| 六月丁香婷婷色狠狠久久| 欧美视频日韩视频| 日韩一区日韩二区| 99久久er热在这里只有精品15| 精品久久久久久久久久久久久久久久久 | 99热在这里有精品免费| 久久综合一区二区| 国产精品88888| 欧美精品一区二区三| 久久精品二区亚洲w码| 777亚洲妇女| 天天综合色天天综合色h| 在线精品国精品国产尤物884a| 1区2区3区国产精品| 99久久99久久精品国产片果冻 | 欧美韩国一区二区| 国产91清纯白嫩初高中在线观看 | 丝袜亚洲另类欧美| 日韩一区二区三区免费看| 免费成人在线观看| 精品欧美乱码久久久久久1区2区| 精品亚洲成a人在线观看| 国产片一区二区| 91国产免费观看| 日韩av电影天堂| 国产三级一区二区三区| 播五月开心婷婷综合| 亚洲综合一二区| 日韩欧美国产系列| 成年人国产精品| 日本不卡不码高清免费观看| 久久精品视频在线免费观看| 972aa.com艺术欧美| 五月天激情综合网| 成人欧美一区二区三区白人| 欧美日韩国产一二三| 国产精品亚洲一区二区三区在线 | 日本伊人午夜精品| 成人欧美一区二区三区视频网页| 在线播放91灌醉迷j高跟美女 | 久久亚洲影视婷婷| 欧美视频一区二区三区四区| 懂色av一区二区在线播放| 午夜国产精品一区| 亚洲欧美在线高清| 久久久久久久久伊人| 欧美性色黄大片手机版| 不卡的av电影| 国产91在线观看| 久久精品国产99国产| 天天综合色天天| 亚洲午夜免费视频| 亚洲视频中文字幕| 中文av一区二区| 国产欧美综合在线观看第十页| 日韩欧美一级在线播放| 6080yy午夜一二三区久久| 欧美亚洲日本一区| 欧美日韩免费高清一区色橹橹| 91在线观看美女| 99视频热这里只有精品免费| 成人免费va视频| 成人午夜看片网址| 成人精品免费看| 91丨porny丨国产| 91国产福利在线| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 成人网男人的天堂| 91麻豆免费观看| 欧美视频在线观看一区二区| 欧美三级欧美一级| 91精品综合久久久久久| 精品黑人一区二区三区久久| 久久综合狠狠综合久久激情| 日本一区二区免费在线观看视频| 国产精品视频在线看| 一区二区三区资源| 日韩国产高清影视| 国产福利一区二区三区视频在线| 99久久99久久免费精品蜜臀| 欧美熟乱第一页| 久久综合九色综合欧美98| 亚洲欧美一区二区三区国产精品| 亚洲一区二区三区三| 狠狠v欧美v日韩v亚洲ⅴ| 北条麻妃国产九九精品视频| 欧美色图片你懂的| 国产婷婷精品av在线| 亚洲综合男人的天堂| 国产美女精品一区二区三区| 91蜜桃视频在线| 久久久久久久综合日本| 夜夜精品视频一区二区| 国产一区二区三区日韩| 欧美人伦禁忌dvd放荡欲情| 国产欧美一区视频| 日本成人在线看| 91国偷自产一区二区开放时间| 国产亚洲一本大道中文在线| 亚洲国产精品欧美一二99| 99国产精品99久久久久久| 精品国产免费一区二区三区香蕉| 亚洲免费观看高清在线观看| 国产成人亚洲综合a∨婷婷图片| 在线一区二区三区四区| 欧美激情一区二区三区在线| 国产乱子伦视频一区二区三区| 欧美一区二区三区四区五区| 亚洲风情在线资源站| 色乱码一区二区三区88| 1024成人网色www| 白白色亚洲国产精品| 一区在线观看免费| 99re免费视频精品全部| 亚洲日本丝袜连裤袜办公室| 成人h动漫精品一区二区| 国产精品无遮挡| 成人av网站免费观看| 亚洲欧美电影一区二区| 99综合电影在线视频| 亚洲另类中文字| 欧美美女一区二区三区| 三级在线观看一区二区| 69av一区二区三区| 紧缚奴在线一区二区三区| 久久综合久久鬼色| 94-欧美-setu| 日韩成人一级片| 久久精品亚洲乱码伦伦中文| 国产一区二区精品久久91| 中文字幕亚洲一区二区av在线 | 韩国欧美国产1区| 3atv一区二区三区| 精品国产乱码久久久久久免费 | 粗大黑人巨茎大战欧美成人| 日韩美女啊v在线免费观看| 欧美高清精品3d| 成人国产精品免费网站| 五月天中文字幕一区二区| 国产亚洲精品aa午夜观看|