Delphi Grid Видимый предмет - PullRequest
0 голосов
/ 13 октября 2010

Привет всем,

Я работаю с Delphi 7. У меня проблема с Grid.

Моя сетка состоит из 100 строк, я добавляю еще несколько после этого.Например, я выбрал пункт 1oth.Сетка показывает 20 элементов на экране одновременно.Я прокрутил сетку вниз.Я дошел до последнего.Здесь сетка Itemindex = 10;Обратите внимание, что выбранный элемент не отображается в видимом окне.Когда я добавляю элемент, сетка обновляется и перемещается, показывая 10-й элемент.

Я не хочу этого делать.

Мое требование: при добавлении новых строк экран должен оставаться прежнимкак показано в прошлый раз.

Ожидается быстрый ответ.

С уважением,

VIJESH V.NAIR Системный аналитик.Дели, Индия.

1 Ответ

0 голосов
/ 26 июня 2011

Перед добавлением элемента добавьте в закладки текущую строку таблицы, соответствующую dbgrid.После добавления элемента перейдите к закладке в качестве примера для работы с TBookmark: (вы можете заменить clientdataset1 своим tableName, например table1)

unit MainForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBClient, ExtCtrls, ActnList, Grids, DBGrids,
  DBCtrls;

type
  TfrmMain = class(TForm)
    DataSource1: TDataSource;
    pnlClient: TPanel;
    pnlBottom: TPanel;
    btnFirst: TButton;
    btnLast: TButton;
    btnNext: TButton;
    btnPrior: TButton;
    DBGrid1: TDBGrid;
    ClientDataSet1: TClientDataSet;
    btnSetRecNo: TButton;
    DBNavigator1: TDBNavigator;
    btnGetBookmark: TButton;
    btnGotoBookmark: TButton;
    procedure FormCreate(Sender: TObject);
    procedure btnNextClick(Sender: TObject);
    procedure btnLastClick(Sender: TObject);
    procedure btnSetRecNoClick(Sender: TObject);
    procedure btnFirstClick(Sender: TObject);
    procedure btnPriorClick(Sender: TObject);
    procedure btnGetBookmarkClick(Sender: TObject);
    procedure btnGotoBookmarkClick(Sender: TObject);
  private
    { Private declarations }
    FBookmark: TBookmark;
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  ClientDataSet1.LoadFromFile('C:\Employee.cds');
end;

procedure TfrmMain.btnFirstClick(Sender: TObject);
begin
  ClientDataSet1.First;
end;

procedure TfrmMain.btnPriorClick(Sender: TObject);
begin
  ClientDataSet1.Prior;
end;

procedure TfrmMain.btnNextClick(Sender: TObject);
begin
  ClientDataSet1.Next;
end;

procedure TfrmMain.btnLastClick(Sender: TObject);
begin
  ClientDataSet1.Last;
end;

procedure TfrmMain.btnSetRecNoClick(Sender: TObject);
var
  Value: string;
begin
  Value := '1';
  if InputQuery('RecNo', 'Enter Record Number', Value) then
    ClientDataSet1.RecNo := StrToInt(Value);
end;

procedure TfrmMain.btnGetBookmarkClick(Sender: TObject);
begin
  if Assigned(FBookmark) then
    ClientDataSet1.FreeBookmark(FBookmark);

  FBookmark := ClientDataSet1.GetBookmark;
end;

procedure TfrmMain.btnGotoBookmarkClick(Sender: TObject);
begin
  if Assigned(FBookmark) then
    ClientDataSet1.GotoBookmark(FBookmark)
  else
    ShowMessage('No bookmark set!');
end;

end.
...