|
Вопрос # 1 320/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Имеется таблица с большим кол-вом строк. Отдельно и в стороне от неё имеется Scroll Bar в роли которого выступает Track bar.
Как вы поняли нужно скроллировать таблицу этим Track Bar'ом в вертикальном направлении. Как это реализовать?
Положение скрол бара компонента можно получить с пом. GetScrollPos, но она не работает, когда отображение скролбаров у таблицы выключены...
Есть ли какой-то способ сделать так чтобы скролбары в таблице были, но видно их небыло?
 |
Вопрос задал: Виталий (статус: 2-ой класс)
Вопрос отправлен: 6 февраля 2008, 15:55
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, Виталий!
Не знаю, для чего такой изврат понадобился, но если уж хочеться:)
итак. когда грид заполнили данными или количество строк поменялось,надо выполнить следующий код
ScrollBar1.Min := 0;
ScrollBar1.Max := StringGrid1.RowCount - StringGrid1.VisibleRowCount - StringGrid1.FixedRows;
ScrollBar1.Position := StringGrid1.TopRow;
а в событии onScroll ScrollBar'a пишем такое
procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
begin
StringGrid1.TopRow := ScrollPos + StringGrid1.FixedRows;
end;
Этот код учитывает даже кол-во фиксированных строк.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 6 февраля 2008, 22:04
Оценка за ответ: 5
Комментарий к оценке: Большое спасибо, я даже не знал что у грида есть такие параметры...
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 8 февраля 2008, 22:07; участников в обсуждении: 2.
|
Виталий (статус: 2-ой класс), 8 февраля 2008, 13:17 [#1]:
Ещё вопрос :
Как синхронизировать скрол бар с гридом.
procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
begin
StringGrid1.TopRow := ScrollPos + StringGrid1.FixedRows;
end;
это при манипуляциями с скролом, а как отследить манипуляции с гридом? Я использую tsGrid из пакета TopGrid.
|
|
Вадим К (статус: Академик), 8 февраля 2008, 22:07 [#2]:
а всё то предельно просто - достаточно чуточку подумать. Добавим ещё такой обработчик
procedure TForm1.StringGrid1TopLeftChanged(Sender: TObject);
begin
ScrollBar1.Position := StringGrid1.TopRow;
end;
куда именно его вписать - оставляю как персональное задание
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|