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

Зачем тебе вся колонка? Все равно ведь работаешь только с ячейкой в текущей строке, а туда
Код: plsql
1.
Thisform.myGrid.Column<n>.Setfocus()
...
Рейтинг: 0 / 0
17.02.2013, 12:13
    #38154492
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid, выделение колонки(ячейки) щелчком мыши
Может, тебе достаточно 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
17.02.2013, 15:51
    #38154646
Pulsar_p
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid, выделение колонки(ячейки) щелчком мыши
Jonny540,
Наверное, я немного неправильно сформулировал задачу.
Дело в том, что когда пользователь кликает мышью по (Джонни прав) ячейке, в которой уже есть некоторое значение, (например, Автоваз), то нужно чтоб эта ячейка (value=Автоваз) выделялась целиком, т.е. выглядело так: Автоваз
Зачем это нужно? Дело в том, что это значение берется из справочника, одна или там несколько букв не меняются, а меняется все значение ячейки целиком (либо ячейка полностью очищается). Что происходит сейчас: пользователь кликает мышкой, попадает (условно говоря) на середину ячейки, и ему (пользователю) для того, чтобы очистить эту ячейку приходится орудовать клавишами Del и Back, что сами понимаете, не есть хорошо. Нужный эффект (выделение ячейки) достигается тройным кликом мышкой по данной ячейке, но к сожалению, квалификация пользователей разная, кому-то легко быстренько три раза кликнуть мышкой по ячейке, кому-то нет (Пользователей больше тридцати).
Ребята, есть ли простое решение данной проблемы?
Советы типа того: "Зачем справочник запихал в Grid, все немедленно переделывай", просьба не давать, как говорится: "Мы имеем, то, что имеем..."
Заранее благодарен.
...
Рейтинг: 0 / 0
17.02.2013, 15:59
    #38154652
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid, выделение колонки(ячейки) щелчком мыши
Тоже бился как-то над этой проблемой.
пропиши в Grid.MouseUp()
Код: sql
1.
2.
3.
This.AllowCellSelection = .F. 
This.AllowCellSelection = .T. 
This.SetFocus()
...
Рейтинг: 0 / 0
17.02.2013, 16:17
    #38154667
Pulsar_p
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid, выделение колонки(ячейки) щелчком мыши
Dima T,
Не помогает...
...
Рейтинг: 0 / 0
17.02.2013, 16:42
    #38154671
Людмila
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid, выделение колонки(ячейки) щелчком мыши
Простите, если я не в тему.
Тройной щелчок? - (я Ctrl+P на печать) заменила (добавила) на клик по скролу мышки, событие -Grid.ColumnN.Text1.MiddleClick
сейчас юзают кто как хочет, кто как привык, но считают что мышкой круче!
...
Рейтинг: 0 / 0
17.02.2013, 17:45
    #38154711
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid, выделение колонки(ячейки) щелчком мыши
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
18.02.2013, 06:37
    #38155122
Pulsar_p
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid, выделение колонки(ячейки) щелчком мыши
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
18.02.2013, 06:42
    #38155125
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid, выделение колонки(ячейки) щелчком мыши
Pulsar_p,

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


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

А мой вопрос был - осуществима ли вышеописанная фича в Фоксе????
...
Рейтинг: 0 / 0
21.02.2013, 08:50
    #38160109
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid, выделение колонки(ячейки) щелчком мыши
Людм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
21.02.2013, 09:31
    #38160149
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid, выделение колонки(ячейки) щелчком мыши
Людм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
21.02.2013, 10:27
    #38160233
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid, выделение колонки(ячейки) щелчком мыши
ЛюдмilaА все остальные Вами перечисленные методы и события ничего не говорят о том, видима ли активная строка или или уже нет. :(Да Вы же даже не читали про них! Я ведь в том ответе ошибся (прошу прощения) - метода lastrow у грида нет. Хотел написать relativerow, да задумался о чём-то. Кстати, это не методы или события, а свойства.
Ну и... правда Ваша - везде либо ноль, либо не ноль. Да взять хоть тот же sqlexec - может вернуть ноль, а может и не ноль. Но Вы же не будете отрицать, что если эта функция вернула ноль, то это означает вовсе не то, что означала бы возвращённая единица, или минус единица, например. Почему же тогда сравнение с нулём значения activerow вызвало у Вас такую бурную реакцию?
ЗЫ. А инфу я из хелпа брал, там прямым текстом сказано, что если текущая строка находится вне области видимости, то activerow=0.
ЗЗЫ.Dima TPS По-моему это плохая идея...+1
...
Рейтинг: 0 / 0
21.02.2013, 10:32
    #38160244
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid, выделение колонки(ячейки) щелчком мыши
Dima T
Код: sql
1.
2.
* клик вверх грида
	mouse click at This.top + 30, This.Left + 30 pixels window (ThisForm.Name)

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

ЗЫ. А в случае, если на гриде "висит" (after/before)rowcolchange, всё это (в любом из вариантов) ещё и будет нагружать систему в общем-то бесполезной работой.
...
Рейтинг: 0 / 0
21.02.2013, 11:58
    #38160384
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid, выделение колонки(ячейки) щелчком мыши
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
22.02.2013, 01:03
    #38161601
Людмila
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid, выделение колонки(ячейки) щелчком мыши
Jonny540Может, кто допилит для листания по страницам, мне лень :))
keyboard '{dnarrow}' работает
если крутить скролом мышки, грид скрывает сразу 3 строки (зависит от инд.настроек)
- типа keyboard '{ dnarrow}' х 3
затем нажатие на PageDown - переносит на последнюю видимую строку грида
- типа keyboard '{PGDN}'
щелчек по линейке скрола грида
- типа keyboard '{PGDN}' + keyboard '{ dnarrow}'
c хвостом (когда осталось несколько строк) не совсем ясно. :(

Из уверений Делфиста:
- говорит что там подобные танцы с бубном сводятся к присвоению какому-то свойству значения 1 (.T.) и что вообще там сетка более продвинутая.
...
Рейтинг: 0 / 0
22.02.2013, 16:40
    #38162535
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid, выделение колонки(ячейки) щелчком мыши
Людм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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid, выделение колонки(ячейки) щелчком мыши / 25 сообщений из 29, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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