C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
TStringGrid, Scroll
HeliCOPter
Отправлено: 26.05.2006, 14:57


Ученик-кочегар

Группа: Участник
Сообщений: 14



Такая проблема.
Есть большой заполненный Грид. Нужно реализовать функцию поиска нужной ячейки.
Я ищу, при нахождении изменяю свойство Selection, ячейка выделяется, но если она находится за границами окна, то Грид сам не скроллируется и ее не видно, но можно подобраться к ней вручную подкрутив скролл.

Никто не подскажет как выйти из положения?
Можно ли программно крутить скролл в гриде?
Или может как-то по-другому можно на ячейку?
Guest
Отправлено: 26.05.2006, 15:02


Не зарегистрирован







Попробуйте LeftCol и TopRow
Doga
Отправлено: 26.05.2006, 15:07


Мастер участка

Группа: Участник
Сообщений: 575



CODE

MyGrid->Col = MySelectedCellCol;
MyGrid->Row = MySelectedCellRow;

HeliCOPter
Отправлено: 26.05.2006, 15:27


Ученик-кочегар

Группа: Участник
Сообщений: 14



QUOTE (Doga @ 26/05/2006, 15:07)
CODE

MyGrid->Col = MySelectedCellCol;
MyGrid->Row = MySelectedCellRow;

Не работает... sad.gif
Grigoriy
Отправлено: 26.05.2006, 16:31


Мастер участка

Группа: Участник
Сообщений: 381



QUOTE (Guest @ 26/05/2006, 15:02)
Попробуйте LeftCol и TopRow

Ну так вам же написали ! ... свойства компонента.

CODE

StringGrid1->LeftCol=9;
StringGrid1->TopRow=10;
//Вот теперь ячейка с координатами (9; 10) окажется в левом верхнем углу таблицы
Doga
Отправлено: 26.05.2006, 16:33


Мастер участка

Группа: Участник
Сообщений: 575



Не будет работать только если

(MyGrid->Col == MySelectedCellCol) && (MyGrid->Row == MySelectedCellRow)

Для такого случая:
CODE

MyGrid->Col = MySelectedCellCol — 1;
MyGrid->Col = MySelectedCellCol;
MyGrid->Row = MySelectedCellRow;


При установке курсора грида на нужную ячейку вызывается функция MoveCurrent, которая, в свою очередь, вызывает функцию ClampInView.
Вот она то и скроллит грид...

Отредактировано Doga — 26/05/2006, 16:39
Aptem
Отправлено: 26.05.2006, 17:56


Мастер участка

Группа: Участник
Сообщений: 349



Я скролю гриды вот так:
CODE
SendMessage (StringGrid1 -> Handle, WM_VSCROLL, SB_BOTTOM, NULL );
HeliCOPter
Отправлено: 26.05.2006, 22:55


Ученик-кочегар

Группа: Участник
Сообщений: 14



Всем огромное спасибо, получилось!

Вернуться в Вопросы программирования в C++Builder