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

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

?? gridseh.pas

?? 一個功能強大的DBGRID控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
  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: TIntegerArray; Index, Amount: Longint; Default: Integer);
// Adds or deletes itmes in Extents  from 'Index' with 'Amount'.
var
  LongSize, OldSize: LongInt;
  NewSize: Integer;
  I: Integer;
begin
  if Amount <> 0 then
  begin
    if Length(Extents) = 0 then OldSize := 0
    else OldSize := 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);
    SetLength(Extents, NewSize);
    if Length(Extents) <> 0 then
    begin
      I := Index + 1;
      while I < NewSize do
      begin
        Extents[I] := Default;
        Inc(I);
      end;
      Extents[0] := NewSize-1;
    end;
  end;
end;

procedure UpdateExtents(var Extents: TIntegerArray; NewSize: Longint;
  Default: Integer);
var
  OldSize: Integer;
begin
  OldSize := 0;
  if Length(Extents) <> 0 then OldSize := Extents[0];
  ModifyExtents(Extents, OldSize, NewSize - OldSize, Default);
end;

procedure MoveExtent(var Extents: TIntegerArray; FromIndex, ToIndex: Longint);
var
  Extent, I: Integer;
begin
  if Length(Extents) <> 0 then
  begin
    Extent := Extents[FromIndex];
    if FromIndex < ToIndex then
      for I := FromIndex + 1 to ToIndex do
        Extents[I - 1] := Extents[I]
    else if FromIndex > ToIndex then
      for I := FromIndex - 1 downto ToIndex do
        Extents[I + 1] := Extents[I];
    Extents[ToIndex] := Extent;
  end;
end;

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

{procedure KillMessage(Wnd: HWnd; Msg: Integer);
// Delete the requested message from the queue, but throw back
// any WM_QUIT msgs that PeekMessage may also return
var
  M: TMsg;
begin
  M.Message := 0;
  if PeekMessage(M, Wnd, Msg, Msg, pm_Remove) and (M.Message = WM_QUIT) then
    PostQuitMessage(M.wparam);
end;
}

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

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

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

procedure TInplaceEdit.SetGrid(Value: TCustomGridEh);
begin
  FGrid := Value;
end;

procedure TInplaceEdit.CMShowingChanged(var Message: TMessage);
begin
  { Ignore showing using the Visible property }
end;

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

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

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

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

procedure TInplaceEdit.DblClick;
begin
{$IFDEF CIL}
//  Grid.DblClick;
{$ELSE}
  Grid.DblClick;
{$ENDIF}
end;

function TInplaceEdit.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
  MousePos: TPoint): Boolean;
begin
{$IFDEF CIL}
//  Result := Grid.DoMouseWheel(Shift, WheelDelta, MousePos);
{$ELSE}
  Result := Grid.DoMouseWheel(Shift, WheelDelta, MousePos);
{$ENDIF}
end;

function TInplaceEdit.EditCanModify: Boolean;
begin
  Result := Grid.CanEditModify;
end;

procedure TInplaceEdit.KeyDown(var Key: Word; Shift: TShiftState);

  procedure SendToParent;
  begin
    Grid.KeyDown(Key, Shift);
    Key := 0;
  end;

  procedure ParentEvent;
  var
    GridKeyDown: TKeyEvent;
  begin
{$IFDEF CIL}
//    GridKeyDown := Grid.OnKeyDown;
{$ELSE}
    GridKeyDown := Grid.OnKeyDown;
{$ENDIF}
    if Assigned(GridKeyDown) then GridKeyDown(Grid, Key, Shift);
  end;

  function ForwardMovement: Boolean;
  begin
    Result := goAlwaysShowEditor in Grid.Options;
  end;

  function Ctrl: Boolean;
  begin
    Result := ssCtrl in Shift;
  end;

  function Selection: TSelection;
  begin
//    SendMessage(Handle, EM_GETSEL, Longint(@Result.StartPos), Longint(@Result.EndPos));
    MessageSendGetSel(Handle, Result.StartPos, Result.EndPos);
  end;

  function CaretPos: Integer;
  var
    P: TPoint;
  begin
    Windows.GetCaretPos(P);
    Result := SendMessage(Handle, EM_CHARFROMPOS, 0, MakeLong(P.X, P.Y));
  end;

  function RightSide: Boolean;
  begin
    with Selection do
      Result := (CaretPos = GetTextLen) and
        ((StartPos = 0) or (EndPos = StartPos)) and (EndPos = GetTextLen);
   end;

  function LeftSide: Boolean;
  begin
    with Selection do
      Result := (CaretPos = 0) and (StartPos = 0) and
        ((EndPos = 0) or (EndPos = GetTextLen));
  end;

begin
  case Key of
    VK_UP, VK_DOWN, VK_PRIOR, VK_NEXT, VK_ESCAPE: SendToParent;
    VK_INSERT:
      if Shift = [] then SendToParent
      else if (Shift = [ssShift]) and not Grid.CanEditModify then Key := 0;
    VK_LEFT: if ForwardMovement and (Ctrl or LeftSide) then SendToParent;
    VK_RIGHT: if ForwardMovement and (Ctrl or RightSide) then SendToParent;
    VK_HOME: if ForwardMovement and (Ctrl or LeftSide) then SendToParent;
    VK_END: if ForwardMovement and (Ctrl or RightSide) then SendToParent;
    VK_F2:
      begin
        ParentEvent;
        if Key = VK_F2 then
        begin
          Deselect;
          Exit;
        end;
      end;
    VK_TAB: if not (ssAlt in Shift) then SendToParent;
    VK_DELETE:
      if Ctrl then
        SendToParent
      else
        if not Grid.CanEditModify then Key := 0;
  end;
  if Key <> 0 then
  begin
    ParentEvent;
    inherited KeyDown(Key, Shift);
  end;
end;

procedure TInplaceEdit.KeyPress(var Key: Char);
var
  Selection: TSelection;
begin
  Grid.KeyPress(Key);
  if (Key >= #32) and not Grid.CanEditAcceptKey(Key) then
  begin
    Key := #0;
    MessageBeep(0);
  end;
  case Key of
    #9, #27: Key := #0;
    #13:
      begin
        MessageSendGetSel(Handle, Selection.StartPos, Selection.EndPos);
//        SendMessage(Handle, EM_GETSEL, Longint(@Selection.StartPos), Longint(@Selection.EndPos));
        if (Selection.StartPos = 0) and (Selection.EndPos = GetTextLen) then
          Deselect else
          SelectAll;
        Key := #0;
      end;
    ^H, ^V, ^X, #32..High(Char):
      if not Grid.CanEditModify then Key := #0;
  end;
  if Key <> #0 then inherited KeyPress(Key);
end;

procedure TInplaceEdit.KeyUp(var Key: Word; Shift: TShiftState);
begin
{$IFDEF CIL}
//  Grid.KeyUp(Key, Shift);
{$ELSE}
  Grid.KeyUp(Key, Shift);
{$ENDIF}
end;

procedure TInplaceEdit.WndProc(var Message: TMessage);
begin
  case Message.Msg of
    WM_SETFOCUS:
      begin
        if (GetParentForm(Self) = nil) or GetParentForm(Self).SetFocusedControl(Grid) then
          Dispatch(Message);
        Exit;
      end;
    WM_LBUTTONDOWN:
      begin
        if UINT(GetMessageTime - FClickTime) < GetDoubleClickTime then
          Message.Msg := WM_LBUTTONDBLCLK;
        FClickTime := 0;
      end;
  end;
  inherited WndProc(Message);
end;

procedure TInplaceEdit.Deselect;
begin
  SendMessage(Handle, EM_SETSEL, $7FFFFFFF, Longint($FFFFFFFF));
end;

procedure TInplaceEdit.Invalidate;
var
  Cur: TRect;
begin
  ValidateRect(Handle, nil);
  InvalidateRect(Handle, nil, True);
  Windows.GetClientRect(Handle, Cur);
  MapWindowPoints(Handle, Grid.Handle, Cur, 2);
  WindowsValidateRect(Grid.Handle, Cur);
  WindowsInvalidateRect(Grid.Handle, Cur, False);
end;

procedure TInplaceEdit.Hide;
begin
  if HandleAllocated and IsWindowVisible(Handle) then
  begin
    Invalidate;
    SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_HIDEWINDOW or SWP_NOZORDER or
      SWP_NOREDRAW);
    if Focused then Windows.SetFocus(Grid.Handle);
  end;
end;

function TInplaceEdit.PosEqual(const Rect: TRect): Boolean;
var
  Cur: TRect;
begin
  GetWindowRect(Handle, Cur);
  MapWindowPoints(HWND_DESKTOP, Grid.Handle, Cur, 2);
  Result := EqualRect(Rect, Cur);
end;

procedure TInplaceEdit.InternalMove(const Loc: TRect; Redraw: Boolean);
begin
  if IsRectEmpty(Loc) then Hide
  else
  begin
    CreateHandle;
    Redraw := Redraw or not IsWindowVisible(Handle);
    Invalidate;
    with Loc do
      SetWindowPos(Handle, HWND_TOP, Left, Top, Right - Left, Bottom - Top,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产秦先生| 7777精品伊人久久久大香线蕉最新版| 一区二区三区国产精品| 欧美激情一二三区| 精品久久国产字幕高潮| 精品粉嫩aⅴ一区二区三区四区| 69堂精品视频| 日韩精品中文字幕一区| 久久品道一品道久久精品| 久久综合九色综合97_久久久| 久久蜜桃av一区精品变态类天堂 | 欧美精品xxxxbbbb| 欧美人妇做爰xxxⅹ性高电影| 欧美午夜精品电影| 欧美精品 国产精品| 欧美大白屁股肥臀xxxxxx| 欧美精品一区二区久久久| 精品国产乱码久久久久久图片| 日韩欧美综合一区| 精品日韩一区二区三区免费视频| 欧美tickling网站挠脚心| 久久精品亚洲麻豆av一区二区| 久久精品视频免费观看| 国产欧美精品一区| 亚洲一区二区偷拍精品| 久久超级碰视频| 成人97人人超碰人人99| 欧美日韩久久不卡| 欧美精品一区二区三区蜜桃视频 | 国产精品视频在线看| 一区二区三区在线观看动漫| 日韩av网站免费在线| 成人美女在线观看| 欧美精品123区| 亚洲欧洲国产日本综合| 午夜私人影院久久久久| 成人网在线播放| 777a∨成人精品桃花网| 国产精品网友自拍| 日产精品久久久久久久性色| av在线不卡免费看| 精品国内二区三区| 伊人夜夜躁av伊人久久| 国产在线精品一区二区不卡了 | 精品国产欧美一区二区| 亚洲色图第一区| 国产剧情在线观看一区二区| 欧美麻豆精品久久久久久| 国产午夜精品久久久久久久| 日本不卡视频一二三区| 色综合久久中文字幕| 欧美经典三级视频一区二区三区| 婷婷成人综合网| 日本高清成人免费播放| 亚洲国产精品v| 九九国产精品视频| 51精品视频一区二区三区| 亚洲精品国产精品乱码不99| 国产乱理伦片在线观看夜一区| 欧美一区二区三区婷婷月色| 亚洲综合丁香婷婷六月香| 丰满亚洲少妇av| 国产亚洲欧美激情| 国产综合久久久久影院| 日韩欧美国产小视频| 日韩国产欧美在线视频| 欧美精品丝袜中出| 亚洲成人免费电影| 欧美午夜不卡视频| 亚洲精品欧美激情| 在线亚洲欧美专区二区| 亚洲摸摸操操av| 色诱亚洲精品久久久久久| 自拍偷拍亚洲激情| 色丁香久综合在线久综合在线观看| 国产精品私房写真福利视频| 成人在线视频一区二区| 欧美高清在线视频| 成人黄色综合网站| 最近中文字幕一区二区三区| 成人国产免费视频| 中文字幕欧美激情| www.亚洲激情.com| 亚洲三级电影网站| 在线观看区一区二| 亚洲精品成人少妇| 欧美精三区欧美精三区| 麻豆精品蜜桃视频网站| 久久久久国产精品麻豆ai换脸| 国产成人丝袜美腿| 亚洲精品中文在线观看| 欧美日韩久久久久久| 美国十次了思思久久精品导航| 久久久久久久国产精品影院| 成+人+亚洲+综合天堂| 一区二区三区蜜桃| 日韩一级成人av| 国产成人亚洲综合a∨婷婷图片| 国产精品久久久久久久久久免费看 | 欧美性一区二区| 日韩电影在线观看电影| 精品国产第一区二区三区观看体验 | 一本色道久久综合亚洲精品按摩| 亚洲综合av网| 久久一区二区三区四区| 99re这里都是精品| 日韩精品一二区| 国产欧美日韩一区二区三区在线观看| 91丨九色丨尤物| 免费在线视频一区| 综合中文字幕亚洲| 精品久久久久久久一区二区蜜臀| 成人黄页毛片网站| 人妖欧美一区二区| 国产精品久久毛片a| 91精品国产一区二区三区蜜臀| 国产成人av一区二区三区在线观看| 亚洲愉拍自拍另类高清精品| 久久精品在这里| 91麻豆精品国产91久久久资源速度 | 亚洲综合色成人| 欧美激情中文字幕一区二区| 欧美男生操女生| 一本到高清视频免费精品| 国产最新精品免费| 日本欧美韩国一区三区| 亚洲免费在线观看| 国产精品天天摸av网| 精品国产一区二区三区久久久蜜月| 色菇凉天天综合网| 成人av片在线观看| 国产一区二区视频在线| 日韩影视精彩在线| 国产在线看一区| 国产精品白丝在线| 国产精品久久久久久久久图文区| 日韩一区二区免费电影| 欧美三区在线观看| 99精品热视频| 成人黄色一级视频| 国产高清在线精品| 极品销魂美女一区二区三区| 蜜臀av亚洲一区中文字幕| 午夜电影久久久| 亚洲国产精品一区二区www | 午夜在线电影亚洲一区| 亚洲人快播电影网| 亚洲图片你懂的| 亚洲欧洲成人av每日更新| 亚洲国产精华液网站w| 亚洲国产岛国毛片在线| 国产精品另类一区| 亚洲国产成人在线| 国产精品成人一区二区艾草 | 欧洲一区二区av| 色又黄又爽网站www久久| 色悠悠亚洲一区二区| 91在线云播放| 在线观看精品一区| 欧洲一区在线电影| 欧美精品vⅰdeose4hd| 久久久久国产精品麻豆ai换脸| 久久综合给合久久狠狠狠97色69| 精品久久久久99| 国产精品全国免费观看高清| 国产精品不卡视频| 亚洲国产精品一区二区久久 | 久久久久久久久久久久久女国产乱 | 日产精品久久久久久久性色| 美美哒免费高清在线观看视频一区二区 | 欧美日本乱大交xxxxx| 欧美一区在线视频| 精品电影一区二区三区| 国产精品久久久久久妇女6080| 中文字幕一区二区不卡| 亚洲国产日韩av| 国精品**一区二区三区在线蜜桃| 成人精品电影在线观看| 欧美制服丝袜第一页| 日韩精品一区二区三区四区| 中文字幕欧美三区| 一区二区欧美国产| 久久成人羞羞网站| 99综合影院在线| 欧美一区二区视频在线观看| 中文字幕精品—区二区四季| 一区二区成人在线| 麻豆成人91精品二区三区| 成人激情动漫在线观看| 91精品国产一区二区| 成人欧美一区二区三区在线播放| 天天影视涩香欲综合网| 国产91精品入口| 91麻豆精品国产91久久久使用方法 | 蜜臂av日日欢夜夜爽一区| 91小视频免费观看| 日韩欧美一区中文| 伊人夜夜躁av伊人久久| 福利一区二区在线| 精品久久久久av影院|