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

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

?? rxdbctrl.pas

?? RX Library contains a large number of components, objects and routines for Borland Delphi with full
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
begin
  if (Compare(Item, FCache) = 0) and (FCacheIndex >= 0) then begin
    Index := FCacheIndex;
    Result := FCacheFind;
    Exit;
  end;
  Result := False;
  L := 0;
  H := FList.Count - 1;
  while L <= H do begin
    I := (L + H) shr 1;
    C := Compare(TBookmark(FList[I]), Item);
    if C < 0 then L := I + 1
    else begin
      H := I - 1;
      if C = 0 then begin
        Result := True;
        L := I;
      end;
    end;
  end;
  Index := L;
  StrDispose(FCache);
  FCache := nil;
  P := PChar(Item);
  if P <> nil then begin
    Dec(P, 2);
    FCache := StrAlloc(Word(Pointer(P)^));
    Move(Item^, FCache^, Word(Pointer(P)^));
  end;
  FCacheIndex := Index;
  FCacheFind := Result;
end;

function TBookmarkList.GetCount: Longint;
begin
  Result := FList.Count;
end;

function TBookmarkList.GetItem(Index: Longint): TBookmark;
begin
  Result := TBookmark(FList[Index]);
end;

function TBookmarkList.IndexOf(const Item: TBookmark): Longint;
begin
  if not Find(Item, Result) then Result := -1;
end;

procedure TBookmarkList.LinkActive(Value: Boolean);
begin
  Clear;
  FLinkActive := Value;
end;

procedure TBookmarkList.Delete;
var
  I: Longint;
begin
  with TRxDBGrid(FGrid).Datalink.Dataset do begin
    DisableControls;
    try
      for I := FList.Count - 1 downto 0 do begin
        if FList[I] <> nil then begin
          GotoBookmark(TBookmark(FList[I]));
          Delete;
          StrDispose(FList[I]);
        end;
        FList.Delete(I);
      end;
      ListChanged;
    finally
      EnableControls;
    end;
  end;
end;

function TBookmarkList.Refresh: Boolean;
var
  I: Longint;
begin
  Result := False;
  with TRxDBGrid(FGrid).DataLink.Dataset do
  try
    CheckBrowseMode;
    for I := FList.Count - 1 downto 0 do
      if DbiSetToBookmark(Handle, Pointer(FList[I])) <> 0 then begin
        Result := True;
        StrDispose(FList[I]);
        FList.Delete(I);
      end;
    ListChanged;
  finally
    UpdateCursorPos;
    if Result then FGrid.Invalidate;
  end;
end;

procedure TBookmarkList.SetCurrentRowSelected(Value: Boolean);
var
  Index: Longint;
  Current: TBookmark;
begin
  Current := CurrentRow;
  Index := 0;
  if (Current = nil) or (Find(Current, Index) = Value) then begin
    if Current <> nil then StrDispose(Current);
    Exit;
  end;
  if Value then begin
    try
      FList.Insert(Index, Current);
    except
      StrDispose(Current);
      raise;
    end;
  end
  else begin
    if (Index < FList.Count) and (Index >= 0) then begin
      StrDispose(FList[Index]);
      FList.Delete(Index);
    end;
    StrDispose(Current);
  end;
  ListChanged;
  TRxDBGrid(FGrid).InvalidateRow(TRxDBGrid(FGrid).Row);
  GridInvalidateRow(TRxDBGrid(FGrid), TRxDBGrid(FGrid).Row);
end;

procedure TBookmarkList.ListChanged;
begin
  if FCache <> nil then StrDispose(FCache);
  FCache := nil;
  FCacheIndex := -1;
end;

{$ENDIF WIN32}

type
  TBookmarks = class(TBookmarkList);

{ TRxDBGrid }

constructor TRxDBGrid.Create(AOwner: TComponent);
var
  Bmp: TBitmap;
begin
  inherited Create(AOwner);
  inherited DefaultDrawing := False;
  Options := DefRxGridOptions;
  Bmp := TBitmap.Create;
  try
    Bmp.Handle := LoadBitmap(hInstance, bmMultiDot);
{$IFDEF WIN32}
    FMsIndicators := TImageList.CreateSize(Bmp.Width, Bmp.Height);
{$ELSE}
    FMsIndicators := TImageList.Create(Bmp.Width, Bmp.Height);
    Bmp.Monochrome := False;
{$ENDIF}
    FMsIndicators.AddMasked(Bmp, clWhite);
    Bmp.Handle := LoadBitmap(hInstance, bmMultiArrow);
{$IFNDEF WIN32}
    Bmp.Monochrome := False;
{$ENDIF}
    FMsIndicators.AddMasked(Bmp, clWhite);
  finally
    Bmp.Free;
  end;
  FIniLink := TIniLink.Create;
  FIniLink.OnSave := IniSave;
  FIniLink.OnLoad := IniLoad;
  FShowGlyphs := True;
  FDefaultDrawing := True;
  FClearSelection := True;
{$IFNDEF WIN32}
  FBookmarks := TBookmarkList.Create(Self);
  FPressedCol := -1;
{$ENDIF}
end;

destructor TRxDBGrid.Destroy;
begin
  FIniLink.Free;
{$IFNDEF WIN32}
  if FSelectionAnchor <> nil then StrDispose(FSelectionAnchor);
  FSelectionAnchor := nil;
  FBookmarks.Free;
  FBookmarks := nil;
{$ENDIF}
  FMsIndicators.Free;
  inherited Destroy;
end;

function TRxDBGrid.GetImageIndex(Field: TField): Integer;
var
  AOnGetText: TFieldGetTextEvent;
  AOnSetText: TFieldSetTextEvent;
begin
  Result := -1;
  if FShowGlyphs and Assigned(Field) then begin
    if (not ReadOnly) and Field.CanModify then begin
      { Allow editing of memo fields if OnSetText and OnGetText
        events are assigned }
      AOnGetText := Field.OnGetText;
      AOnSetText := Field.OnSetText;
      if Assigned(AOnSetText) and Assigned(AOnGetText) then Exit;
    end;
    case Field.DataType of
      ftBytes, ftVarBytes, ftBlob: Result := Ord(gpBlob);
      ftMemo: Result := Ord(gpMemo);
      ftGraphic: Result := Ord(gpPicture);
{$IFDEF WIN32}
      ftTypedBinary: Result := Ord(gpBlob);
      ftFmtMemo: Result := Ord(gpMemo);
      ftParadoxOle, ftDBaseOle: Result := Ord(gpOle);
{$ENDIF}
{$IFDEF RX_D3}
      ftCursor: Result := Ord(gpData);
{$ENDIF}
{$IFDEF RX_D4}
      ftReference, ftDataSet: Result := Ord(gpData);
{$ENDIF}
{$IFDEF RX_D5}
      ftOraClob: Result := Ord(gpMemo);
      ftOraBlob: Result := Ord(gpBlob);
{$ENDIF}
    end;
  end;
end;

function TRxDBGrid.ActiveRowSelected: Boolean;
var
{$IFDEF WIN32}
  Index: Integer;
{$ELSE}
  Index: Longint;
  Bookmark: TBookmark;
{$ENDIF}
begin
  Result := False;
  if MultiSelect and Datalink.Active then begin
{$IFDEF WIN32}
    Result := SelectedRows.Find(Datalink.DataSet.Bookmark, Index);
{$ELSE}
    Bookmark := Datalink.Dataset.GetBookmark;
    try
      Result := SelectedRows.Find(Bookmark, Index);
    finally
      StrDispose(Bookmark);
    end;
{$ENDIF}
  end;
end;

function TRxDBGrid.HighlightCell(DataCol, DataRow: Integer;
  const Value: string; AState: TGridDrawState): Boolean;
begin
  Result := ActiveRowSelected;
  if not Result then
    Result := inherited HighlightCell(DataCol, DataRow, Value, AState);
end;

procedure TRxDBGrid.ToggleRowSelection;
begin
  if MultiSelect and Datalink.Active then
    with SelectedRows do CurrentRowSelected := not CurrentRowSelected;
end;

function TRxDBGrid.GetSelCount: Longint;
begin
  if MultiSelect and (Datalink <> nil) and Datalink.Active then
    Result := SelectedRows.Count
  else Result := 0;
end;

procedure TRxDBGrid.SelectAll;
var
  ABookmark: TBookmark;
begin
  if MultiSelect and DataLink.Active then begin
    with Datalink.Dataset do begin
      if (BOF and EOF) then Exit;
      DisableControls;
      try
        ABookmark := GetBookmark;
        try
          First;
          while not EOF do begin
            SelectedRows.CurrentRowSelected := True;
            Next;
          end;
        finally
          try
            GotoBookmark(ABookmark);
          except
          end;
          FreeBookmark(ABookmark);
        end;
      finally
        EnableControls;
      end;
    end;
  end;
end;

procedure TRxDBGrid.UnselectAll;
begin
  if MultiSelect then begin
    SelectedRows.Clear;
    FSelecting := False;
  end;
end;

procedure TRxDBGrid.GotoSelection(Index: Longint);
begin
  if MultiSelect and DataLink.Active and (Index < SelectedRows.Count) and
    (Index >= 0) then
    Datalink.DataSet.GotoBookmark(Pointer(SelectedRows[Index]));
end;

{$IFNDEF WIN32}
function TRxDBGrid.GetIndicatorOffset: Byte;
begin
  Result := 0;
  if dgIndicator in Options then Inc(Result);
end;
{$ENDIF WIN32}

procedure TRxDBGrid.LayoutChanged;
var
  ACol: Longint;
begin
  ACol := Col;
  inherited LayoutChanged;
  if Datalink.Active and (FixedCols > 0) then
{$IFDEF RX_D4}
    Col := Min(Max(CalcLeftColumn, ACol), ColCount - 1);
{$ELSE}
    Col := Min(Max(inherited FixedCols, ACol), ColCount - 1);
{$ENDIF}
end;

{$IFDEF WIN32}
procedure TRxDBGrid.ColWidthsChanged;
var
  ACol: Longint;
begin
  ACol := Col;
  inherited ColWidthsChanged;
  if Datalink.Active and (FixedCols > 0) then
{$IFDEF RX_D4}
    Col := Min(Max(CalcLeftColumn, ACol), ColCount - 1);
{$ELSE}
    Col := Min(Max(inherited FixedCols, ACol), ColCount - 1);
{$ENDIF}
end;
{$ENDIF}

function TRxDBGrid.CreateEditor: TInplaceEdit;
begin
  Result := inherited CreateEditor;
  TEdit(Result).OnChange := EditChanged;
end;

function TRxDBGrid.GetTitleOffset: Byte;
{$IFDEF RX_D4}
var
  I, J: Integer;
{$ENDIF}
begin
  Result := 0;
  if dgTitles in Options then begin
    Result := 1;
{$IFDEF RX_D4}
    if (Datalink <> nil) and (Datalink.Dataset <> nil) and
      Datalink.Dataset.ObjectView then
    begin
      for I := 0 to Columns.Count - 1 do begin
        if Columns[I].Showing then begin
          J := Columns[I].Depth;
          if J >= Result then Result := J + 1;
        end;
      end;
    end;
{$ENDIF}
  end;
end;

procedure TRxDBGrid.SetColumnAttributes;
begin
  inherited SetColumnAttributes;
  SetFixedCols(FFixedCols);
end;

procedure TRxDBGrid.SetFixedCols(Value: Integer);
var
  FixCount, I: Integer;
begin
  FixCount := Max(Value, 0) + IndicatorOffset;
  if DataLink.Active and not (csLoading in ComponentState) and
    (ColCount > IndicatorOffset + 1) then
  begin
    FixCount := Min(FixCount, ColCount - 1);
    inherited FixedCols := FixCount;
    for I := 1 to Min(FixedCols, ColCount - 1) do
      TabStops[I] := False;
  end;
  FFixedCols := FixCount - IndicatorOffset;
end;

function TRxDBGrid.GetFixedCols: Integer;
begin
  if DataLink.Active then Result := inherited FixedCols - IndicatorOffset
  else Result := FFixedCols;
end;

{$IFDEF RX_D4}
function TRxDBGrid.CalcLeftColumn: Integer;
begin
  Result := FixedCols + IndicatorOffset;
  while (Result < ColCount) and (ColWidths[Result] <= 0) do
    Inc(Result);
end;
{$ENDIF}

procedure TRxDBGrid.KeyDown(var Key: Word; Shift: TShiftState);
var
  KeyDownEvent: TKeyEvent;

  procedure ClearSelections;
  begin
    if FMultiSelect then begin
      if FClearSelection then SelectedRows.Clear;
      FSelecting := False;
    end;
  end;

  procedure DoSelection(Select: Boolean; Direction: Integer);
  var
    AddAfter: Boolean;
{$IFNDEF WIN32}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩免费电影| 亚洲午夜久久久久久久久电影院| 91国偷自产一区二区开放时间| 国产精品99久久久久| 蜜臀av性久久久久蜜臀aⅴ流畅| 一区二区三区在线影院| 亚洲欧洲精品成人久久奇米网| 久久久精品天堂| 精品久久久久久综合日本欧美| 日韩一区二区电影在线| 日韩一级免费一区| 亚洲欧美二区三区| 亚洲免费观看高清完整| 国产91精品久久久久久久网曝门| 国产精品一二一区| 欧美一级xxx| 五月婷婷激情综合网| 麻豆精品在线视频| 欧美卡1卡2卡| 久久久久国色av免费看影院| 亚洲成人tv网| 黄色成人免费在线| zzijzzij亚洲日本少妇熟睡| 色综合欧美在线视频区| 欧美日本在线观看| 亚洲一区视频在线观看视频| 久久99精品久久久| av在线不卡网| 中文字幕 久热精品 视频在线| 亚洲精品一卡二卡| 精品无码三级在线观看视频| 欧美一个色资源| 免费看欧美女人艹b| 成人avav在线| 日韩免费性生活视频播放| 国产精品青草久久| 美女在线视频一区| 精品美女一区二区| 极品少妇xxxx精品少妇| 精品国产一区二区三区四区四| 亚洲人123区| 色综合色狠狠天天综合色| 成人欧美一区二区三区1314| 99re66热这里只有精品3直播| 日韩亚洲欧美综合| 九一九一国产精品| 国产色产综合色产在线视频 | 欧美日韩精品欧美日韩精品一 | 99国产精品久久久久久久久久| 国产精品久久久久影院色老大 | 久久久99精品免费观看| 国产一区欧美日韩| 欧美日韩激情一区二区三区| 亚洲伊人色欲综合网| 欧美色精品天天在线观看视频| 久久人人97超碰com| 国产一区二区三区四区五区入口| 国产日韩v精品一区二区| 首页国产丝袜综合| 日本高清免费不卡视频| 午夜精品久久久久| 精品国产一区a| 不卡av免费在线观看| 一区二区三区在线播放| 欧美一区二区三区视频免费 | 国产亚洲一区二区三区| 97精品久久久午夜一区二区三区 | 色综合亚洲欧洲| 久久久久久久久久久久久久久99| 丁香网亚洲国际| 亚洲观看高清完整版在线观看| 精品免费国产二区三区| 91麻豆福利精品推荐| 亚洲欧洲精品一区二区三区不卡 | 亚洲一二三四在线| 久久亚洲精华国产精华液 | 亚洲图片自拍偷拍| 久久久久久麻豆| 91久久国产最好的精华液| 国内精品自线一区二区三区视频| 亚洲少妇屁股交4| 91在线播放网址| 久久精品理论片| 精品国产亚洲一区二区三区在线观看 | 91福利国产成人精品照片| 蜜臀久久99精品久久久久久9| 国产精品久久久久久一区二区三区| 制服丝袜中文字幕亚洲| 日本伊人精品一区二区三区观看方式| 欧美日韩一级视频| 成人性生交大片免费看视频在线| 国产精品麻豆网站| 精品三级在线看| 欧美日韩二区三区| 97超碰欧美中文字幕| 国产精品一区二区在线播放 | 在线欧美日韩国产| 天天操天天干天天综合网| 亚洲国产精品ⅴa在线观看| 91精品国模一区二区三区| 色偷偷久久人人79超碰人人澡| 国产一区二区精品久久| 美日韩黄色大片| 日韩av中文在线观看| 亚洲成人精品一区| 亚洲精品写真福利| 亚洲日韩欧美一区二区在线| 久久精品人人做人人爽人人 | 欧美亚洲国产一区二区三区va| 五月天久久比比资源色| 亚洲精品免费播放| 亚洲男人都懂的| 亚洲日本一区二区| 国产精品二三区| 中文字幕高清不卡| 中文子幕无线码一区tr| 亚洲国产精品av| 国产精品久久久久久久久久免费看| 国产夜色精品一区二区av| 欧美精品一区二区在线播放| 精品国产一区二区三区av性色| 欧美精品一区二区三区一线天视频 | www.亚洲在线| 不卡的av电影| 色婷婷综合在线| 欧美日韩一区二区在线观看| 欧美日韩精品一区二区三区蜜桃| 在线欧美小视频| 在线电影一区二区三区| 日韩一区二区在线观看视频播放| 欧美一区二区三区在线观看| 日韩欧美国产综合| 国产日韩成人精品| 亚洲情趣在线观看| 亚洲第一狼人社区| 免费欧美日韩国产三级电影| 国产在线视频精品一区| 成人永久免费视频| 色94色欧美sute亚洲13| 欧美日本韩国一区| 精品久久国产字幕高潮| 中文一区在线播放 | 中文在线免费一区三区高中清不卡| 一区免费观看视频| 天天综合天天做天天综合| 国产尤物一区二区| 99久精品国产| 777色狠狠一区二区三区| 久久免费偷拍视频| 亚洲激情在线激情| 麻豆精品视频在线观看免费| 成人精品视频一区二区三区| 欧美日韩亚洲综合一区| 精品久久五月天| 亚洲美女免费在线| 久草精品在线观看| 色女孩综合影院| 精品国产免费一区二区三区四区| 亚洲丝袜制服诱惑| 日本不卡在线视频| 91在线视频免费91| 日韩精品一区二区三区蜜臀| 国产精品黄色在线观看| 日本成人在线网站| 99麻豆久久久国产精品免费| 欧美一区二区三区在线电影| 国产精品第13页| 国内久久婷婷综合| 精品视频1区2区3区| 国产精品日韩成人| 美女国产一区二区| 欧美专区在线观看一区| 国产亚洲一二三区| 美国十次综合导航| 欧美中文字幕久久| 国产精品久久久久久久第一福利| 免费美女久久99| 欧美性猛交xxxx黑人交| 国产精品热久久久久夜色精品三区| 天堂蜜桃一区二区三区| 91免费国产在线观看| 国产三级精品视频| 日韩一区精品视频| 欧美性受xxxx| 亚洲精品午夜久久久| aaa国产一区| 国产欧美精品区一区二区三区 | 欧美日韩精品一区二区在线播放| 国产精品免费av| 国产寡妇亲子伦一区二区| 成人免费电影视频| www国产精品av| 另类小说一区二区三区| 欧美三级午夜理伦三级中视频| 亚洲欧洲另类国产综合| 成人黄色av网站在线| 国产欧美日韩在线看| 国产精品综合视频| 久久精品网站免费观看| 国产麻豆精品视频|