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

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

?? gridseh.pas

?? 一個功能強大的DBGRID控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
        SWP_SHOWWINDOW or SWP_NOREDRAW);
    BoundsChanged;
    if Redraw then Invalidate;
    if Grid.Focused then
      Windows.SetFocus(Handle);
  end;
end;

procedure TInplaceEdit.BoundsChanged;
var
  R: TRect;
begin
  R := Rect(2, 2, Width - 2, Height);
//  SendMessage(Handle, EM_SETRECTNP, 0, LongInt(@R));
  SendStructMessage(Handle, EM_SETRECTNP, 0, R);
  SendMessage(Handle, EM_SCROLLCARET, 0, 0);
end;

procedure TInplaceEdit.UpdateLoc(const Loc: TRect);
begin
  InternalMove(Loc, False);
end;

function TInplaceEdit.Visible: Boolean;
begin
  Result := IsWindowVisible(Handle);
end;

procedure TInplaceEdit.Move(const Loc: TRect);
begin
  InternalMove(Loc, True);
end;

procedure TInplaceEdit.SetFocus;
begin
  if IsWindowVisible(Handle) then
    Windows.SetFocus(Handle);
end;

procedure TInplaceEdit.UpdateContents;
begin
  Text := '';
  EditMask := Grid.GetEditMask(Grid.Col, Grid.Row);
  Text := Grid.GetEditText(Grid.Col, Grid.Row);
  MaxLength := Grid.GetEditLimit;
end;

{ TCustomGridEh }

constructor TCustomGridEh.Create(AOwner: TComponent);
const
  GridStyle = [csCaptureMouse, csOpaque, csDoubleClicks];
begin
  inherited Create(AOwner);
  if NewStyleControls then
    ControlStyle := GridStyle
  else
    ControlStyle := GridStyle + [csFramed];
{$IFDEF EH_LIB_7}
  ControlStyle := ControlStyle + [csNeedsBorderPaint];
{$ENDIF}
  FCanEditModify := True;
  FColCount := 5;
  FRowCount := 5;
  FFixedCols := 1;
  FFixedRows := 1;
  FGridLineWidth := 1;
  FOptions := [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine,
    goRangeSelect];
  DesignOptionsBoost := [goColSizing, goRowSizing];
  FFixedColor := clBtnFace;
  FScrollBars := ssBoth;
  FBorderStyle := bsSingle;
  FDefaultColWidth := 64;
  FDefaultRowHeight := 24;
  FDefaultDrawing := True;
  FSaveCellExtents := True;
  FEditorMode := False;
  Color := clWindow;
  ParentColor := False;
  TabStop := True;
  SetBounds(Left, Top, FColCount * FDefaultColWidth,
    FRowCount * FDefaultRowHeight);
  Initialize;
  FFixedLineColor := clBlack;
  FGridLineColors := CreateGridLineColors;
  FMouseDownCell := MouseCoord(-1, -1);
end;

destructor TCustomGridEh.Destroy;
begin
  FreeAndNil(FInplaceEdit);
  inherited Destroy;
//  FreeMem(FColWidths);
//  FreeMem(FRowHeights);
//  FreeMem(FTabStops);
  FreeAndNil(FGridLineColors);
end;

procedure TCustomGridEh.AdjustSize(Index, Amount: Longint; Rows: Boolean);
// Adds or deletes rows or columns from 'Index' with 'Amount'.
var
  NewCur: TGridCoord;
  OldRows, OldCols, TabColColunt, TabNewCur: Longint;
  MovementX, MovementY: Longint;
  MoveRect: TGridRect;
  ScrollArea: TRect;
  AbsAmount: Longint;

  function DoSizeAdjust(var Count: Longint; var Extents: TIntegerArray;
    DefaultExtent: Integer; var Current: Longint): Longint;
  var
    I: Integer;
    NewCount: Longint;
  begin
    NewCount := Count + Amount;
    if NewCount < Index then InvalidOp(STooManyDeleted);
    if (Amount < 0) and Assigned(Extents) then
    begin
      Result := 0;
      for I := Index to Index - Amount - 1 do
        Inc(Result, Extents[I]);
    end
    else
      Result := Amount * DefaultExtent;
    if Extents <> nil then
      ModifyExtents(Extents, Index, Amount, DefaultExtent);
    Count := NewCount;
    if Current >= Index then
      if (Amount < 0) and (Current < Index - Amount) then Current := Index
      else Inc(Current, Amount);
    if Current >= Count then
      Current := Count - 1;
  end;

begin
  if Amount = 0 then Exit;
  NewCur := FCurrent;
  OldCols := ColCount;
  OldRows := RowCount;
  MoveRect.Left := FixedCols;
  MoveRect.Right := ColCount - 1;
  MoveRect.Top := FixedRows;
  MoveRect.Bottom := RowCount - 1;
  MovementX := 0;
  MovementY := 0;
  AbsAmount := Amount;
  if AbsAmount < 0 then AbsAmount := -AbsAmount;
  if Rows then
  begin
    MovementY := DoSizeAdjust(FRowCount, FRowHeights, DefaultRowHeight, NewCur.Y);
    MoveRect.Top := Index;
    if Index + AbsAmount <= TopRow then MoveRect.Bottom := TopRow - 1;
  end
  else
  begin
    TabColColunt := FColCount;
    TabNewCur := NewCur.X;
    DoSizeAdjust(TabColColunt, FTabStops, Integer(True), TabNewCur);

    MovementX := DoSizeAdjust(FColCount, FColWidths, DefaultColWidth, NewCur.X);

    MoveRect.Left := Index;
    if Index + AbsAmount <= LeftCol then MoveRect.Right := LeftCol - 1;
  end;
  GridRectToScreenRect(MoveRect, ScrollArea, True);
  if not IsRectEmpty(ScrollArea) then
  begin
    WindowsScrollWindow(Handle, MovementX, MovementY, ScrollArea, ScrollArea);
    UpdateWindow(Handle);
  end;
  if (ContraRowCount > 0) or (ContraColCount > 0) then Invalidate;
  SizeChanged(OldCols, OldRows);
  if (NewCur.X <> FCurrent.X) or (NewCur.Y <> FCurrent.Y) then
    MoveCurrent(NewCur.X, NewCur.Y, True, True);
  UpdateScrollRange;
end;

procedure TCustomGridEh.SetContraSize(NewContraColCount, NewContraRowCount: Integer);
var
  OldContraColCount, OldContraRowCount: Integer;
begin
  OldContraColCount := FContraColCount;
  OldContraRowCount := FContraRowCount;

  FContraColCount := NewContraColCount;
  FContraRowCount := NewContraRowCount;
  try
    if Length(FColWidths) <> 0 then
      UpdateExtents(FColWidths, FullColCount, DefaultColWidth);
    if Length(FTabStops) <> 0 then
      UpdateExtents(FTabStops, FullColCount, Integer(True));
    if Length(FRowHeights) <> 0 then
      UpdateExtents(FRowHeights, FullRowCount, DefaultRowHeight);
  except
    FContraColCount := OldContraColCount;
    FContraRowCount := OldContraRowCount;
  end;

  Invalidate;
  UpdateScrollRange;
end;

function TCustomGridEh.BoxRect(ALeft, ATop, ARight, ABottom: Longint): TRect;
var
  GridRect: TGridRect;
begin
  GridRect.Left := ALeft;
  GridRect.Right := ARight;
  GridRect.Top := ATop;
  GridRect.Bottom := ABottom;
  GridRectToScreenRect(GridRect, Result, False);
end;

procedure TCustomGridEh.DoExit;
begin
  inherited DoExit;
  if not (goAlwaysShowEditor in Options) then HideEditor;
end;

function TCustomGridEh.CellRect(ACol, ARow: Longint): TRect;
begin
  Result := BoxRect(ACol, ARow, ACol, ARow);
end;

function TCustomGridEh.CanEditAcceptKey(Key: Char): Boolean;
begin
  Result := True;
end;

function TCustomGridEh.CanGridAcceptKey(Key: Word; Shift: TShiftState): Boolean;
begin
  Result := True;
end;

function TCustomGridEh.CanEditModify: Boolean;
begin
  Result := FCanEditModify;
end;

function TCustomGridEh.CanEditShow: Boolean;
begin
  Result := ([goRowSelect, goEditing] * Options = [goEditing]) and
    FEditorMode and not (csDesigning in ComponentState) and HandleAllocated and
    ((goAlwaysShowEditor in Options) or IsActiveControl);
end;

function TCustomGridEh.IsActiveControl: Boolean;
var
  H: Hwnd;
  ParentForm: TCustomForm;
begin
  Result := False;
  ParentForm := GetParentForm(Self);
  if Assigned(ParentForm) then
  begin
    if (ParentForm.ActiveControl = Self) then
      Result := True
  end
  else
  begin
    H := GetFocus;
    while IsWindow(H) and (Result = False) do
    begin
      if H = WindowHandle then
        Result := True
      else
        H := GetParent(H);
    end;
  end;
end;

function TCustomGridEh.GetEditMask(ACol, ARow: Longint): string;
begin
  Result := '';
end;

function TCustomGridEh.GetEditText(ACol, ARow: Longint): string;
begin
  Result := '';
end;

procedure TCustomGridEh.SetEditText(ACol, ARow: Longint; const Value: string);
begin
end;

function TCustomGridEh.GetEditLimit: Integer;
begin
  Result := 0;
end;

function TCustomGridEh.GetEditStyle(ACol, ARow: Longint): TEditStyle;
begin
  Result := esSimple;
end;

procedure TCustomGridEh.HideEditor;
begin
  FEditorMode := False;
  HideEdit;
end;

procedure TCustomGridEh.ShowEditor;
begin
  FEditorMode := True;
  UpdateEdit;
end;

procedure TCustomGridEh.ShowEditorChar(Ch: Char);
begin
  ShowEditor;
  if FInplaceEdit <> nil then
    PostMessage(FInplaceEdit.Handle, WM_CHAR, Ord(Ch), 0);
end;

procedure TCustomGridEh.InvalidateEditor;
begin
  FInplaceCol := -1;
  FInplaceRow := -1;
  UpdateEdit;
end;

procedure TCustomGridEh.ReadColWidths(Reader: TReader);
var
  I: Integer;
begin
  with Reader do
  begin
    ReadListBegin;
    for I := 0 to ColCount - 1 do ColWidths[I] := ReadInteger;
    ReadListEnd;
  end;
end;

procedure TCustomGridEh.ReadRowHeights(Reader: TReader);
var
  I: Integer;
begin
  with Reader do
  begin
    ReadListBegin;
    for I := 0 to RowCount - 1 do RowHeights[I] := ReadInteger;
    ReadListEnd;
  end;
end;

procedure TCustomGridEh.WriteColWidths(Writer: TWriter);
var
  I: Integer;
begin
  with Writer do
  begin
    WriteListBegin;
    for I := 0 to ColCount - 1 do WriteInteger(ColWidths[I]);
    WriteListEnd;
  end;
end;

procedure TCustomGridEh.WriteRowHeights(Writer: TWriter);
var
  I: Integer;
begin
  with Writer do
  begin
    WriteListBegin;
    for I := 0 to RowCount - 1 do WriteInteger(RowHeights[I]);
    WriteListEnd;
  end;
end;

procedure TCustomGridEh.DefineProperties(Filer: TFiler);

  function DoColWidths: Boolean;
  begin
    if Filer.Ancestor <> nil then
      Result := not CompareExtents(TCustomGridEh(Filer.Ancestor).FColWidths, FColWidths)
    else
      Result := Length(FColWidths) <> 0;
  end;

  function DoRowHeights: Boolean;
  begin
    if Filer.Ancestor <> nil then
      Result := not CompareExtents(TCustomGridEh(Filer.Ancestor).FRowHeights, FRowHeights)
    else
      Result := Length(FRowHeights) <> 0;
  end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱理伦片在线观看夜一区| 亚洲精品水蜜桃| 在线综合视频播放| 欧美吻胸吃奶大尺度电影| 久久综合九色综合97_久久久| 日韩欧美在线不卡| 国产精品女同互慰在线看| 六月丁香婷婷久久| 在线观看日韩一区| 国产精品不卡一区| 国产xxx精品视频大全| 精品国产凹凸成av人导航| 久久精品免视看| 日韩av高清在线观看| 欧美日韩黄色影视| 精品国产百合女同互慰| 青娱乐精品视频在线| 欧美视频在线一区二区三区 | 一区二区三区四区视频精品免费| 一区二区三区中文在线观看| 国产91在线观看| 久久亚洲私人国产精品va媚药| 久久久欧美精品sm网站| 亚洲品质自拍视频网站| 成人理论电影网| 欧美酷刑日本凌虐凌虐| 亚洲电影视频在线| 精品视频在线看| 亚洲成人一二三| 91精品国产综合久久精品app| 久久精品亚洲精品国产欧美| 亚洲小少妇裸体bbw| 欧美亚洲日本国产| 亚洲午夜国产一区99re久久| 欧美丝袜丝nylons| 奇米四色…亚洲| aaa亚洲精品| 亚洲欧美成人一区二区三区| 日本精品免费观看高清观看| 亚洲精品日产精品乱码不卡| 国产一二精品视频| 国产天堂亚洲国产碰碰| 福利91精品一区二区三区| 欧美激情一区不卡| 99re8在线精品视频免费播放| 日韩一卡二卡三卡| 国产一区二区毛片| 91精品国产欧美一区二区成人| 中文字幕一区二区三区蜜月| 色综合中文字幕国产 | 高清不卡在线观看| 综合自拍亚洲综合图不卡区| 色悠悠久久综合| 日韩精品福利网| 国产偷国产偷精品高清尤物| 一本色道久久加勒比精品| 亚洲第一综合色| 久久嫩草精品久久久精品| 成人av网站在线观看免费| 精品国产区一区| 99久久免费国产| 国产精品久久久久久久久免费桃花| 久久99精品国产麻豆婷婷 | 欧美mv日韩mv亚洲| 成人小视频免费观看| 亚洲一区二区三区四区在线| www.成人在线| 蜜臀精品久久久久久蜜臀| 国产精品久久久久aaaa樱花| 欧美日韩精品一区视频| 成人免费看黄yyy456| 天天综合网天天综合色 | 免费一级片91| 欧美极品xxx| 91精品国产乱| 色天使久久综合网天天| 国产一区二区三区四| 精品国产凹凸成av人网站| 91高清在线观看| 国产不卡视频一区二区三区| 亚洲chinese男男1069| 日本一二三四高清不卡| 日韩亚洲国产中文字幕欧美| 国产成人av影院| 欧美—级在线免费片| 岛国一区二区在线观看| 日本在线不卡一区| 亚洲激情中文1区| 欧美激情在线观看视频免费| 日韩一区二区三区在线视频| 日本精品视频一区二区| 亚洲成人1区2区| 亚洲六月丁香色婷婷综合久久 | 成人av影视在线观看| 激情综合网天天干| 日韩和欧美一区二区三区| 自拍偷拍亚洲欧美日韩| 成人三级伦理片| 精品一区精品二区高清| 久久久国产综合精品女国产盗摄| 丁香另类激情小说| 亚洲视频在线一区| 国产精品少妇自拍| 欧美日韩一卡二卡| 91免费在线播放| 成人av资源下载| 国产99久久久国产精品潘金 | 3d动漫精品啪啪1区2区免费 | 成人av电影观看| 国产成人精品亚洲午夜麻豆| 国产欧美一区二区三区网站| 岛国精品一区二区| 成人v精品蜜桃久久一区| 国产成人亚洲综合a∨婷婷| 久久精品亚洲一区二区三区浴池| 91免费看`日韩一区二区| aaa欧美日韩| 在线免费观看一区| 欧美中文字幕亚洲一区二区va在线| 另类中文字幕网| 韩国v欧美v亚洲v日本v| 国产一区二区三区综合| 国产精品白丝av| 成人精品亚洲人成在线| 97久久人人超碰| 欧美日韩国产免费一区二区| 777亚洲妇女| 久久视频一区二区| 亚洲特黄一级片| 亚洲电影一级黄| 麻豆91小视频| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 色婷婷av一区二区三区gif| 欧美亚洲禁片免费| 99久久精品免费| 欧美性猛交xxxxxxxx| 欧美一区二区三区四区高清| 欧亚一区二区三区| 欧美一区二区三区的| 色天天综合色天天久久| 制服丝袜激情欧洲亚洲| 国产亚洲精品aa| 亚洲国产一区在线观看| 激情欧美一区二区| 秋霞午夜鲁丝一区二区老狼| 夜夜嗨av一区二区三区网页 | 久久国产精品区| 男女性色大片免费观看一区二区 | 国产在线视频一区二区| caoporn国产精品| 欧美精品aⅴ在线视频| 久久人人超碰精品| 亚洲男人电影天堂| 久久成人精品无人区| 成人av网站免费观看| 在线播放视频一区| 国产精品日产欧美久久久久| 亚洲v日本v欧美v久久精品| 国产精品亚洲综合一区在线观看| 精品一区二区免费视频| 91在线视频免费观看| 日韩欧美国产综合一区 | 人禽交欧美网站| 91在线观看下载| 2017欧美狠狠色| 国产午夜精品久久久久久免费视 | 亚洲少妇屁股交4| 久久国产日韩欧美精品| 在线中文字幕一区二区| 中文一区一区三区高中清不卡| 国产日韩欧美在线一区| 日韩av网站在线观看| 日本伦理一区二区| 国产精品日韩成人| 亚洲女同一区二区| 亚洲成av人片在线观看无码| 丁香婷婷深情五月亚洲| 日韩欧美国产午夜精品| 亚洲精品在线电影| 亚洲v中文字幕| 国产一区在线观看视频| 日韩网站在线看片你懂的| 午夜视频在线观看一区二区| 色噜噜狠狠色综合欧洲selulu| 欧美另类高清zo欧美| 亚洲欧美福利一区二区| jizzjizzjizz欧美| 亚洲国产精品成人久久综合一区| 亚洲精品欧美综合四区| 94-欧美-setu| 亚洲日本乱码在线观看| av电影一区二区| 日韩一区二区三区电影| 日韩中文欧美在线| 福利一区二区在线| 国产欧美一区二区三区鸳鸯浴| 一区二区三区四区视频精品免费| 看国产成人h片视频| 日韩欧美国产精品| 日韩高清电影一区|