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

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

?? bsskingrids.pas

?? 實現(xiàn)網(wǎng)絡(luò)流量的生成,為cs結(jié)構(gòu),可以控制流量大小
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
  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;

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;

{ Private. LongMulDiv multiplys the first two arguments and then
  divides by the third.  This is used so that real number
  (floating point) arithmetic is not necessary.  This routine saves
  the possible 64-bit value in a temp before doing the divide.  Does
  not do error checking like divide by zero.  Also assumes that the
  result is in the 32-bit range (Actually 31-bit, since this algorithm
  is for unsigned). }

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

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

constructor TbsSkinInplaceEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ParentCtl3D := False;
  Ctl3D := False;
  TabStop := False;
  BorderStyle := bsNone;
end;

procedure TbsSkinInplaceEdit.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.Style := Params.Style or ES_MULTILINE;
end;

procedure TbsSkinInplaceEdit.SetGrid(Value: TbsSkinCustomGrid);
begin
  FGrid := Value;
end;

procedure TbsSkinInplaceEdit.CMShowingChanged(var Message: TMessage);
begin
end;

procedure TbsSkinInplaceEdit.WMGetDlgCode(var Message: TWMGetDlgCode);
begin
  inherited;
  if goTabs in Grid.Options then
    Message.Result := Message.Result or DLGC_WANTTAB;
end;

procedure TbsSkinInplaceEdit.WMPaste(var Message);
begin
  if not EditCanModify then Exit;
  inherited
end;

procedure TbsSkinInplaceEdit.WMClear(var Message);
begin
  if not EditCanModify then Exit;
  inherited;
end;

procedure TbsSkinInplaceEdit.WMCut(var Message);
begin
  if not EditCanModify then Exit;
  inherited;
end;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频在线观看一区二区三区| 国产精品久久久久久一区二区三区| 亚洲综合丁香婷婷六月香| av电影天堂一区二区在线观看| 国产精品污污网站在线观看| 成人免费高清在线| ㊣最新国产の精品bt伙计久久| 91久久人澡人人添人人爽欧美| 亚洲国产一区二区在线播放| 欧美一级日韩免费不卡| 精品一区二区综合| 国产日韩av一区二区| 一本久久a久久免费精品不卡| 亚洲国产综合91精品麻豆| 91精品国产一区二区| 国产剧情一区二区| 亚洲精品视频一区二区| 欧美一区二区免费视频| 国产精品白丝jk黑袜喷水| 国产精品成人在线观看| 欧美色精品在线视频| 蜜臀99久久精品久久久久久软件| 久久久不卡网国产精品二区| 91亚洲国产成人精品一区二区三| 五月婷婷激情综合网| 精品88久久久久88久久久| 91在线观看成人| 久久99久久精品| 最新热久久免费视频| 欧美高清精品3d| www.日本不卡| 精品一区二区三区蜜桃| 亚洲欧美日韩久久| 久久久噜噜噜久噜久久综合| 欧美亚洲综合网| 国产成人啪免费观看软件 | 欧美大片在线观看一区| 成人精品免费网站| 日韩精品电影一区亚洲| 日本一区二区三区在线不卡| 欧美日韩高清一区二区| 岛国一区二区三区| 男人的天堂亚洲一区| 亚洲久草在线视频| 久久欧美中文字幕| 欧美老人xxxx18| 99久久免费国产| 国产麻豆一精品一av一免费| 日韩和欧美一区二区| 国产精品盗摄一区二区三区| 久久在线观看免费| 4hu四虎永久在线影院成人| 成人av资源站| 国产精品亚洲а∨天堂免在线| 奇米精品一区二区三区在线观看| 亚洲综合色丁香婷婷六月图片| 欧美国产日韩精品免费观看| 精品福利一区二区三区| 欧美精品自拍偷拍动漫精品| 91麻豆.com| 99久久久免费精品国产一区二区 | 久久精品人人做人人综合| 91超碰这里只有精品国产| 色av一区二区| 色婷婷综合久久久久中文一区二区| 国产.欧美.日韩| 国产高清在线观看免费不卡| 久久99热99| 青青草91视频| 欧美bbbbb| 秋霞电影一区二区| 日韩1区2区3区| 日韩在线一区二区三区| 亚洲第一二三四区| 亚洲v中文字幕| 日韩av一区二区三区四区| 婷婷综合另类小说色区| 亚洲国产成人va在线观看天堂| 亚洲小说春色综合另类电影| 亚洲自拍另类综合| 亚洲一区二区精品视频| 亚洲成人在线免费| 天天操天天干天天综合网| 天天综合网 天天综合色| 日韩专区欧美专区| 麻豆国产欧美日韩综合精品二区| 青青草原综合久久大伊人精品 | 日本三级韩国三级欧美三级| 日本成人在线一区| 激情综合五月天| 国产精品一二二区| 成人a区在线观看| 欧美综合天天夜夜久久| 7799精品视频| 久久久久久久久伊人| 欧美国产日韩亚洲一区| 亚洲精选免费视频| 亚洲一区影音先锋| 美女脱光内衣内裤视频久久网站 | 日本欧美大码aⅴ在线播放| 视频一区二区国产| 美女性感视频久久| 国产成人免费视频| 91久久线看在观草草青青| 欧美乱妇一区二区三区不卡视频| www国产精品av| 成人欧美一区二区三区白人| 日韩精品国产欧美| 国产精品一区二区在线观看不卡| jlzzjlzz亚洲女人18| 欧美日韩精品一区二区三区四区 | 免费久久99精品国产| 国产麻豆精品95视频| 色综合久久久久综合| 日韩一级二级三级精品视频| 国产欧美日韩中文久久| 亚洲一区二区三区三| 国产一区二区三区观看| 欧洲精品在线观看| 久久这里只精品最新地址| 亚洲欧美日韩国产一区二区三区| 日本不卡一区二区三区高清视频| 懂色中文一区二区在线播放| 欧美日韩国产精选| 国产精品视频在线看| 免费在线观看视频一区| 91蝌蚪porny九色| 日韩欧美一二三| 一区二区三区欧美在线观看| 国产精品一品视频| 欧美美女一区二区在线观看| 国产精品进线69影院| 毛片基地黄久久久久久天堂| 日本道精品一区二区三区| 国产日韩欧美制服另类| 日韩二区在线观看| 在线观看91视频| 亚洲色图在线视频| 精品亚洲国内自在自线福利| 欧美自拍丝袜亚洲| 中文字幕一区在线观看| 国产ts人妖一区二区| 欧美大白屁股肥臀xxxxxx| 亚洲综合免费观看高清完整版| 成人午夜视频网站| 久久亚洲影视婷婷| 视频一区视频二区中文字幕| 欧洲另类一二三四区| 国产精品每日更新在线播放网址 | 成人成人成人在线视频| 欧美va亚洲va在线观看蝴蝶网| 天天综合色天天综合| 欧美中文字幕不卡| 综合久久久久综合| 成人亚洲一区二区一| 久久久综合九色合综国产精品| 免费人成网站在线观看欧美高清| 欧美日韩黄色一区二区| 一区二区三区中文免费| 91丨porny丨国产| 国产精品久久三| av网站免费线看精品| 国产免费观看久久| 成人自拍视频在线| 欧美激情一区二区三区四区| 国产精品一品二品| 久久久不卡网国产精品二区| 国产成人综合亚洲网站| 久久久久国产精品人| 国产一区二区三区免费播放| 国产午夜亚洲精品理论片色戒| 国产精品一区久久久久| 国产午夜亚洲精品羞羞网站| 成人国产免费视频| **欧美大码日韩| 欧美视频精品在线观看| 亚洲成人动漫一区| 欧美一区二区高清| 狠狠色狠狠色综合系列| 久久精品亚洲麻豆av一区二区| 国产99精品视频| 国产精品电影院| 欧美优质美女网站| 日本人妖一区二区| 久久综合九色综合欧美亚洲| 成人av在线电影| 一区二区三区在线视频观看| 欧美精品一二三| 国内精品自线一区二区三区视频| 国产午夜精品一区二区| 99riav一区二区三区| 亚洲18女电影在线观看| 欧美成人女星排名| 不卡一区二区三区四区| 亚洲制服丝袜av| 欧美精品一区二区在线播放| 99久久久久免费精品国产 | 欧美色网一区二区| 久久国产精品99精品国产| 国产精品美女久久久久久久网站|