powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid, выделение колонки(ячейки) щелчком мыши
4 сообщений из 29, страница 2 из 2
Grid, выделение колонки(ячейки) щелчком мыши
    #38162702
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540, меня кстати, тоже начали посещать мысли о нецелесообразности дальнейшего продвижения по данному вопросу в сторону углубления.
Ну нет и ненадо!
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38169184
Crispy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛюдмilaКроме того, в одном приложении реализованном на Делфи была такая фишка:
при прокрутке грида по вертикали активная строка, прежде чем скрыться за рамки передавала фокус соседней видимой строке,
короче активная строка была всегда на виду!
Интересно, в Фоксе это осуществимо?
При желании много чего возможно. Было бы желание (и время) возиться. ))) Поскольку фоксовский грид на самом деле очень неплохая штука. Конкретно для работы с таблицами - возможно и самый крутейший (хотя увы так и не доведенный до совершенства).
Например желаемое изменение можно получить добавив в метод грида MouseWheel нечто наподобие:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
LPARAMETERS nDirection, nShift, nXCoord, nYCoord
NODEFAULT 
WITH this
.DoScroll(IIF(nDirection>0,0,1))    && совместно с NODEFAULT таким образом мы делаем прокрутку не на 3 строки, а на 1
* а далее просто двигаем запись по окошку при выходе активной строки за пределы или при "упирании" ее до конца
* вверх/вниз (хотя в принципе тут можно уже и самому настроить как хочется):
IF .ActiveRow=0 OR .ActiveRow=.RelativeRow    
	SKIP EVALUATE(IIF(nDirection>0,'-1','1')) 
ENDIF 
ENDWITH 


Кроме того, активные текстбоксы грида имеют одно неприятное свойство - при нахождении курсора мыши над ними прокрутка не работает. Чтобы не нервировать пользователя ))) а также для простоты работы, я обычно в режиме передвижения не делаю текстбоксы открытыми для редактирования. Поскольку редактирование в нужный момент всегда можно либо включать нужной кнопкой, либо при желании придумать что-то еще.
Т.е. для решения вышеозначенной проблемы с прокруткой при нахождении над активной строкой, на мой взгляд лучше уж сразу в Init грида включать стиль текстбоксов в режим "псевдо-лейблов":
Код: sql
1.
this.SetAll('Style',1,'textbox')


При необходимости же редактирования снова переключать - для конкретного столбца, либо снова для всех:
Код: sql
1.
this.SetAll('Style',0,'textbox')
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38169254
XAndy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, Crispy

Crispyжелаемое изменение можно получить добавив в метод грида MouseWheel нечто наподобие
Это нетипичное поведение для списков в ОС Windows. Взять хотя бы тот же наистандартнейший Windows Explorer, выделить строку, где есть чему прокручиваться - выделенная строка не меняется при прокрутке. Ну нравится людям создавать себе проблемы со всякими жуткими командами вроде Keyboard, DоScroll и т.д., зачем им помогать? ;)

CrispyКроме того, активные текстбоксы грида имеют одно неприятное свойство - при нахождении курсора мыши над ними прокрутка не работает
Помогает отказ от редактирования в гриде + фиктивная колонка грида с уводом фокуса при клике на гриде. Ещё поможет такой код в MouseWheel() базовых классов контролов:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
lparameters iDirection, iShift, iXCoord, iYCoord
with thisform
   * есть вертикальный скроллинг, есть куда прокручивать и есть полоса прокрутки
   if inlist(.ScrollBars,2,3) and !(iDirection>0 and .ViewPortTop<=0) and .ViewPortWidth<>.Width
      * коэфф. 15 взят из TWIP-2-Pixel
      .SetViewPort(.ViewPortLeft, .ViewPortTop - iDirection/15)
   endif
endwith


Пробуй, должно работать. Может что-то ещё нужно, не помню, но у меня прокрутка колёсиком работает абсолютно над всеми контролами, гридами, формами с прокруткой и проч., вне зависимости от фокуса, было бы чему прокручиваться
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38169341
Crispy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XAndy,
Да мне оно как бы и не надо особо-то.))) Это я автору вопроса просто высказал. Обычно редактирование у меня включается и выключается только по осмысленному нажатию на кнопку "редактирование/завершение", причем со строгим вопросом-предупреждением))) Иначе же грид работает только в режиме просмотра.
Также использовал и способ увода в скрытый доп.столбец, но это обычно использовал скажем при необходимости вставки в один из столбцов чекбоксов или же группы option-ов. Либо еще - в собственном варианте грида, который сделал по сути более удобной заменой всяческих менюшек-попупов с возможностью множественных пометок. Грид тут намного удобнее. Т.е. скажем имеем список всех архивов, кликаем по нужным (срабатывает по принципу вкл-выкл в зависимости от четности кликов), при этом выбираемые строки подсвечиваются другим цветом, при завершении операции или выходе все сбрасывается в начальное состояние. Чисто на мой взгляд, намного удобнее "стандартных" методов ручного отбора, применяемых многими в фоксе. Это я еще с FPD себе придумал. Хотя понятное дело там реализация была на say-inkey в цикле процедурки.
А сюда заглянул просто со скуки. ))) Что-то на фокслубе тишина и сонное царство сегодня.
...
Рейтинг: 0 / 0
4 сообщений из 29, страница 2 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid, выделение колонки(ячейки) щелчком мыши
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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