powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid, выделение колонки(ячейки) щелчком мыши
25 сообщений из 29, страница 1 из 2
Grid, выделение колонки(ячейки) щелчком мыши
    #38154427
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!
Как сделать, чтобы по щелчку мыши полностью выделялась в Grid'e колонка, как если б на нее перейти, например, Tab'ом? Или, если угодно, одинарный щелчок мыши заменить тройным щелчком? Короче, как в Excel'е...
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38154478
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pulsar_p,

Зачем тебе вся колонка? Все равно ведь работаешь только с ячейкой в текущей строке, а туда
Код: plsql
1.
Thisform.myGrid.Column<n>.Setfocus()
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38154492
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, тебе достаточно Header покрасить? Тогда в методе Gotfocus() Thisform.myGrid.Column<n>.text1
Код: sql
1.
Thisform.myGrid.Column<n>.Header1.BackColor=RGB(...,...,...)


а в Lostfocus() - обратно (как было)
Код: sql
1.
Thisform.myGrid.Column<n>.Header1.BackColor=RGB(236,233,216)


На Excel чем-то похоже... :))
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38154646
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540,
Наверное, я немного неправильно сформулировал задачу.
Дело в том, что когда пользователь кликает мышью по (Джонни прав) ячейке, в которой уже есть некоторое значение, (например, Автоваз), то нужно чтоб эта ячейка (value=Автоваз) выделялась целиком, т.е. выглядело так: Автоваз
Зачем это нужно? Дело в том, что это значение берется из справочника, одна или там несколько букв не меняются, а меняется все значение ячейки целиком (либо ячейка полностью очищается). Что происходит сейчас: пользователь кликает мышкой, попадает (условно говоря) на середину ячейки, и ему (пользователю) для того, чтобы очистить эту ячейку приходится орудовать клавишами Del и Back, что сами понимаете, не есть хорошо. Нужный эффект (выделение ячейки) достигается тройным кликом мышкой по данной ячейке, но к сожалению, квалификация пользователей разная, кому-то легко быстренько три раза кликнуть мышкой по ячейке, кому-то нет (Пользователей больше тридцати).
Ребята, есть ли простое решение данной проблемы?
Советы типа того: "Зачем справочник запихал в Grid, все немедленно переделывай", просьба не давать, как говорится: "Мы имеем, то, что имеем..."
Заранее благодарен.
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38154652
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже бился как-то над этой проблемой.
пропиши в Grid.MouseUp()
Код: sql
1.
2.
3.
This.AllowCellSelection = .F. 
This.AllowCellSelection = .T. 
This.SetFocus()
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38154667
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Не помогает...
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38154671
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простите, если я не в тему.
Тройной щелчок? - (я Ctrl+P на печать) заменила (добавила) на клик по скролу мышки, событие -Grid.ColumnN.Text1.MiddleClick
сейчас юзают кто как хочет, кто как привык, но считают что мышкой круче!
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38154711
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pulsar_pDima T,
Не помогает...
Наврал немного :) это надо в MouseUp() текстбоксов.
Код: sql
1.
2.
3.
This.Parent.Parent.AllowCellSelection = .F. 
This.Parent.Parent.AllowCellSelection = .T. 
This.Parent.Parent.SetFocus()



Но может работать как я выше написал, но тогда надо MouseUp() текстбоксов продублировать в Grid.MouseUp() через BINDEVENT()
У меня это в Grid.Init() прописано:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
local loCol, i
for each loCol in This.Columns
	for i = 1 to loCol.ControlCount
		if PEMSTATUS(loCol.Controls(i), "MouseUp", 5)
			BINDEVENT(loCol.Controls(i), "MouseUp", This, "MouseUp")
		endif
	endfor
endfor
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38155122
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, Спасибо, все заработало. Сам бы ни в жизнь не догадался...
Единственное, что у меня почему-то при клике мышке на некоторую ячейку, фокус "прыгал" на самую последнюю ячейку данной колонки.
Немного допилил:
*
oldrecno=RECNO(this.parent.Parent.RecordSource)
This.Parent.Parent.AllowCellSelection = .F.
This.Parent.Parent.AllowCellSelection = .T.
GOTO oldrecno IN this.parent.Parent.RecordSource
This.Parent.Parent.SetFocus()
*
Еще раз большое спасибо!!!
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38155125
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pulsar_p,

Так тебя устроит? Метод Click() Thisform.myGrid.Column<n>.text1
Код: plsql
1.
2.
KEYBOARD '{TAB}' PLAIN CLEAR
KEYBOARD '{BACKTAB}' PLAIN


Вроде нормально пашет :)
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38155136
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pulsar_pЕдинственное, что у меня почему-то при клике мышке на некоторую ячейку, фокус "прыгал" на самую последнюю ячейку данной колонки.
У меня не прыгает. Скорее всего еще какой-то код у тебя срабатывает при этих переключениях.
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38155196
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джонни, так тоже работает.
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38155291
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только сейчас поняла о чём вы.
Очень полезная вещь!
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38158483
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё чудесно работает. Спасибо! Подобного эффекта добилась ранее нагородив такой огород - стыдно вспомнить.
Кроме того, в одном приложении реализованном на Делфи была такая фишка:
при прокрутке грида по вертикали активная строка, прежде чем скрыться за рамки передавала фокус соседней видимой строке,
короче активная строка была всегда на виду!
Интересно, в Фоксе это осуществимо?
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38158629
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Людмila, попробуйте поработать с activerow/lastrow/activatecell в событии scrolled().
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38159682
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С Scrolled работала и не раз - он выдает одни и те же результаты независимо от нахождения активной строки.
А все остальные Вами перечисленные методы и события ничего не говорят о том, видима ли активная строка или или уже нет. :(
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38159724
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛюдмilaА все остальные Вами перечисленные методы и события ничего не говорят о том, видима ли активная строка или или уже нет. :(Ну как это "не говорят"? Если видима, то в них некие числа, отличные от нуля. А если не видима, то ноль. Другое дело, что вроде бы нет простого способа определить, какая по счёту строка таблицы (точнее, её "представления") находится сейчас в верхней строке грида (извините за тавтологию).
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38159939
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir, а можно поинтересоваться, кто именно Вам об этом сказал, и как Вы извлекли эту уникальную имфу?
Куда не ткни - везде ноль или отличная от него величина. Во как.

А мой вопрос был - осуществима ли вышеописанная фича в Фоксе????
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38160109
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Людмila,

ЛюдмilaА мой вопрос был - осуществима ли вышеописанная фича в Фоксе????
Может, не совсем то и только построчно, но все-таки:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
* метод Scrolled() Grid'a:

LPARAMETERS nDirection
if nDirection=0
	this.doscroll(1)
	keyboard '{uparrow}'
endif
if nDirection=1
	this.doscroll(0)
	keyboard '{dnarrow}'
endif

Может, кто допилит для листания по страницам, мне лень :))
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38160149
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛюдмilaА мой вопрос был - осуществима ли вышеописанная фича в Фоксе????
Осуществима, правда не очень красиво. Надо кликать мышкой в нужную строку грида когда активная строка из области видимости уходит. Пропиши в Grid.Scrolled()
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
if This.ActiveRow = 0 
	*Текущие координаты мыши
	lnMR = mrow('screen', 3)
	lnMC = mcol('screen', 3)
	* клик вверх грида
	mouse click at This.top + 30, This.Left + 30 pixels window (ThisForm.Name)
	* возвращаем мышь на место
	mouse at lnMR, lnMC pixels
endif


Будет ставить на первую строку как та уйдет за кадр.

PS По-моему это плохая идея. Теряется возможность покрутить список а потом вернуться обратно просто нажав стрелку на клавиатуре. И потом если пользователь скроллит мышкой, то кликнуть в нужную запись ему не сложно, кликать все равно придется.
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38160233
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛюдмilaА все остальные Вами перечисленные методы и события ничего не говорят о том, видима ли активная строка или или уже нет. :(Да Вы же даже не читали про них! Я ведь в том ответе ошибся (прошу прощения) - метода lastrow у грида нет. Хотел написать relativerow, да задумался о чём-то. Кстати, это не методы или события, а свойства.
Ну и... правда Ваша - везде либо ноль, либо не ноль. Да взять хоть тот же sqlexec - может вернуть ноль, а может и не ноль. Но Вы же не будете отрицать, что если эта функция вернула ноль, то это означает вовсе не то, что означала бы возвращённая единица, или минус единица, например. Почему же тогда сравнение с нулём значения activerow вызвало у Вас такую бурную реакцию?
ЗЫ. А инфу я из хелпа брал, там прямым текстом сказано, что если текущая строка находится вне области видимости, то activerow=0.
ЗЗЫ.Dima TPS По-моему это плохая идея...+1
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38160244
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Код: sql
1.
2.
* клик вверх грида
	mouse click at This.top + 30, This.Left + 30 pixels window (ThisForm.Name)

+headerheight добавить не мешало бы. А то мало ли у кого какие заголовки...

ЗЫ. А в случае, если на гриде "висит" (after/before)rowcolchange, всё это (в любом из вариантов) ещё и будет нагружать систему в общем-то бесполезной работой.
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38160384
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirDima T
Код: sql
1.
2.
* клик вверх грида
	mouse click at This.top + 30, This.Left + 30 pixels window (ThisForm.Name)

+headerheight добавить не мешало бы. А то мало ли у кого какие заголовки...
По хорошему - надо, я для примера +30 написал.

tanglirЗЫ. А в случае, если на гриде "висит" (after/before)rowcolchange, всё это (в любом из вариантов) ещё и будет нагружать систему в общем-то бесполезной работой.
Если что-то тяжелое навешено, то есть смысл таймер задействовать, который по окончанию пользовательской активности все сделает один раз.
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38161601
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540Может, кто допилит для листания по страницам, мне лень :))
keyboard '{dnarrow}' работает
если крутить скролом мышки, грид скрывает сразу 3 строки (зависит от инд.настроек)
- типа keyboard '{ dnarrow}' х 3
затем нажатие на PageDown - переносит на последнюю видимую строку грида
- типа keyboard '{PGDN}'
щелчек по линейке скрола грида
- типа keyboard '{PGDN}' + keyboard '{ dnarrow}'
c хвостом (когда осталось несколько строк) не совсем ясно. :(

Из уверений Делфиста:
- говорит что там подобные танцы с бубном сводятся к присвоению какому-то свойству значения 1 (.T.) и что вообще там сетка более продвинутая.
...
Рейтинг: 0 / 0
Grid, выделение колонки(ячейки) щелчком мыши
    #38162535
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Людмilac хвостом (когда осталось несколько строк) не совсем ясно. :(Продолжим танцы?
что-то типа...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
* Grid, Scrolled
* nDir - новое свойство формы, Value=0

LPARAMETERS nDirection

thisform.ndir=nDirection

if nDirection=1
	this.doscroll(0)
	keyboard'{dnarrow}'
endif
if nDirection=0 
	this.doscroll(1)
	keyboard'{uparrow}'
endif
if nDirection=3
	this.doscroll(2)
	keyboard'{pgdn}'
endif
if nDirection=2
	this.doscroll(3)
	keyboard'{pgup}'
endif

 
* Grid, MouseUp()

LPARAMETERS nButton, nShift, nXCoord, nYCoord

if thisform.ndir=3 and this.relativerow=1
	go bottom
	this.refresh
endif


Все это, конечно, "через ж..." и надо ли это, тем более, что с колесом мыша вообще ерунда?
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid, выделение колонки(ячейки) щелчком мыши
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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