Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > как программно сдвинуть ползунок stringgrid?


Автор: Lunatikus 20.2.2008, 15:35
снова здравствуйте.
Требуется перейти визуально,например,на 46 запись в stringgrid без использования stringgrid.row=номер_строки,ибо это вызывает,как выяснилось событие нажатия на стринггрид,что мне совсем не нужно.Мне надо,чтобы при появлении стрингрида на экране(около 400 записей) пользователю не надо было вручную прокручивать к 46,а сразу показать хотя бы примерно тот участок,где эта запись.

Автор: VICTAR 20.2.2008, 18:23
Вот грубый вариант, позволяет переместится в
Цитата(Lunatikus @  20.2.2008,  15:35 Найти цитируемый пост)
примерно тот участок,где эта запись. 

Доделай сам. Мне сейчас некогда . Убегаю.
Код

procedure TForm1.btn1Click(Sender: TObject);
var
  i: Integer;
begin
  with grd1 do
  begin
    RowCount := 400;
    for i := 0 to pred(RowCount) do
      Cells[0, i] := Format('Строка №%d', [succ(i)]);
  end;
end;

procedure TForm1.btn2Click(Sender: TObject);
var
  lPos: Integer;
  lMes: TWMScroll;
  lInfo: TScrollInfo;
begin
  FillChar(lInfo, SizeOf(TScrollInfo), 0);
  lInfo.fMask := SIF_RANGE;
  GetScrollInfo(grd1.Handle, SB_VERT, lInfo);
  lPos := (lInfo.nMax * 39) div grd1.RowCount;
  lMes.Msg := WM_VSCROLL;
  lMes.ScrollCode := SB_THUMBPOSITION;
  lMes.Pos := lPos;
  grd1.Dispatch(lMes);
end;

Автор: diamondd 1.3.2008, 00:29
TStringGrig.LetfCol - номер первого видимого столбца

TStringGrid.TopRow - номер первой видимой строки

Автор: VICTAR 1.3.2008, 01:10
Цитата(Lunatikus @  20.2.2008,  15:35 Найти цитируемый пост)
без использования stringgrid.row=номер_строки,


Автор: diamondd 2.3.2008, 01:15
использование свойств TopRow и LeftCol не вызывает события Click, потому что это просто сдвигание области прорисовки компонента.

в свою очередь, при использование свойств Row и Col вызывается функция FocusCell, т.е. программный "клик" на этой ячейке, вследствие вызывается событие OnClick:

Цитата

без использования stringgrid.row=номер_строки,ибо это вызывает,как выяснилось событие нажатия на стринггрид,что мне совсем не нужно


RTFM и смотрите исходники.

Автор: VICTAR 2.3.2008, 01:24
Цитата(diamondd @  2.3.2008,  01:15 Найти цитируемый пост)
использование свойств TopRow и LeftCol не вызывает события Click, потому что это просто сдвигание области прорисовки компонента.

Хм.. Возможно. Я не разбирался. Если так, то приношу извинения.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)