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

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

?? bsskingrids.pas

?? delphi 皮膚控件
?? PAS
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
    FixedCellTextRect: TRect;
    CellLeftOffset, CellRightOffset: Integer;
    CellTextRect: TRect;
    LinesColor, BGColor: TColor;
    BGPictureIndex: Integer;
    FontName: String;
    FontStyle: TFontStyles;
    FontHeight: Integer;
    FontColor, SelectFontColor, FocusFontColor: TColor;
    FixedFontName: String;
    FixedFontStyle: TFontStyles;
    FixedFontHeight: Integer;
    FixedFontColor: TColor;
    Picture, BGPicture: TBitMap;
    CellStretchEffect, FixedCellStretchEffect: Boolean;
    ShowFocus: Boolean;
    procedure ChangeSkinData; override;
    function GetNewTextRect(CellR: TRect; AState: TGridDrawState): TRect;
    procedure SetParentImage;
    //
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    function MouseCoord(X, Y: Integer): TGridCoord;
  published
    property Transparent: Boolean read FTransparent write SetTransparent;
    property TabStop default True;
    property UseSkinFont: Boolean read FUseSkinFont write FUseSkinFont;
    property UseSkinCellHeight: Boolean read
      FUseSkinCellHeight write FUseSkinCellHeight;
    property HScrollBar: TbsSkinScrollBar read FHScrollBar
                                          write SetHScrollBar;
    property VScrollBar: TbsSkinScrollBar read FVScrollBar
                                          write SetVScrollBar;
    property GridLineColor: TColor read FGridLineColor write SetGridLineColor;
    property DefaultCellHeight: Integer read FDefaultCellHeight
                                        write SetDefaultCellHeight;
  end;

  { TbsSkinDrawGrid }

  TGetEditEvent = procedure (Sender: TObject; ACol, ARow: Longint; var Value: string) of object;
  TSetEditEvent = procedure (Sender: TObject; ACol, ARow: Longint; const Value: string) of object;
  TMovedEvent = procedure (Sender: TObject; FromIndex, ToIndex: Longint) of object;

  TbsSkinDrawGrid = class(TbsSkinCustomGrid)
  private
    FOnColumnMoved: TMovedEvent;
    FOnDrawCell: TDrawCellEvent;
    FOnGetEditMask: TGetEditEvent;
    FOnGetEditText: TGetEditEvent;
    FOnRowMoved: TMovedEvent;
    FOnSelectCell: TSelectCellEvent;
    FOnSetEditText: TSetEditEvent;
    FOnTopLeftChanged: TNotifyEvent;
  protected
    procedure ColumnMoved(FromIndex, ToIndex: Longint); override;
    procedure DrawCell(ACol, ARow: Longint; ARect: TRect;
      AState: TGridDrawState); override;
    function GetEditMask(ACol, ARow: Longint): string; override;
    function GetEditText(ACol, ARow: Longint): string; override;
    procedure RowMoved(FromIndex, ToIndex: Longint); override;
    function SelectCell(ACol, ARow: Longint): Boolean; override;
    procedure SetEditText(ACol, ARow: Longint; const Value: string); override;
    procedure TopLeftChanged; override;
  public
    function CellRect(ACol, ARow: Longint): TRect;
    procedure MouseToCell(X, Y: Integer; var ACol, ARow: Longint);
    property Canvas;
    property Col;
    property ColWidths;
    property EditorMode;
    property GridHeight;
    property GridWidth;
    property LeftCol;
    property Selection;
    property Row;
    property RowHeights;
    property TabStops;
    property TopRow;
  published
    property Align;
    property Anchors;
    property BiDiMode;
    property BorderStyle;
    property Color;
    property ColCount;
    property Constraints;
    property DefaultColWidth;
    property DefaultRowHeight;
    property DefaultDrawing;
    property DragCursor;
    property DragKind;
    property DragMode;
    property Enabled;
    property FixedColor;
    property FixedCols;
    property RowCount;
    property FixedRows;
    property Font;
    property GridLineWidth;
    property Options;
    property ParentBiDiMode;
    property ParentColor;
    property ParentFont;
    property ParentShowHint;
    property PopupMenu;
    property ShowHint;
    property TabOrder;
    property TabStop;
    property Visible;
    property VisibleColCount;
    property VisibleRowCount;
    property OnClick;
    property OnColumnMoved: TMovedEvent read FOnColumnMoved write FOnColumnMoved;
    property OnDblClick;
    property OnDragDrop;
    property OnDragOver;
    property OnDrawCell: TDrawCellEvent read FOnDrawCell write FOnDrawCell;
    property OnEndDock;
    property OnEndDrag;
    property OnEnter;
    property OnExit;
    property OnGetEditMask: TGetEditEvent read FOnGetEditMask write FOnGetEditMask;
    property OnGetEditText: TGetEditEvent read FOnGetEditText write FOnGetEditText;
    property OnKeyDown;
    property OnKeyPress;
    property OnKeyUp;
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
    property OnMouseWheelDown;
    property OnMouseWheelUp;
    property OnRowMoved: TMovedEvent read FOnRowMoved write FOnRowMoved;
    property OnSelectCell: TSelectCellEvent read FOnSelectCell write FOnSelectCell;
    property OnSetEditText: TSetEditEvent read FOnSetEditText write FOnSetEditText;
    property OnStartDock;
    property OnStartDrag;
    property OnTopLeftChanged: TNotifyEvent read FOnTopLeftChanged write FOnTopLeftChanged;
  end;

  { TbsSkinStringGrid }

  TbsSkinStringGrid = class;

  TbsSkinStringGridStrings = class(TStrings)
  private
    FGrid: TbsSkinStringGrid;
    FIndex: Integer;
    procedure CalcXY(Index: Integer; var X, Y: Integer);
  protected
    function Get(Index: Integer): string; override;
    function GetCount: Integer; override;
    function GetObject(Index: Integer): TObject; override;
    procedure Put(Index: Integer; const S: string); override;
    procedure PutObject(Index: Integer; AObject: TObject); override;
    procedure SetUpdateState(Updating: Boolean); override;
  public
    constructor Create(AGrid: TbsSkinStringGrid; AIndex: Longint);
    function Add(const S: string): Integer; override;
    procedure Assign(Source: TPersistent); override;
    procedure Clear; override;
    procedure Delete(Index: Integer); override;
    procedure Insert(Index: Integer; const S: string); override;
  end;


  TbsSkinStringGrid = class(TbsSkinDrawGrid)
  private
    FData: Pointer;
    FRows: Pointer;
    FCols: Pointer;
    FUpdating: Boolean;
    FNeedsUpdating: Boolean;
    FEditUpdate: Integer;
    procedure DisableEditUpdate;
    procedure EnableEditUpdate;
    procedure Initialize;
    procedure Update(ACol, ARow: Integer); reintroduce;
    procedure SetUpdateState(Updating: Boolean);
    function GetCells(ACol, ARow: Integer): string;
    function GetCols(Index: Integer): TStrings;
    function GetObjects(ACol, ARow: Integer): TObject;
    function GetRows(Index: Integer): TStrings;
    procedure SetCells(ACol, ARow: Integer; const Value: string);
    procedure SetCols(Index: Integer; Value: TStrings);
    procedure SetObjects(ACol, ARow: Integer; Value: TObject);
    procedure SetRows(Index: Integer; Value: TStrings);
    function EnsureColRow(Index: Integer; IsCol: Boolean): TbsSkinStringGridStrings;
    function EnsureDataRow(ARow: Integer): Pointer;
  protected
    procedure ColumnMoved(FromIndex, ToIndex: Longint); override;
    procedure DrawCell(ACol, ARow: Longint; ARect: TRect;
      AState: TGridDrawState); override;
    function GetEditText(ACol, ARow: Longint): string; override;
    procedure SetEditText(ACol, ARow: Longint; const Value: string); override;
    procedure RowMoved(FromIndex, ToIndex: Longint); override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    property Cells[ACol, ARow: Integer]: string read GetCells write SetCells;
    property Cols[Index: Integer]: TStrings read GetCols write SetCols;
    property Objects[ACol, ARow: Integer]: TObject read GetObjects write SetObjects;
    property Rows[Index: Integer]: TStrings read GetRows write SetRows;
  end;

implementation

uses Math, Consts, bsUtils, Clipbrd, bsConst;

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

procedure InvalidOp(const id: string);
begin
  raise bsEInvalidGridOperation.Create(id);
end;

function GridRect(Coord1, Coord2: TGridCoord): TGridRect;
begin
  with Result do
  begin
    Left := Coord2.X;
    if Coord1.X < Coord2.X then Left := Coord1.X;
    Right := Coord1.X;
    if Coord1.X < Coord2.X then Right := Coord2.X;
    Top := Coord2.Y;
    if Coord1.Y < Coord2.Y then Top := Coord1.Y;
    Bottom := Coord1.Y;
    if Coord1.Y < Coord2.Y then Bottom := Coord2.Y;
  end;
end;

function PointInGridRect(Col, Row: Longint; const Rect: TGridRect): Boolean;
begin
  Result := (Col >= Rect.Left) and (Col <= Rect.Right) and (Row >= Rect.Top)
    and (Row <= Rect.Bottom);
end;

type
  TXorRects = array[0..3] of TRect;

procedure XorRects(const R1, R2: TRect; var XorRects: TXorRects);
var
  Intersect, Union: TRect;

  function PtInRect(X, Y: Integer; const Rect: TRect): Boolean;
  begin
    with Rect do Result := (X >= Left) and (X <= Right) and (Y >= Top) and
      (Y <= Bottom);
  end;

  function Includes(const P1: TPoint; var P2: TPoint): Boolean;
  begin
    with P1 do
    begin
      Result := PtInRect(X, Y, R1) or PtInRect(X, Y, R2);
      if Result then P2 := P1;
    end;
  end;

  function Build(var R: TRect; const P1, P2, P3: TPoint): Boolean;
  begin
    Build := True;
    with R do
      if Includes(P1, TopLeft) then
      begin
        if not Includes(P3, BottomRight) then BottomRight := P2;
      end
      else if Includes(P2, TopLeft) then BottomRight := P3
      else Build := False;
  end;

begin
  FillChar(XorRects, SizeOf(XorRects), 0);
  if not Bool(IntersectRect(Intersect, R1, R2)) then
  begin
    { Don't intersect so its simple }
    XorRects[0] := R1;
    XorRects[1] := R2;
  end
  else
  begin
    UnionRect(Union, R1, R2);
    if Build(XorRects[0],
      Point(Union.Left, Union.Top),
      Point(Union.Left, Intersect.Top),
      Point(Union.Left, Intersect.Bottom)) then
      XorRects[0].Right := Intersect.Left;
    if Build(XorRects[1],
      Point(Intersect.Left, Union.Top),
      Point(Intersect.Right, Union.Top),
      Point(Union.Right, Union.Top)) then
      XorRects[1].Bottom := Intersect.Top;
    if Build(XorRects[2],
      Point(Union.Right, Intersect.Top),
      Point(Union.Right, Intersect.Bottom),
      Point(Union.Right, Union.Bottom)) then
      XorRects[2].Left := Intersect.Right;
    if Build(XorRects[3],
      Point(Union.Left, Union.Bottom),
      Point(Intersect.Left, Union.Bottom),
      Point(Intersect.Right, Union.Bottom)) then
      XorRects[3].Top := Intersect.Bottom;
  end;
end;

procedure ModifyExtents(var Extents: Pointer; Index, Amount: Longint;
  Default: Integer);
var
  LongSize, OldSize: LongInt;
  NewSize: Integer;
  I: Integer;
begin
  if Amount <> 0 then
  begin
    if not Assigned(Extents) then OldSize := 0
    else OldSize := PIntArray(Extents)^[0];
    if (Index < 0) or (OldSize < Index) then InvalidOp(SIndexOutOfRange);
    LongSize := OldSize + Amount;
    if LongSize < 0 then InvalidOp(STooManyDeleted)
    else if LongSize >= MaxListSize - 1 then InvalidOp(SGridTooLarge);
    NewSize := Cardinal(LongSize);
    if NewSize > 0 then Inc(NewSize);
    ReallocMem(Extents, NewSize * SizeOf(Integer));
    if Assigned(Extents) then
    begin
      I := Index + 1;
      while I < NewSize do
      begin
        PIntArray(Extents)^[I] := Default;
        Inc(I);
      end;
      PIntArray(Extents)^[0] := NewSize-1;
    end;
  end;
end;

procedure UpdateExtents(var Extents: Pointer; NewSize: Longint;
  Default: Integer);
var
  OldSize: Integer;
begin
  OldSize := 0;
  if Assigned(Extents) then OldSize := PIntArray(Extents)^[0];
  ModifyExtents(Extents, OldSize, NewSize - OldSize, Default);
end;

procedure MoveExtent(var Extents: Pointer; FromIndex, ToIndex: Longint);
var
  Extent: Integer;
begin
  if Assigned(Extents) then
  begin
    Extent := PIntArray(Extents)^[FromIndex];
    if FromIndex < ToIndex then
      Move(PIntArray(Extents)^[FromIndex + 1], PIntArray(Extents)^[FromIndex],
        (ToIndex - FromIndex) * SizeOf(Integer))
    else if FromIndex > ToIndex then
      Move(PIntArray(Extents)^[ToIndex], PIntArray(Extents)^[ToIndex + 1],
        (FromIndex - ToIndex) * SizeOf(Integer));
    PIntArray(Extents)^[ToIndex] := Extent;
  end;
end;

function CompareExtents(E1, E2: Pointer): Boolean;
var
  I: Integer;
begin
  Result := False;
  if E1 <> nil then
  begin
    if E2 <> nil then
    begin
      for I := 0 to PIntArray(E1)^[0] do
        if PIntArray(E1)^[I] <> PIntArray(E2)^[I] then Exit;
      Result := True;
    end
  end
  else Result := E2 = nil;
end;

function LongMulDiv(Mult1, Mult2, Div1: Longint): Longint; stdcall;
  external 'kernel32.dll' name 'MulDiv';

type
  TSelection = record
    StartPos, EndPos: Integer;
  end;

constructor TbsSkinTransparentMaskEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := ControlStyle + [csOpaque];
  FTransparent := False;
  FDown := False;
end;

procedure TbsSkinTransparentMaskEdit.SetTransparent;
begin
  if FTransparent <> Value
  then
    begin
      FTransparent := Value;
      ReCreateWnd;
    end;
end;

procedure TbsSkinTransparentMaskEdit.InvalidateEdit;
var
  R: TRect;
begin
  if Parent = nil then Exit;
  R := ClientRect;
  R.TopLeft := Parent.ScreenToClient(ClientToScreen(R.TopLeft));
  R.BottomRight := Parent.ScreenToClient(ClientToScreen(R.BottomRight));
  InvalidateRect(Parent.Handle, @R, true);
  RedrawWindow(Handle, nil, 0, RDW_FRAME + RDW_INVALIDATE);
end;

procedure TbsSkinTransparentMaskEdit.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  if FTransparent

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产黄人亚洲片| 日韩欧美国产午夜精品| 国产高清精品网站| 国产老女人精品毛片久久| 男人操女人的视频在线观看欧美 | 日韩精品一级中文字幕精品视频免费观看 | 欧美精品久久99| 欧美日本一区二区在线观看| 色婷婷综合久久久久中文一区二区| caoporm超碰国产精品| 99久久久免费精品国产一区二区| 99久久精品国产一区二区三区| 色综合久久久网| 欧美视频精品在线观看| 欧美日韩精品一区二区三区蜜桃 | 91精品国产一区二区| 51精品久久久久久久蜜臀| 91精品国产高清一区二区三区蜜臀 | 韩国女主播成人在线| 国内精品久久久久影院一蜜桃| 国产精品综合一区二区三区| 粉嫩嫩av羞羞动漫久久久| 99久久er热在这里只有精品66| 91久久精品国产91性色tv| 久久精品视频在线免费观看| 国产性天天综合网| 1024国产精品| 日韩精品色哟哟| 激情亚洲综合在线| 99国产精品99久久久久久| 欧美亚洲综合在线| 精品国产一二三区| 中文字幕在线不卡视频| 亚洲超碰97人人做人人爱| 久久激情五月婷婷| 成人精品鲁一区一区二区| 欧美无砖专区一中文字| 欧美哺乳videos| 最新日韩av在线| 日韩黄色片在线观看| 国产传媒久久文化传媒| 欧美亚洲国产一区二区三区va| 精品国免费一区二区三区| 一区在线观看免费| 美国毛片一区二区三区| 成人av网站在线观看免费| 91超碰这里只有精品国产| 国产午夜亚洲精品午夜鲁丝片| 亚洲一区二区成人在线观看| 国产美女精品人人做人人爽| 色哟哟日韩精品| 欧美精品一区二区精品网| 一区2区3区在线看| 国产一区二区三区| 欧美喷潮久久久xxxxx| 国产亚洲综合色| 日韩—二三区免费观看av| av电影在线观看不卡| 欧美成va人片在线观看| 一区二区三区毛片| 国产99久久久精品| 日韩欧美中文字幕制服| 亚洲影院在线观看| 成人丝袜高跟foot| 精品国产一区二区亚洲人成毛片| 99久久精品免费精品国产| 日韩欧美色电影| 亚洲午夜av在线| 成人午夜视频福利| 日韩精品资源二区在线| 亚洲中国最大av网站| 99热国产精品| 国产亚洲欧美日韩俺去了| 日韩综合在线视频| 91国产福利在线| 一区在线观看免费| 成人影视亚洲图片在线| 精品国产麻豆免费人成网站| 五月天亚洲婷婷| 91成人看片片| 一区二区在线电影| 99国产精品一区| 国产欧美精品一区二区色综合 | 亚洲主播在线观看| 91美女福利视频| 自拍偷拍亚洲欧美日韩| 国产69精品久久久久毛片| 精品国产成人在线影院| 日韩电影在线观看网站| 欧美疯狂做受xxxx富婆| 亚洲mv大片欧洲mv大片精品| 日本久久一区二区三区| 一区二区中文视频| 99久久精品免费看国产| 国产精品电影院| 99vv1com这只有精品| 日韩理论片中文av| av在线播放一区二区三区| 国产精品不卡在线观看| 成人午夜电影久久影院| 国产精品影音先锋| 精品国产一区二区在线观看| 精品中文字幕一区二区小辣椒 | 亚洲第一久久影院| 欧美在线你懂的| 午夜精品一区二区三区免费视频| 欧美色图激情小说| 天堂在线一区二区| 日韩亚洲欧美中文三级| 激情文学综合插| 国产亚洲精久久久久久| 国产91精品久久久久久久网曝门| 国产午夜一区二区三区| 99免费精品视频| 亚洲一区二区三区美女| 欧美一区午夜视频在线观看| 免费一级片91| 久久久亚洲精品一区二区三区 | 欧美久久久久中文字幕| 日本三级韩国三级欧美三级| 日韩欧美一卡二卡| 国产麻豆9l精品三级站| 国产精品久久久久7777按摩 | 欧美激情艳妇裸体舞| 成人性生交大片免费看视频在线| 国产精品国产三级国产三级人妇| 色88888久久久久久影院野外| 爽爽淫人综合网网站| 欧美xxxxxxxxx| 不卡视频在线看| 婷婷一区二区三区| 久久综合色8888| 99精品国产视频| 天天影视色香欲综合网老头| 精品国产一区二区精华| 91色在线porny| 蜜臀av性久久久久蜜臀aⅴ| 国产亚洲短视频| 欧美性欧美巨大黑白大战| 奇米影视在线99精品| 国产日韩欧美不卡在线| 欧美主播一区二区三区美女| 精一区二区三区| 亚洲天堂网中文字| 欧美一区二视频| 国产成人免费网站| 亚洲福中文字幕伊人影院| 久久久久久久久久久久久久久99| 91蝌蚪porny| 日本欧洲一区二区| 国产精品久久久久久亚洲毛片 | 风间由美一区二区av101 | 91国产视频在线观看| 免费在线观看一区| 国产精品午夜在线| 日韩一级完整毛片| 91蝌蚪国产九色| 国产精品一区在线观看乱码 | 色综合久久九月婷婷色综合| 麻豆成人久久精品二区三区小说| 国产精品久久久久久亚洲毛片| 91精品国产色综合久久不卡蜜臀 | 麻豆91在线播放| 国产99一区视频免费| 亚洲福利一区二区三区| 国产日韩精品久久久| 宅男噜噜噜66一区二区66| 99re这里只有精品首页| 国产精品自拍三区| 日韩精品福利网| 亚洲欧美乱综合| 久久亚洲综合av| 欧美绝品在线观看成人午夜影视| 成人激情图片网| 国产精品资源在线| 日韩精品一卡二卡三卡四卡无卡| 最新日韩av在线| 中文字幕av不卡| 日韩精品一区二区三区三区免费| 欧美在线短视频| 91在线无精精品入口| 粉嫩欧美一区二区三区高清影视| 六月丁香综合在线视频| 五月婷婷久久综合| 亚洲一区二区三区在线播放| 国产精品久久免费看| 国产亚洲一区二区三区四区| 欧美大片拔萝卜| 制服.丝袜.亚洲.另类.中文| 欧美亚洲综合另类| 91国在线观看| 欧洲视频一区二区| 91丨九色丨国产丨porny| 成人小视频免费观看| 国产69精品久久777的优势| 国产精品一区二区不卡| 国产真实乱偷精品视频免| 久久成人免费网站| 极品少妇xxxx精品少妇偷拍 | 欧美日本乱大交xxxxx|