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

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

?? customctrls.pas

?? Clock 桌面時鐘 日歷 陰歷 看到的delphi程序 轉發
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
Unit CustomCtrls;

Interface
Uses
  Windows,
  Messages,
  SysUtils,
  Classes,
  Graphics,
  Controls,
  Forms,
  ExtCtrls,
  Jpeg,
  ComCtrls,
  StdCtrls,
  Math,
  MacForm;

Type
  TPositionEvent = Procedure(Sender: TObject; pt: TPoint) Of Object;

  TIconPanel = Class;
  TPicturePanel = Class;

  TPicData = Class
  Private
    Width, Height, ImageIndex: Integer;
  End;

  TPictureListBox = Class(TCustomListBox)
  Private
    FBorderSize: Integer;
    FPreviewIcon: Boolean;
    Bitmap: Tbitmap;
    Images: TImageList;
    FUpdateCount: Integer;
    FObjList: TList;
    Procedure GetPrevIcon(AName: String; aData: TPicData);
  Protected

    Procedure SetBorderSize(Value: Integer);
    Procedure SetPreviewIcon(Value: Boolean);
    Procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState);
      Override;
    Procedure AddFile(FileName: String);
  Public
    Procedure Clear; Override;
    Procedure OpenPath(s: String);
    Constructor Create(AOwner: TComponent); Override;
    Destructor Destroy; Override;
    Procedure BeginUpdate;
    Procedure EndUpdate;
    Procedure FindOver;
    Procedure FindNext;
    Property BorderSize: Integer Read FBorderSize Write SetBorderSize;
    Property PreviewIcon: Boolean Read FPreviewIcon Write SetPreviewIcon;
  Published
    Property Popupmenu;
    Property Align;
    Property OnMouseDown;
    Property OnMouseMove;
    Property OnMouseUp;
    Property Visible;
    Property OnClick;
  End;

  TGraphicPanel = Class(TCustomPanel)
  Private
    Bmp: TBitmap;
  Protected
    Procedure Paint; Override;
  Public
    Constructor Create(AOwner: TComponent); Override;
    Destructor Destroy; Override;
  End;

  TPicturePanel = Class(TGraphicPanel)
  Private
    Icon: TBitmap;
    PL: TIconPanel;
    AssignedIcon: Boolean;

    ConstrainRect: TRect;
    FCaptured: Boolean;
    OldX, OldY: Integer;
    FOnPositionChg: TPositionEvent;
  Protected
    Procedure SetFileName(Const Value: String);
    Procedure Paint; Override;
    Procedure PLMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    Procedure PLMouseDown(Sender: TObject; Button: TMouseButton; Shift:
      TShiftState;
      X, Y: Integer);
    Procedure PLMouseUp(Sender: TObject; Button: TMouseButton; Shift:
      TShiftState;
      X, Y: Integer);
    Procedure CopyBitmap(src: TBitmap);
    Procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y:
      Integer);
      Override;
    Procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
      Override;
  Public
    Constructor Create(AOwner: TComponent); Override;
    Destructor Destroy; Override;
    Property FileName: String Write SetFileName;
    Property MovePanel: TIconPanel Read PL Write PL;
  Published
    Property OnPositionChg: TPositionEvent Read FOnPositionChg Write
      FOnPositionChg;
    Property Align;
  End;

  TIconPanel = Class(TGraphicPanel)
  Private
    Procedure SetBitmap(Value: TBitmap);
  Public
    Property Bitmap: TBitmap Write SetBitmap;
  End;

  TUpdateThread = Class(TThread)
  Private
    Name: String;
    picBox: TPictureListBox;
  Protected
    Procedure Execute; Override;
    Procedure UpdateBox;
  Public
    Constructor Create(aBox: TPictureListBox);
  End;

  TPicThread = Class(TThread)
  Private
    Path: String;
    picBox: TPictureListBox;
  Protected
    Procedure Execute; Override;
  Public
    Constructor Create(aBox: TPictureListBox; aPath: String);
  End;

Procedure Register;

Function GetBitmap(FileName: String): TBitmap;
Function ScreenCap: TBitmap;

Function IsValidFile(FileName: String): Boolean;

Function IsJpegFile(FileName: String): Boolean;

Function IsBmpFile(FileName: String): Boolean;

Procedure AddFileName(aBox: TPictureListBox; sName: String);

Function GetFileName: String;

Implementation
Uses Main,
  IpcThrd;

Const
  DEFAULTSIZE = 64;
Var
  FileList: TStringList;
  FileListMutex: TMutex;
  FileThrdCount: Integer = 0;

Procedure Register;
Begin
  RegisterComponents('Custom', [TPictureListBox]);
End;

Function GetBitmap(FileName: String): TBitmap;
Var
  jp: TJPEGImage;
Begin
  Result := Nil;
  If Not IsValidFile(FileName) Then
    exit;

  Result := TBitmap.Create;

  If IsJpegFile(FileName) Then
  Begin
    jp := TJPEGImage.Create;
    Try
      jp.LoadFromFile(FileName);
      Result.Assign(jp);
    Except
      FreeAndNil(Result);
    End;
    jp.Free;
  End
  Else
    If IsBmpFile(FileName) Then
    Begin
      Try
        Result.LoadFromFile(FileName)
      Except
        FreeAndNil(Result);
      End;
    End
    Else
      FreeAndNil(Result);
End;

Function ScreenCap: TBitmap;
Var
  //  Bhandle : HBITMAP ;
  SourceDC, DestDC: HDC;
  Sw, Sh: Integer;
  Bhandle: integer;
  Bitmap: TBitmap;

Begin
  Sw := Screen.Width;
  Sh := Screen.Height;

  SourceDC := CreateDC('DISPLAY', '', '', Nil);
  DestDC := CreateCompatibleDC(SourceDC);

  Bhandle := CreateCompatibleBitmap(SourceDC, Sw, Sh);
  SelectObject(DestDC, Bhandle);
  BitBlt(DestDC, 0, 0, Sw, Sh, SourceDC, 0, 0, SRCCOPY);

  Bitmap := TBitmap.Create;
  Bitmap.Handle := BHandle;
  Result := TBitmap.Create;

  Result.Assign(Bitmap);

  Bitmap.Free;
  DeleteDC(DestDC);
  ReleaseDC(Bhandle, SourceDC);
End;

Function IsValidFile(FileName: String): Boolean;
Begin
  Result := (IsJpegFile(FileName) Or IsBmpFile(FileName));
End;

Function IsJpegFile(FileName: String): Boolean;
Var
  s: String;
Begin
  s := ExtractFileExt(FileName);
  Result := FileExists(FileName) And (AnsiSameText(s, '.jpg') Or
    AnsiSameText(s, '.jpeg'));
End;

Function IsBmpFile(FileName: String): Boolean;
Var
  s: String;
Begin
  s := ExtractFileExt(FileName);
  Result := FileExists(FileName) And AnsiSameText(s, '.bmp');
End;

Procedure AddFileName(aBox: TPictureListBox; sName: String);
Begin
  If FileListMutex.Get(1000 * 60) Then
  Begin
    FileList.Add(sName);

    If FileThrdCount < 50 Then
    Begin
      InterlockedIncrement(FileThrdCount);
      TUpdateThread.Create(aBox);
    End;

    FileListMutex.Release;
  End;
End;

Function GetFileName: String;
Begin
  Result := '';
  If FileListMutex.Get(1000 * 60) Then
  Begin
    If FileList.Count > 0 Then
    Begin
      Result := FileList[0];
      FileList.Delete(0);
    End;
    FileListMutex.Release;
  End;
End;

Constructor TPicturePanel.Create(AOwner: TComponent);
Begin
  Inherited;

  Icon := TBitmap.Create;
  Icon.Width := 153;
  Icon.Height := 111;
  Bmp.LoadFromResourceID(hInstance, 1001);

  Height := Bmp.Height;
  Width := Bmp.Width;

  SetRect(ConstrainRect, 11, 15, 167, 126);

  PL := TIconPanel.Create(self);

  With PL Do
  Begin
    Cursor := crSizeAll;

    OnMouseDown := PLMouseDown;
    OnMouseMove := PLMouseMove;
    OnMouseUp := PLMouseUp;

    SetBounds(Width - 60, 18, 40, 40);
    FullRepaint := false;
    ParentBackground := false;
  End;

  InsertControl(PL);

  FCaptured := false;
  CopyBitmap(ScreenCap);
End;

Destructor TPicturePanel.Destroy;
Begin
  Icon.Free;
  PL.Free;
  Inherited;
End;

Procedure TPicturePanel.Paint;
Var
  Rt: TRect;
Begin
  Inherited;

  If HandleAllocated Then
  Begin
    Rt := ClientRect;
    Canvas.BrushCopy(Rt, Bmp, Rt, Bmp.Canvas.Pixels[0, 0]);
    If AssignedIcon Then
      Canvas.CopyRect(ConstrainRect, Icon.Canvas, Rect(0, 0, 153, 111));
  End;
End;

Procedure TPicturePanel.SetFileName(Const Value: String);
Begin
  CopyBitmap(GetBitmap(Value));
End;

Procedure TPicturePanel.PLMouseMove(Sender: TObject; Shift: TShiftState; X, Y:
  Integer);
Var
  x1, x2, y1, y2: Integer;
Begin
  If Not FCaptured Then
    exit;

  With Pl Do
  Begin

    x1 := X - OldX + Left;
    If x1 < ConstrainRect.Left Then
      x1 := ConstrainRect.Left;

    y1 := Y - OldY + Top;
    If y1 < ConstrainRect.Top Then
      y1 := ConstrainRect.Top;

    x2 := x1 + Width;
    If x2 > ConstrainRect.Right Then
      x1 := ConstrainRect.Right - Width;

    y2 := y1 + Height;
    If y2 > ConstrainRect.Bottom Then
      y1 := ConstrainRect.Bottom - Height;

    If (x1 <> Left) And (y <> Top) Then
    Begin
      MoveWindow(Handle, x1, y1, Width, Height, true);
      If Assigned(FOnPositionChg) Then
        FOnPositionChg(self, Point(x1 - ConstrainRect.Left, y1 -
          ConstrainRect.Top));
    End;
  End;
End;

Procedure TPicturePanel.PLMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
Begin
  FCaptured := true;
  OldX := X;
  OldY := Y;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
毛片av一区二区| 日韩精品专区在线| 日本va欧美va瓶| 欧美激情在线观看视频免费| 91影视在线播放| 免费高清在线一区| 亚洲欧美一区二区三区孕妇| 日韩一区二区三区视频在线 | 欧美成人欧美edvon| 精品一区二区三区免费| 一区二区三区四区在线| 欧美va日韩va| 欧美绝品在线观看成人午夜影视 | 日韩1区2区日韩1区2区| 日韩美女啊v在线免费观看| 日韩一二三四区| 日本精品裸体写真集在线观看| 麻豆91小视频| 轻轻草成人在线| 亚洲小说欧美激情另类| 亚洲视频 欧洲视频| 欧美激情中文字幕一区二区| 日韩一区二区三| 91精选在线观看| 欧美日韩亚洲国产综合| 欧美自拍丝袜亚洲| 欧美综合久久久| 欧美疯狂性受xxxxx喷水图片| 91福利国产成人精品照片| 色视频一区二区| 欧美日本在线播放| 欧美一区二区国产| 国产欧美一区二区精品性| 久久久影视传媒| 中文子幕无线码一区tr| 中文字幕制服丝袜成人av| 国产精品麻豆网站| 国内久久精品视频| 成人免费看的视频| 日本高清视频一区二区| 欧美日韩一区二区三区免费看 | 91 com成人网| 久久久影视传媒| 一区二区三区不卡在线观看| 久久99精品国产.久久久久久| 国产精品99久久久久| 日本丶国产丶欧美色综合| 欧美一区二区性放荡片| 亚洲国产精品黑人久久久| 亚洲一本大道在线| 成人视屏免费看| 欧美一级日韩免费不卡| 自拍偷拍亚洲激情| 男男gaygay亚洲| 欧美色综合久久| 国产精品视频第一区| 欧美aaaaaa午夜精品| 91色婷婷久久久久合中文| 欧美变态凌虐bdsm| 日韩av网站免费在线| 欧美怡红院视频| 亚洲视频一区二区免费在线观看| 日产国产高清一区二区三区| 一本大道久久a久久综合婷婷| 精品久久久久久久久久久久久久久久久| 亚洲精品久久久蜜桃| av一区二区三区黑人| 中文字幕成人av| www.亚洲在线| 一区二区三区免费观看| 欧美亚洲一区二区在线| 午夜欧美电影在线观看| 精品国产精品网麻豆系列| 七七婷婷婷婷精品国产| 欧美一区二区在线观看| 久草精品在线观看| 国产日产欧美一区二区三区| 国产成人av一区二区三区在线观看| 国产日本欧洲亚洲| 99re8在线精品视频免费播放| 亚洲精品欧美在线| 欧美猛男超大videosgay| 国产九色精品成人porny | 91.com在线观看| 国产美女在线观看一区| 国产精品丝袜91| 欧美视频一区在线| 国产成人自拍网| 亚洲一区在线视频| 久久精品男人天堂av| 99综合电影在线视频| 日韩高清在线一区| 综合在线观看色| 精品久久国产字幕高潮| 欧美日韩一区精品| 成人晚上爱看视频| 久久国产精品色| 天天综合天天综合色| 日韩美女精品在线| 国产精品毛片a∨一区二区三区| 欧美一区二区三区四区高清| av午夜一区麻豆| 成人小视频免费观看| 国产一区二区91| 久久精品999| 久久精品国产精品亚洲精品| 亚洲成人自拍偷拍| 激情小说欧美图片| 黄色日韩三级电影| 久久精品国产77777蜜臀| 久久精品噜噜噜成人av农村| 美国十次了思思久久精品导航| 亚洲一区二区三区影院| 亚洲国产三级在线| 蜜桃精品视频在线| 国产精品中文有码| 99久久精品免费看国产免费软件| www.亚洲人| 欧美日韩一区视频| 日韩一区精品视频| 亚洲成人免费影院| 日韩精品亚洲一区二区三区免费| 亚洲一区二区三区在线看| 国产精品99久久久久久似苏梦涵| 亚洲成a人片综合在线| 久久精品国产秦先生| 国产麻豆精品theporn| 亚洲国产精品久久人人爱| 精品精品欲导航| 欧美喷水一区二区| 91论坛在线播放| 97se亚洲国产综合在线| 日本伊人午夜精品| 日韩免费视频一区| 国内精品视频666| 日韩毛片视频在线看| 欧美日本在线播放| 丁香另类激情小说| 国产精品不卡在线| 91精品啪在线观看国产60岁| 蜜臀va亚洲va欧美va天堂| 欧美经典一区二区| 欧美天天综合网| 国内精品久久久久影院一蜜桃| 最新久久zyz资源站| 欧美日韩精品一区二区天天拍小说| 美女视频黄 久久| 亚洲欧美另类综合偷拍| 欧美电影免费观看高清完整版在线| 国产69精品久久久久毛片 | 韩国中文字幕2020精品| 亚洲欧美日韩久久| 久久综合九色综合欧美亚洲| 91浏览器在线视频| 成人污视频在线观看| 狠狠色综合日日| 麻豆91精品视频| 视频一区视频二区中文字幕| 亚洲视频一区在线| 亚洲欧洲成人自拍| 亚洲综合色区另类av| 欧美激情资源网| 亚洲国产精品久久艾草纯爱| 亚洲自拍偷拍综合| 免费成人你懂的| 韩国一区二区视频| 91久久精品一区二区三区| 日本精品视频一区二区三区| 色哦色哦哦色天天综合| 91久久精品一区二区| 欧美日韩视频在线第一区| 欧美成人三级电影在线| 国产亚洲综合性久久久影院| 国产精品国产三级国产三级人妇 | 成人avav在线| 欧美在线影院一区二区| 3751色影院一区二区三区| 亚洲精品一区二区三区影院 | 午夜一区二区三区在线观看| 日本成人中文字幕在线视频| 国产成人精品一区二区三区四区| 9色porny自拍视频一区二区| 51精品秘密在线观看| 亚洲欧洲日产国产综合网| 偷拍自拍另类欧美| 99re在线视频这里只有精品| 91精品国产91热久久久做人人| 欧美国产日韩一二三区| 亚洲va天堂va国产va久| 成人av免费在线播放| 2023国产一二三区日本精品2022| 亚洲欧美怡红院| 国产不卡视频在线播放| 欧美一区二区三区视频免费播放| 中文av一区二区| 国产黄人亚洲片| 国产精品素人视频| 成人精品视频.| 一区精品在线播放| 椎名由奈av一区二区三区|