TCustomGrid: менять ширину колонки не только в заголовке?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

TCustomGrid: менять ширину колонки не только в заголовке?

Сообщение Browny » 04.07.2010 15:00:32

Всех приветствую!
Ищу решение для смены ширины колонки не только за заголовок, но просто за правую границу колонки (по аналогии с TOIPropertyGrid) - хочется сделать наследника TCustomGrid, обладающего этим функционалом.
В Delphi всё было прозрачно - переопределил CalcSizingState, в Lazarus пока остановился вот на чём:

Модуль $LAZARUS\lcl\grids.pas:
TCustomGrid.MouseMove - из него вызывается HeadersMouseMove, предположительно переключая fGridState в состояние gsColSizing.
Далее вызывается doColSizing(X,Y), который уже меняет курсор мыши и т.д. и т.п.

Пока не могу найти конкретное место, где меняется статус на gsColSizing, т.е. где при движении мыши определяется, располагается ли указатель мыши над "sizeable" областью.

Есть ли у кого идеи?
Аватара пользователя
Browny
новенький
 
Сообщения: 37
Зарегистрирован: 31.08.2007 10:42:55

Re: TCustomGrid: менять ширину колонки не только в заголовке?

Сообщение yurgel » 05.07.2010 19:17:18

хочется сделать наследника TCustomGrid, обладающего этим функционалом.


Код: Выделить всё
  StringGrid1.Options := StringGrid1.Options + [goColSizing];
  StringGrid1.ExtendedColSizing := TRUE;


Добавлено спустя 11 минут 49 секунд:
з.ы. по существу вопроса, грид уходит в goColSizing не в момент движения кнопки, а в момент её нажатия - т.е. начинать раскопки надо с метода TCustomGrid.MouseDown.
yurgel
новенький
 
Сообщения: 37
Зарегистрирован: 29.06.2010 16:06:58

Re: TCustomGrid: менять ширину колонки не только в заголовке?

Сообщение Browny » 06.07.2010 10:06:06

yurgel, пристыжён (за незнание готового функционала) и благодарен. Я уже планировал переписывать от TCustomControl посредством копипаста и дальнейшей замены и модификации методов :)
Относительно MouseDown - не совсем согласен. Я уже смотрел в этот метод, везде встречается проверка возможности менять ширину колонки (goColSizing), но, помимо этого, опять же везде проверяется факт, что resize возможно начать (по факту наличия соответствующего курсора: Cursor=crHSplit). Опять же, форма курсора меняется до нажатия кнопок мыши.

Считаю свой вопрос закрытым, ещё раз спасибо!
Аватара пользователя
Browny
новенький
 
Сообщения: 37
Зарегистрирован: 31.08.2007 10:42:55

Re: TCustomGrid: менять ширину колонки не только в заголовке?

Сообщение yurgel » 06.07.2010 11:28:27

я очепятался, имелось в виду gsColSizing. грид сваливается в него именно на MouseDown, в зависимости от разных настроек и goColSizing.
yurgel
новенький
 
Сообщения: 37
Зарегистрирован: 29.06.2010 16:06:58


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 224

Рейтинг@Mail.ru