Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как сделать Scroll имеющий ползунок размера пропорционального количеству видимых данных / 5 сообщений из 5, страница 1 из 1
07.02.2020, 21:52
    #39924088
Леон4ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Scroll имеющий ползунок размера пропорционального количеству видимых данных
Подскажите как сделать чтобы размер ползунка Скролла в гриде был пропорционален количеству скрытых данных. Как же это реализовано в браузерах и других приложениях? Подскажите формулу кто знает/ Пробовал так, но размер не правильный.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure TFEmu1.FormResize(Sender: TObject);
var info: TScrollInfo;
begin
  FillChar(info, SizeOf(info), 0);
  with info do
  begin
    cbsize := SizeOf(info);
    fmask  := SIF_ALL;
    GetScrollInfo(SGMain.Handle, SB_VERT, info);
    fmask := fmask or SIF_PAGE;
    nMin:=0;
    nMax:=100;
    nPage:=TRunc(10*(nmax - nmin)/SGMain.RowCount);
end;
  SetScrollInfo(SgMain.Handle, SB_VERT, info, True);
end;


Также пробовал так но все плохо.
Код: pascal
1.
nPage:=SGMain.VisibleRowCount/SGMain.RowCount*SGMain.Height


Также смотрел исходники TScrollBox но не понял толком ничего
...
Рейтинг: 0 / 0
08.02.2020, 08:50
    #39924140
L1G
L1G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Scroll имеющий ползунок размера пропорционального количеству видимых данных
может, так:
nMin := 0;
nMax := SGMain.RowCount;
nPage := SGMain.VisibleRowCount;
?
...
Рейтинг: 0 / 0
10.02.2020, 14:57
    #39924690
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Scroll имеющий ползунок размера пропорционального количеству видимых данных
Леон4ik
Подскажите как сделать чтобы размер ползунка Скролла в гриде был пропорционален количеству скрытых данных
Если мы говорим о TDBBGrid то он именно так и работает. Весь фокус в том, что грид не знает сколько данных в датасете, в него загружаются только отфетченные записи. А датасет, в общем случае, не знает сколько записей вернул сервер.

Проблему может решить такой код
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
procedure TForm1.DataSet1AfterOpen(ADataSet: TDataSet);
begin
  ADataSet.DisableControls;
  try
    ADataSet.Last;
    ADataSet.First;
  finally
    ADataSet.EnableControls;
  end;
end;

но быстродействия такой код не прибавит. И даже наоборот.
...
Рейтинг: 0 / 0
15.02.2020, 17:23
    #39927035
Леон4ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Scroll имеющий ползунок размера пропорционального количеству видимых данных
_Vasilisk_, используется StringGrid, но проблема уже решена
...
Рейтинг: 0 / 0
17.02.2020, 15:18
    #39927526
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Scroll имеющий ползунок размера пропорционального количеству видимых данных
Леон4ik
но проблема уже решена
Главное никому не говорите как
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как сделать Scroll имеющий ползунок размера пропорционального количеству видимых данных / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]