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

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

?? bsskingrids.pas

?? delphi 皮膚控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
  begin
    ParentEvent;
    inherited KeyDown(Key, Shift);
  end;
end;

procedure TbsSkinInplaceEdit.KeyPress(var Key: Char);
var
  Selection: TSelection;
begin
  Grid.KeyPress(Key);
  if (Key in [#32..#255]) and not Grid.CanEditAcceptKey(Key) then
  begin
    Key := #0;
    MessageBeep(0);
  end;
  case Key of
    #9, #27: Key := #0;
    #13:
      begin
        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..#255:
      if not Grid.CanEditModify then Key := #0;
  end;
  if Key <> #0 then inherited KeyPress(Key);
end;

procedure TbsSkinInplaceEdit.KeyUp(var Key: Word; Shift: TShiftState);
begin
  Grid.KeyUp(Key, Shift);
end;

procedure TbsSkinInplaceEdit.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 ((GetMessageTime - FClickTime) < GetDoubleClickTime) then
          Message.Msg := WM_LBUTTONDBLCLK;
        FClickTime := 0;
      end;
  end;
  inherited WndProc(Message);
end;

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

procedure TbsSkinInplaceEdit.Invalidate;
var
  Cur: TRect;
begin
  if not Transparent
  then
    begin
      ValidateRect(Handle, nil);
      InvalidateRect(Handle, nil, True);
      Windows.GetClientRect(Handle, Cur);
      MapWindowPoints(Handle, Grid.Handle, Cur, 2);
      ValidateRect(Grid.Handle, @Cur);
      InvalidateRect(Grid.Handle, @Cur, False);
    end
  else
    inherited;
end;

procedure TbsSkinInplaceEdit.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 TbsSkinInplaceEdit.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 TbsSkinInplaceEdit.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,
        SWP_SHOWWINDOW or SWP_NOREDRAW);
    BoundsChanged;
    if Redraw then Invalidate;
    if Grid.Focused then
      Windows.SetFocus(Handle);
  end;
end;

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

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

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

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

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

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

{ TbsSkinCustomGrid }

constructor TbsSkinCustomGrid.Create(AOwner: TComponent);
const
  GridStyle = [csCaptureMouse, csOpaque, csDoubleClicks];
begin
  inherited Create(AOwner);
  FUseSkinCellHeight := True;
  FUseSkinFont := True;
  FHScrollBar := nil;
  FVScrollBar := nil;
  FTransparent := False;
  Ctl3D := False;
  if NewStyleControls then
    ControlStyle := GridStyle else
    ControlStyle := GridStyle + [csFramed];
  FCanEditModify := True;
  FInCheckScrollBars := False;
  FColCount := 5;
  FRowCount := 5;
  FFixedCols := 1;
  FFixedRows := 1;
  FGridLineWidth := 1;
  FOptions := [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine,
    goRangeSelect];
  DesignOptionsBoost := [goColSizing, goRowSizing];
  FFixedColor := clBtnFace;
  FBorderStyle := bsSingle;
  FDefaultColWidth := 64;
  FDefaultRowHeight := 24;
  FDefaultCellHeight := 20;
  FDefaultDrawing := True;
  FSaveCellExtents := True;
  FEditorMode := False;
  Color := clWindow;
  ParentColor := False;
  TabStop := True;
  SetBounds(Left, Top, FColCount * FDefaultColWidth,
    FRowCount * FDefaultRowHeight);
  Picture := nil;
  BGPicture := nil;
  BGPictureIndex := -1;
  Initialize;
  FSkinDataName := 'grid';
  FGridLineColor := clWindowText;
end;

destructor TbsSkinCustomGrid.Destroy;
begin
  FHScrollBar := nil;
  FVScrollBar := nil;
  FInplaceEdit.Free;
  inherited Destroy;
  FreeMem(FColWidths);
  FreeMem(FRowHeights);
  FreeMem(FTabStops);
end;

procedure TbsSkinCustomGrid.OnVScrollBarPageUp(Sender: TObject);
begin
  SendMessage(Handle, WM_VSCROLL,
  MakeWParam(SB_PAGEUP, 0), 0);
end;

procedure TbsSkinCustomGrid.OnVScrollBarPageDown(Sender: TObject);
begin
  SendMessage(Handle, WM_VSCROLL,
  MakeWParam(SB_PAGEDOWN, 0), 0);
end;

procedure TbsSkinCustomGrid.OnHScrollBarPageUp(Sender: TObject);
begin
  SendMessage(Handle, WM_HSCROLL,
  MakeWParam(SB_PAGEUP, 0), 0);
end;

procedure TbsSkinCustomGrid.OnHScrollBarPageDown(Sender: TObject);
begin
  SendMessage(Handle, WM_HSCROLL,
  MakeWParam(SB_PAGEDOWN, 0), 0);
end;

procedure TbsSkinCustomGrid.OnVScrollBarUpButtonClick(Sender: TObject);
begin
  SendMessage(Handle, WM_VSCROLL,
    MakeWParam(SB_LINEDOWN, VScrollBar.Position), 0);
end;

procedure TbsSkinCustomGrid.OnVScrollBarDownButtonClick(Sender: TObject);
begin
  SendMessage(Handle, WM_VSCROLL,
    MakeWParam(SB_LINEUP, VScrollBar.Position), 0);
end;

procedure TbsSkinCustomGrid.OnHScrollBarUpButtonClick(Sender: TObject);
begin
  FHScrollBar.Position := FHScrollBar.Position + FHScrollBar.SmallChange;
  SendMessage(Handle, WM_HSCROLL,
    MakeWParam(SB_THUMBPOSITION, FHScrollBar.Position), 0);
end;

procedure TbsSkinCustomGrid.OnHScrollBarDownButtonClick(Sender: TObject);
begin
  FHScrollBar.Position := FHScrollBar.Position - FHScrollBar.SmallChange;
  SendMessage(Handle, WM_HSCROLL,
    MakeWParam(SB_THUMBPOSITION, FHScrollBar.Position), 0);
end;

procedure TbsSkinCustomGrid.CMVisibleChanged;
begin
  inherited;
  if FVScrollBar <> nil then FVScrollBar.Visible := Self.Visible;
  if FHScrollBar <> nil then FHScrollBar.Visible := Self.Visible;
end;

procedure TbsSkinCustomGrid.SetDefaultCellHeight(Value: Integer);
begin
  FDefaultCellHeight := Value;
  if FIndex = -1 then DefaultRowHeight := FDefaultCellHeight;
end;

procedure TbsSkinCustomGrid.SetGridLineColor;
begin
  FGridLineColor := Value;
  if FIndex = -1 then RePaint; 
end;

procedure TbsSkinCustomGrid.Notification;
begin
  inherited Notification(AComponent, Operation);
  if (Operation = opRemove) and (AComponent = FHScrollBar)
  then FHScrollBar := nil;
  if (Operation = opRemove) and (AComponent = FVScrollBar)
  then FVScrollBar := nil;
end;

procedure TbsSkinCustomGrid.SetHScrollBar;
begin
  FHScrollBar := Value;
  if FHScrollBar <> nil then
  begin
    FHScrollBar.Enabled := True;
    FHScrollBar.Visible := False;
    FHScrollBar.OnLastChange := OnHScrollBarChange;
    FHScrollBar.OnUpButtonClick := OnHScrollBarUpButtonClick;
    FHScrollBar.OnDownButtonClick := OnHScrollBarDownButtonClick;
    FHScrollBar.OnPageUp := OnHScrollBarPageUp;
    FHScrollBar.OnPageDown := OnHScrollBarPageDown;
  end;
  UpdateScrollRange(True);
end;

procedure TbsSkinCustomGrid.SetVScrollBar;
begin
  FVScrollBar := Value;
  if FVScrollBar <> nil then
  begin
    FVScrollBar.Enabled := True;
    FVScrollBar.Visible := False;
    if goThumbTracking in Options
    then
      FVScrollBar.OnChange := OnVScrollBarChange
    else
      FVScrollBar.OnLastChange := OnVScrollBarChange;
    FVScrollBar.OnUpButtonClick := OnVScrollBarUpButtonClick;
    FVScrollBar.OnDownButtonClick := OnVScrollBarDownButtonClick;
    FVScrollBar.OnPageUp := OnVScrollBarPageUp;
    FVScrollBar.OnPageDown := OnVScrollBarPageDown;
  end;
  UpdateScrollRange(True);
end;

procedure TbsSkinCustomGrid.OnVScrollBarChange(Sender: TObject);
begin
  SendMessage(Handle, WM_VSCROLL,
  MakeWParam(SB_THUMBPOSITION, FVScrollBar.Position), 0);
end;

procedure TbsSkinCustomGrid.OnHScrollBarChange(Sender: TObject);
begin
  SendMessage(Handle, WM_HSCROLL,
  MakeWParam(SB_THUMBPOSITION, FHScrollBar.Position), 0);
end;

procedure TbsSkinCustomGrid.SetParentImage;
begin
  if FTransparent
  then
    begin
      ParentImage.Width := Width;
      ParentImage.Height := Height;
      GetParentImage(Self, ParentImage.Canvas);
    end;
end;


procedure TbsSkinCustomGrid.SetTransparent;
begin
  if FTransparent <> Value
  then
    begin
      FTransparent := Value;
      Invalidate;
    end;
end;

function TbsSkinCustomGrid.GetNewTextRect;
var
  SR1, SR2, R: TRect;
  OX, OY: Integer;
begin
  if FIndex < 0
  then
    begin
      Result := CellR;
      Exit;
    end
  else
    begin
      R := CellR;
      if gdFixed in AState
      then
        begin
          SR1 := FixedCellRect;
          SR2 := FixedCellTextRect;
        end
      else
        begin
          SR1 := SelectCellRect;
          SR2 := CellTextRect;
        end;

      if not IsNullRect(SR2)
      then
        begin
          if not UseSkinCellHeight
          then
            OY := RectHeight(R) - RectHeight(FixedCellRect)
          else
            OY := 0;
          OX := RectWidth(CellR) - RectWidth(SR1);
          Inc(R.Left, SR2.Left);
          Inc(R.Top, SR2.Top);
          R.Right := R.Left + RectWidth(SR2) + OX;
          R.Bottom := R.Top + RectHeight(SR2) + OY;
        end;
      Result := R;
    end
end;

procedure TbsSkinCustomGrid.ChangeSkinData;
var
  i, Old: Integer;
begin
  GetSkinData;
  if FIndex > -1
  then
    begin
      Old := DefaultRowHeight;
      i := SelectCellRect.Bottom - SelectCellRect.Top;
      if (i <> Old) and FUseSkinCellHeight
      then
        DefaultRowHeight := i
      else
        Invalidate;
    end
  else
    begin
      DefaultRowHeight := FDefaultCellHeight;
      Invalidate;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品一区二区三区 | 亚洲欧洲日韩av| 亚洲人精品一区| 麻豆成人av在线| 91电影在线观看| 久久精品一区二区| 青青草97国产精品免费观看| 99久久er热在这里只有精品15| 欧美一区二区大片| 亚洲夂夂婷婷色拍ww47| 成人精品视频.| 精品少妇一区二区三区视频免付费| 亚洲欧美二区三区| 成人a级免费电影| 久久综合av免费| 天涯成人国产亚洲精品一区av| 99re热这里只有精品视频| 久久久久88色偷偷免费| 青青草原综合久久大伊人精品 | 日韩一区日韩二区| 国产一区欧美日韩| 欧美成人艳星乳罩| 久久国产精品色婷婷| 欧美日韩一区国产| 亚洲伊人色欲综合网| 99免费精品在线观看| 日本一区二区三区在线观看| 麻豆91在线播放免费| 欧美一区二区在线不卡| 午夜精品久久久久久久久| 成人福利视频网站| 欧美日韩中文字幕一区二区| 国产精品麻豆久久久| 国产91露脸合集magnet| 久久久久久久久99精品| 久久99久久99小草精品免视看| 日韩一级视频免费观看在线| 视频一区在线播放| 日韩女优av电影| 蜜桃一区二区三区在线观看| 欧美大片在线观看一区二区| 精品一区二区久久| 国产日产欧美一区| 成人午夜又粗又硬又大| 亚洲人成亚洲人成在线观看图片| 91在线播放网址| 亚洲一区日韩精品中文字幕| 69久久99精品久久久久婷婷| 免费观看成人av| 国产日韩精品一区二区三区 | 午夜激情综合网| 91麻豆精品国产自产在线观看一区 | 狠狠色丁香婷婷综合久久片| 亚洲精品一区二区三区精华液 | 8x8x8国产精品| 秋霞av亚洲一区二区三| 国产亚洲欧美在线| 色屁屁一区二区| 视频一区二区三区中文字幕| 337p日本欧洲亚洲大胆色噜噜| 福利视频网站一区二区三区| 亚洲欧美中日韩| 欧美日韩在线播放三区四区| 国产一区二区在线观看视频| 亚洲欧美日韩人成在线播放| 欧美三级电影精品| 国产精品影音先锋| 亚洲一区二区综合| 精品三级在线看| 91首页免费视频| 久久精品国产亚洲一区二区三区| 久久久午夜精品理论片中文字幕| 一本大道久久a久久精品综合| 天天色天天爱天天射综合| 国产欧美精品在线观看| 欧美日本韩国一区| 国产成人高清视频| 亚洲成人av电影在线| 国产三级久久久| 3751色影院一区二区三区| 不卡的av网站| 免费视频最近日韩| 国产精品久久久久影视| 精品蜜桃在线看| 在线精品亚洲一区二区不卡| 国产精品香蕉一区二区三区| 亚洲成人免费电影| 18欧美亚洲精品| 国产校园另类小说区| 欧美日韩国产bt| 91亚洲男人天堂| 国产麻豆日韩欧美久久| 欧美aa在线视频| 一区二区国产盗摄色噜噜| 国产精品麻豆久久久| 久久综合五月天婷婷伊人| 7777精品伊人久久久大香线蕉经典版下载 | 一二三四社区欧美黄| 国产精品蜜臀av| 久久久久久影视| 欧美本精品男人aⅴ天堂| 欧美日韩小视频| 欧美在线制服丝袜| 日韩欧美亚洲一区二区| 91久久免费观看| av一区二区三区| 国产精品99久久久久久有的能看 | 日韩电影在线免费| 亚洲v日本v欧美v久久精品| 亚洲精品一二三| 亚洲欧美另类图片小说| 亚洲欧美一区二区三区孕妇| 国产精品乱码久久久久久 | 欧美精品亚洲一区二区在线播放| 91欧美激情一区二区三区成人| 成人亚洲精品久久久久软件| 国产成人在线影院| 成a人片亚洲日本久久| 国产成人午夜99999| 国产福利精品一区| 国产**成人网毛片九色| 高清国产一区二区三区| 成人午夜电影网站| 成人爽a毛片一区二区免费| 国产+成+人+亚洲欧洲自线| www.av亚洲| 色婷婷av久久久久久久| 欧美在线free| 欧美一卡2卡三卡4卡5免费| 日韩精品一区二区三区四区| 精品福利二区三区| 欧美韩国日本综合| 一区二区三区四区五区视频在线观看| 亚洲综合色区另类av| 日本麻豆一区二区三区视频| 久久精品99国产精品日本| 粉嫩av一区二区三区粉嫩| 一本大道综合伊人精品热热| 欧美女孩性生活视频| 精品剧情在线观看| 国产精品久久久久一区二区三区共| 亚洲激情在线激情| 老司机免费视频一区二区三区| 国产一区二区调教| 日本久久精品电影| 日韩欧美国产一区在线观看| 欧美激情一区二区三区蜜桃视频| 亚洲美女免费视频| 日韩精品视频网| 成人久久18免费网站麻豆| 欧美日韩免费观看一区三区| www欧美成人18+| 亚洲激情图片qvod| 国产一区不卡在线| 在线观看av一区| 欧美精品一区二区在线观看| 亚洲视频 欧洲视频| 日日夜夜精品视频免费| 国产成人午夜99999| 7878成人国产在线观看| 国产精品福利一区二区| 男男成人高潮片免费网站| 成人av中文字幕| 69堂成人精品免费视频| 亚洲欧洲美洲综合色网| 黄网站免费久久| 欧美日韩免费观看一区三区| 中文字幕av资源一区| 蜜臀久久久久久久| 色国产综合视频| 国产欧美精品日韩区二区麻豆天美 | 日韩av电影免费观看高清完整版在线观看| 国产在线视视频有精品| 7777精品伊人久久久大香线蕉的 | 91精品国产综合久久精品app | 亚洲三级小视频| 激情综合色综合久久综合| 欧美日韩在线亚洲一区蜜芽| 国产精品污www在线观看| 久久国产欧美日韩精品| 欧美国产在线观看| 麻豆国产欧美一区二区三区| 欧美日韩精品综合在线| 国产精品无人区| 国产福利视频一区二区三区| 欧美v日韩v国产v| 水野朝阳av一区二区三区| 91极品美女在线| 亚洲欧美偷拍卡通变态| 成人涩涩免费视频| 国产亚洲精品aa午夜观看| 日韩电影网1区2区| 欧美日韩一区二区三区视频| 亚洲欧美精品午睡沙发| 成人午夜免费视频| 中日韩免费视频中文字幕| 成人午夜免费av| 国产精品每日更新| 99麻豆久久久国产精品免费优播| 国产精品免费网站在线观看|