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

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

?? rxdbctrl.pas

?? RX Library contains a large number of components, objects and routines for Borland Delphi with full
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
    CurRow: TBookmark;
{$ENDIF}
  begin
    AddAfter := False;
{$IFDEF WIN32}
    BeginUpdate;
    try
{$ENDIF}
      if MultiSelect and DataLink.Active then
        if Select and (ssShift in Shift) then begin
          if not FSelecting then begin
{$IFNDEF WIN32}
            if FSelectionAnchor <> nil then StrDispose(FSelectionAnchor);
{$ENDIF}
            FSelectionAnchor := TBookmarks(SelectedRows).CurrentRow;
            SelectedRows.CurrentRowSelected := True;
            FSelecting := True;
            AddAfter := True;
          end
          else with TBookmarks(SelectedRows) do begin
{$IFDEF WIN32}
            AddAfter := Compare(CurrentRow, FSelectionAnchor) <> -Direction;
{$ELSE}
            CurRow := CurrentRow;
            try
              AddAfter := Compare(CurRow, FSelectionAnchor) <> -Direction;
            finally
              StrDispose(CurRow);
            end;
{$ENDIF}
            if not AddAfter then CurrentRowSelected := False;
          end
        end
        else ClearSelections;
      if Direction <> 0 then Datalink.DataSet.MoveBy(Direction);
      if AddAfter then SelectedRows.CurrentRowSelected := True;
{$IFDEF WIN32}
    finally
      EndUpdate;
    end;
{$ENDIF}
  end;

  procedure NextRow(Select: Boolean);
  begin
    with Datalink.Dataset do begin
      DoSelection(Select, 1);
      if EOF and CanModify and (not ReadOnly) and (dgEditing in Options) then
        Append;
    end;
  end;

  procedure PriorRow(Select: Boolean);
  begin
    DoSelection(Select, -1);
  end;

  procedure CheckTab(GoForward: Boolean);
  var
    ACol, Original: Integer;
  begin
    ACol := Col;
    Original := ACol;
    if MultiSelect and DataLink.Active then
      while True do begin
        if GoForward then Inc(ACol) else Dec(ACol);
        if ACol >= ColCount then begin
          ClearSelections;
          ACol := IndicatorOffset;
        end
        else if ACol < IndicatorOffset then begin
          ClearSelections;
          ACol := ColCount;
        end;
        if ACol = Original then Exit;
        if TabStops[ACol] then Exit;
      end;
  end;

  function DeletePrompt: Boolean;
  var
    S: string;
  begin
    if (SelectedRows.Count > 1) then
{$IFDEF WIN32}
      S := ResStr(SDeleteMultipleRecordsQuestion)
{$ELSE}
      S := LoadStr(SDeleteMultipleRecords)
{$ENDIF}
    else S := ResStr(SDeleteRecordQuestion);
    Result := not (dgConfirmDelete in Options) or
      (MessageDlg(S, mtConfirmation, [mbYes, mbNo], 0) = mrYes);
  end;

begin
  KeyDownEvent := OnKeyDown;
  if Assigned(KeyDownEvent) then KeyDownEvent(Self, Key, Shift);
  if not Datalink.Active or not CanGridAcceptKey(Key, Shift) then Exit;
  with Datalink.DataSet do
    if ssCtrl in Shift then begin
      if (Key in [VK_UP, VK_PRIOR, VK_DOWN, VK_NEXT, VK_HOME, VK_END]) then
        ClearSelections;
      case Key of
        VK_LEFT:
          if FixedCols > 0 then begin
{$IFDEF RX_D4}
            SelectedIndex := CalcLeftColumn - IndicatorOffset;
{$ELSE}
            SelectedIndex := FixedCols;
{$ENDIF}
            Exit;
          end;
        VK_DELETE:
          if not ReadOnly and CanModify and not
            IsDataSetEmpty(Datalink.DataSet) then
          begin
            if DeletePrompt then begin
              if SelectedRows.Count > 0 then SelectedRows.Delete
              else Delete;
            end;
            Exit;
          end;
      end
    end
    else begin
      case Key of
        VK_LEFT:
          if (FixedCols > 0) and not (dgRowSelect in Options) then begin
{$IFDEF RX_D4}
            if SelectedIndex <= CalcLeftColumn - IndicatorOffset then
              Exit;
{$ELSE}
            if SelectedIndex <= FFixedCols then Exit;
{$ENDIF}
          end;
        VK_HOME:
          if (FixedCols > 0) and (ColCount <> IndicatorOffset + 1) and
            not (dgRowSelect in Options) then
          begin
{$IFDEF RX_D4}
            SelectedIndex := CalcLeftColumn - IndicatorOffset;
{$ELSE}
            SelectedIndex := FixedCols;
{$ENDIF}
            Exit;
          end;
      end;
      if (Datalink.DataSet.State = dsBrowse) then begin
        case Key of
          VK_UP:
            begin
              PriorRow(True); Exit;
            end;
          VK_DOWN:
            begin
              NextRow(True); Exit;
            end;
        end;
      end;
      if ((Key in [VK_LEFT, VK_RIGHT]) and (dgRowSelect in Options)) or
        ((Key in [VK_HOME, VK_END]) and ((ColCount = IndicatorOffset + 1)
          or (dgRowSelect in Options))) or (Key in [VK_ESCAPE, VK_NEXT,
          VK_PRIOR]) or ((Key = VK_INSERT) and (CanModify and
          (not ReadOnly) and (dgEditing in Options))) then
        ClearSelections
      else if ((Key = VK_TAB) and not (ssAlt in Shift)) then
        CheckTab(not (ssShift in Shift));
    end;
  OnKeyDown := nil;
  try
    inherited KeyDown(Key, Shift);
  finally
    OnKeyDown := KeyDownEvent;
  end;
end;

procedure TRxDBGrid.SetShowGlyphs(Value: Boolean);
begin
  if FShowGlyphs <> Value then begin
    FShowGlyphs := Value;
    Invalidate;
  end;
end;

procedure TRxDBGrid.SetRowsHeight(Value: Integer);
begin
  if not (csDesigning in ComponentState) and (DefaultRowHeight <> Value) then
  begin
    DefaultRowHeight := Value;
    if dgTitles in Options then RowHeights[0] := Value + 2;
    if HandleAllocated then
      Perform(WM_SIZE, SIZE_RESTORED, MakeLong(ClientWidth, ClientHeight));
  end;
end;

function TRxDBGrid.GetRowsHeight: Integer;
begin
  Result := DefaultRowHeight;
end;

{$IFDEF WIN32}

function TRxDBGrid.GetOptions: TDBGridOptions;
begin
  Result := inherited Options;
  if FMultiSelect then Result := Result + [dgMultiSelect]
  else Result := Result - [dgMultiSelect];
end;

procedure TRxDBGrid.SetOptions(Value: TDBGridOptions);
var
  NewOptions: TGridOptions;
begin
  inherited Options := Value - [dgMultiSelect];
  NewOptions := TDrawGrid(Self).Options;
  {
  if FTitleButtons then begin
    TDrawGrid(Self).Options := NewOptions + [goFixedHorzLine, goFixedVertLine];
  end else
  }
  begin
    if not (dgColLines in Value) then
      NewOptions := NewOptions - [goFixedVertLine];
    if not (dgRowLines in Value) then
      NewOptions := NewOptions - [goFixedHorzLine];
    TDrawGrid(Self).Options := NewOptions;
  end;
  SetMultiSelect(dgMultiSelect in Value);
end;

{$ELSE}

procedure TRxDBGrid.LinkActive(Value: Boolean);
begin
  SelectedRows.LinkActive(Value);
  inherited LinkActive(Value);
end;

function TRxDBGrid.GetFixedColor: TColor;
begin
  Result := inherited TitleColor;
end;

procedure TRxDBGrid.SetFixedColor(Value: TColor);
begin
  if FixedColor <> Value then begin
    inherited TitleColor := Value;
    inherited FixedColor := Value;
    Invalidate;
  end;
end;

procedure TRxDBGrid.ColumnMoved(FromIndex, ToIndex: Longint);
begin
  inherited ColumnMoved(FromIndex, ToIndex);
  if Assigned(FOnColumnMoved) then FOnColumnMoved(Self, FromIndex, ToIndex);
end;

{$ENDIF WIN32}

procedure TRxDBGrid.Paint;
begin
  inherited Paint;
  if not (csDesigning in ComponentState) and
    (dgRowSelect in Options) and DefaultDrawing and Focused then
  begin
    Canvas.Font.Color := clWindowText;
    with Selection do
      DrawFocusRect(Canvas.Handle, BoxRect(Left, Top, Right, Bottom));
  end;
end;

procedure TRxDBGrid.SetTitleButtons(Value: Boolean);
begin
  if FTitleButtons <> Value then begin
    FTitleButtons := Value;
    Invalidate;
{$IFDEF WIN32}
    SetOptions(Options);
{$ENDIF}
  end;
end;

procedure TRxDBGrid.SetMultiSelect(Value: Boolean);
begin
  if FMultiSelect <> Value then begin
    FMultiSelect := Value;
    if not Value then SelectedRows.Clear;
  end;
end;

function TRxDBGrid.GetStorage: TFormPlacement;
begin
  Result := FIniLink.Storage;
end;

procedure TRxDBGrid.SetStorage(Value: TFormPlacement);
begin
  FIniLink.Storage := Value;
end;

function TRxDBGrid.AcquireFocus: Boolean;
begin
  Result := True;
  if FAcquireFocus and CanFocus and not (csDesigning in ComponentState) then
  begin
    SetFocus;
    Result := Focused or (InplaceEditor <> nil) and InplaceEditor.Focused;
  end;
end;

function TRxDBGrid.CanEditShow: Boolean;
var
  F: TField;
begin
  Result := inherited CanEditShow;
  F := nil;
  if Result and (Datalink <> nil) and Datalink.Active and (FieldCount > 0) and
    (SelectedIndex < FieldCount) and (SelectedIndex >= 0) and
    (FieldCount <= DataSource.DataSet.FieldCount) then
  begin
    F := Fields[SelectedIndex];
    if F <> nil then Result := GetImageIndex(F) < 0;
  end;
  if Result and Assigned(FOnShowEditor) then
    FOnShowEditor(Self, F, Result);
end;

procedure TRxDBGrid.GetCellProps(Field: TField; AFont: TFont;
  var Background: TColor; Highlight: Boolean);
var
  AColor, ABack: TColor;
begin
  if Assigned(FOnGetCellParams) then
    FOnGetCellParams(Self, Field, AFont, Background, Highlight)
  else if Assigned(FOnGetCellProps) then begin
    if Highlight then begin
      AColor := AFont.Color;
      FOnGetCellProps(Self, Field, AFont, ABack);
      AFont.Color := AColor;
    end
    else FOnGetCellProps(Self, Field, AFont, Background);
  end;
end;

procedure TRxDBGrid.DoTitleClick(ACol: Longint; AField: TField);
begin
  if Assigned(FOnTitleBtnClick) then FOnTitleBtnClick(Self, ACol, AField);
end;

procedure TRxDBGrid.CheckTitleButton(ACol, ARow: Longint; var Enabled: Boolean);
var
  Field: TField;
begin
  if (ACol >= 0) and (ACol < {$IFDEF WIN32} Columns.Count {$ELSE}
    FieldCount {$ENDIF}) then
  begin
    if Assigned(FOnCheckButton) then begin
{$IFDEF WIN32}
      Field := Columns[ACol].Field;
  {$IFDEF RX_D4}
      if ColumnAtDepth(Columns[ACol], ARow) <> nil then
        Field := ColumnAtDepth(Columns[ACol], ARow).Field;
  {$ENDIF}
{$ELSE}
      Field := Fields[ACol];
{$ENDIF}
      FOnCheckButton(Self, ACol, Field, Enabled);
    end;
  end
  else Enabled := False;
end;

procedure TRxDBGrid.DisableScroll;
begin
  Inc(FDisableCount);
end;

type
  THackLink = class(TGridDataLink);

procedure TRxDBGrid.EnableScroll;
begin
  if FDisableCount <> 0 then begin
    Dec(FDisableCount);
    if FDisableCount = 0 then
      THackLink(DataLink).DataSetScrolled(0);
  end;
end;

function TRxDBGrid.ScrollDisabled: Boolean;
begin
  Result := FDisableCount <> 0;
end;

procedure TRxDBGrid.Scroll(Distance: Integer);
{$IFNDEF RX_D3}
var
  IndicatorRect: TRect;
{$ENDIF}
begin
  if FDisableCount = 0 then begin
    inherited Scroll(Distance);
{$IFNDEF RX_D3}
    if (dgIndicator in Options) and HandleAllocated and MultiSelect then
    begin
      IndicatorRect := BoxRect(0, 0, 0, RowCount - 1);
      InvalidateRect(Handle, @IndicatorRect, False);
    end;
{$ENDIF}
  end;
end;

{$IFDEF RX_D4}

function TRxDBGrid.DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean;
begin
  Result := False;
  if Assigned(OnMouseWheelDown) then
    OnMouseWheelDown(Self, Shift, MousePos, Result);
  if not Result then begin
    if not AcquireFocus then Exit;
    if Datalink.Active then begin
      Result := Datalink.DataSet.MoveBy(1) <> 0;
    end;
  end;
end;

function TRxDBGrid.DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean;
begin
  Result := False;
  if Assigned(OnMouseWheelUp) then
    OnMouseWheelUp(Self, Shift, MousePos, Result);
  if not Result then begin
    if not AcquireFocus then Exit;
    if Datalink.Active then begin
      Result := Datalink.DataSet.MoveBy(-1) <> 0;
    end;
  end;
end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国三级中文字幕hd久久精品| 精品成人一区二区三区| 国产91精品在线观看| 久久国产婷婷国产香蕉| 免费一级片91| 六月婷婷色综合| 狠狠色丁香久久婷婷综| 国产一区二区免费看| 国产麻豆成人精品| 成人性生交大片免费看视频在线 | 在线看国产一区二区| 色天使色偷偷av一区二区| 色偷偷成人一区二区三区91| 91一区二区在线观看| 欧美午夜在线观看| 91精品国产综合久久久蜜臀图片| 日韩三级伦理片妻子的秘密按摩| 日韩精品一区二区三区在线观看| 久久久久久99久久久精品网站| 久久久三级国产网站| 亚洲欧美在线aaa| 一区二区三区电影在线播| 亚洲综合在线观看视频| 无吗不卡中文字幕| 韩国视频一区二区| 99久久久精品| 91精品国产91久久综合桃花| 久久免费看少妇高潮| 综合激情成人伊人| 人人精品人人爱| 成人永久aaa| 欧美精品欧美精品系列| www国产成人| 亚洲精品欧美激情| 精品一区二区免费视频| 91在线视频播放| 日韩女同互慰一区二区| 国产精品久久久久久久午夜片| 一级做a爱片久久| 狠狠色丁香久久婷婷综| 91国偷自产一区二区开放时间 | 色婷婷av一区| 精品少妇一区二区三区日产乱码| 国产精品福利一区二区三区| 日韩电影在线免费观看| 成人高清免费在线播放| 欧美一区二区福利视频| 亚洲免费大片在线观看| 韩国一区二区视频| 91麻豆精品国产91久久久久久久久| 久久久久久久综合日本| 天堂av在线一区| 99久久精品费精品国产一区二区| 日韩欧美电影在线| 亚洲大尺度视频在线观看| 国产精品18久久久久久久网站| 欧美色视频在线观看| 中文字幕五月欧美| 国内外成人在线视频| 777精品伊人久久久久大香线蕉| 日韩一区欧美小说| 成人精品视频一区二区三区 | 丁香网亚洲国际| 欧美岛国在线观看| 日本欧美一区二区三区| 欧美三级欧美一级| 亚洲自拍偷拍综合| 色综合中文字幕| 综合久久给合久久狠狠狠97色| 国产精品亚洲人在线观看| 精品久久久久一区二区国产| 婷婷开心久久网| 欧美日韩黄视频| 亚洲午夜国产一区99re久久| 欧美色涩在线第一页| 亚洲一区二区三区四区中文字幕| 色激情天天射综合网| 亚洲美女偷拍久久| 在线看不卡av| 亚洲成av人片一区二区| 欧美日本在线观看| 日韩精品三区四区| 欧美一级久久久| 国产一区中文字幕| 中文一区一区三区高中清不卡| 国产盗摄精品一区二区三区在线| 久久精品无码一区二区三区| 国产精品影视在线观看| 国产日韩影视精品| 99精品视频一区| 亚洲最新在线观看| 欧美一区二区三区精品| 国产高清久久久| 国产精品美女视频| 一本久道中文字幕精品亚洲嫩| 亚洲一区二区视频| 精品久久人人做人人爰| 丁香婷婷综合色啪| 一个色在线综合| 日韩午夜小视频| 丁香婷婷深情五月亚洲| 亚洲影院理伦片| 亚洲精品在线网站| 99久久99精品久久久久久| 亚洲国产精品影院| 久久免费精品国产久精品久久久久| av电影在线观看一区| 亚洲国产成人av| 国产午夜精品一区二区 | 亚洲一区二区三区免费视频| 911精品产国品一二三产区| 国内精品免费**视频| 综合久久久久久久| 欧美电视剧在线看免费| 91丨porny丨最新| 蜜桃视频一区二区三区在线观看| 国产日产欧美精品一区二区三区| 色综合中文字幕| 国产精品中文字幕一区二区三区| 一区二区免费在线播放| 久久综合色之久久综合| 欧美亚洲一区二区在线| 高清在线不卡av| 青青青爽久久午夜综合久久午夜| 国产精品欧美久久久久无广告| 4438x成人网最大色成网站| 成人免费黄色大片| 九九九精品视频| 午夜欧美视频在线观看| 亚洲三级视频在线观看| 欧美白人最猛性xxxxx69交| 在线播放国产精品二区一二区四区 | 免费成人在线网站| 国产免费成人在线视频| 欧美一区二区免费| 欧美日韩在线观看一区二区 | 国产精品毛片高清在线完整版| 欧美日韩大陆在线| 日本乱码高清不卡字幕| 国产91富婆露脸刺激对白| 蜜桃视频第一区免费观看| 亚洲综合色区另类av| 亚洲天堂网中文字| 国产精品嫩草影院av蜜臀| 26uuuu精品一区二区| 日韩精品一区二区三区中文不卡| 欧美日韩一级黄| 欧美日韩中文另类| 欧美日韩三级一区| 欧美日韩在线电影| 欧美日韩一区精品| 欧美日韩黄视频| 欧美日韩免费一区二区三区| 欧美中文字幕一区| 欧美午夜精品久久久久久孕妇| 91蜜桃在线观看| 欧美系列一区二区| 欧美日韩精品免费| 欧美一区二区视频在线观看2020| 欧美伊人久久久久久久久影院| 欧美性大战久久久久久久蜜臀| 精品婷婷伊人一区三区三| 欧美日韩精品欧美日韩精品 | 国产精品女上位| 中文子幕无线码一区tr| 国产精品你懂的在线欣赏| 亚洲三级视频在线观看| 伊人一区二区三区| 五月激情六月综合| 韩日精品视频一区| 成人久久久精品乱码一区二区三区| 9l国产精品久久久久麻豆| 色激情天天射综合网| 欧美日韩国产色站一区二区三区| 欧美一区二区二区| 久久九九国产精品| 亚洲人亚洲人成电影网站色| 亚洲综合小说图片| 激情偷乱视频一区二区三区| 大白屁股一区二区视频| 日本精品一区二区三区四区的功能| 欧美日韩一区视频| 久久综合视频网| 亚洲六月丁香色婷婷综合久久| 日日摸夜夜添夜夜添国产精品 | 欧美日韩一区小说| 日韩视频免费观看高清在线视频| 国产亚洲精品aa| 午夜精品久久一牛影视| 国产一区二区剧情av在线| av一区二区三区黑人| 91麻豆精品国产91久久久更新时间| 久久亚洲一级片| 亚洲成av人片一区二区| 国产99一区视频免费| 9191国产精品| 亚洲精品成人悠悠色影视| 久久国产乱子精品免费女| 色噜噜狠狠色综合欧洲selulu| 亚洲精品一区二区三区影院|