Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.09;
Скачать: CL | DM;

Вниз

Проблема с прокруткой в TScrollBox   Найти похожие ветки 

 
И. Павел   (2006-06-24 14:42) [0]

Здравствуйте, уважаемые мастера. Почти всю область формы в моей программе занимает ScrollBox. В нём расположен StringGrid больших размеров. Если перевести фокус на компонент StringGrid, ScrollBox автоматически прокручивается, так чтобы на экране оказалась левая верхняя часть таблицы, и если пользователь выбрал, например, последнюю строчку таблицы StringGrid, курсор остаётся где-то внизу. Сохранить позицию линеек прокрутки до передачи фокуса на StringGrid и потом восстановить их у меня не получается, так как очерёдность вызова обработчиков OnEnter для StringGrid и OnCanResize для ScrollBox не сохраняется и зависит от элемента, с которого перешёл фокус. В ScrollBox находятся несколько кнопок и другие объекты, связанные с StringGrid, так что использовать его собственные линейки не получается. Подскажите, пожалуйста, можно ли как-то сохранять позицию линеек прокрутки в ScrollBox при переключении на другой компонент?


 
Noname27   (2006-06-24 18:30) [1]

Попробуй устанавливать позицию скролла при обработке события StringGrid"а OnDrawCell. Например, если у тебя высоты всех строк StringGrid"а одинаковые, то:
 
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
begin
ScrollBox.VertScrollBar.Position :=
   StringGrid.RowHeights[0] * StringGrid.Row;
 end;


 
И. Павел   (2006-06-24 19:40) [2]

Такой обработчик OnDrawCell позволяет изменить позицию линейки прокрутки на нужную при смене фокуса, но он не позволяет пользователю использовать прокрутку: как только ползунок прокрутки переместится, срабатывает обработчик OnDrawCell и возвращает ScrollBox в исходное состояние.



Страницы: 1 вся ветка

Текущий архив: 2006.07.09;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.025 c
2-1150533533
Exile
2006-06-17 12:38
2006.07.09
Запуск приложений из программы


15-1149744955
new1
2006-06-08 09:35
2006.07.09
Запуск Delphi без установки дистрибутива


4-1143697841
kkostik
2006-03-30 09:50
2006.07.09
Определить если ли, что на Com порте!


2-1151158305
max1981
2006-06-24 18:11
2006.07.09
Закрытие окна проводника из своей программы


2-1150964476
Кирилл Таран
2006-06-22 12:21
2006.07.09
Анимация в Дельфи 7.0 (оператор паузы)