powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Несанкционированные перемещения указателя в гриде
5 сообщений из 5, страница 1 из 1
Несанкционированные перемещения указателя в гриде
    #32261154
Andrey-750
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такой вот неприятный факт:
В гриде по событию клик на каждом хидере вставлен код
Код: plaintext
1.
set order to ...
thisform.refresh

при этом при клике на заголовке столбца кроме, собственно сортировки по указанному тэгу происходит (не всегда, но чаще 50%) несанкционированное перемещение указателя текущей записи. Попытка запомнить текущий номер записи и вернуться к нему после пересортировки, равно как и установка параметра "NODEFAULT", не помогает :-(
Код: plaintext
1.
2.
3.
4.
5.
m.CurRec = RECNO()
SET ORDER TO din
GO m.CurRec
thisform.Refresh
NODEFAULT

Попытка отследить момент смены указателязаписи -
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
m.CurRec = RECNO()
SET STEP ON
WAIT  "Before SET ORDER - "  + ALLTRIM(STR(RECNO())) WINDOW
SET ORDER TO din
WAIT  "After SET ORDER - "  + ALLTRIM(STR(RECNO())) WINDOW
GO m.CurRec
WAIT  "After GO - "  + ALLTRIM(STR(RECNO())) WINDOW
thisform.Refresh
WAIT  "After refresh - "  + ALLTRIM(STR(RECNO())) WINDOW
NODEFAULT 

показала, что неприятность происходит где-то во время отработки метода refresh.
Помогла повторная принудительная установка номера текущей записи с последующим THISFORM.REFRESH
Код: plaintext
1.
2.
3.
4.
m.CurRec = RECNO()
SET ORDER TO din
thisform.Refresh
GO m.CurRec
thisform.Refresh

Не подскажет ли кто, как избежать подобного безобразия - очень не хочется, чтобы отрабатывали коды BeforRowColChange, AfterRowColChange

C Уважением, Андрей.
...
Рейтинг: 0 / 0
Несанкционированные перемещения указателя в гриде
    #32261722
akm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй рефрешить только грид.

Типа

m.CurRec = RECNO()
SET ORDER TO din
THIS.Parent.Parent.Refresh
GO m.CurRec

Ну, ессно будет отрабатывать и After... и Befor... ничего тут не поделаешь.
Так что главное - что у тебя в этих событиях прописано. Там собака наверное порылась.
...
Рейтинг: 0 / 0
Несанкционированные перемещения указателя в гриде
    #32261730
Фотография Андрей Давыдов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть 2 решения:

1. Уводить фокус с грида на время смены индекса

XXX.SetFocus()
SET ORDE TO TAG MyIndexTag IN (Grid.RecordSource)
Grid.Refresh()
Grid.SetFocus()

2. Делать текущую строку грида первой на время смены индекса:

LOCAL I,lnCnt
lnCnt=0
ThisForm.LockScreen=.T.
DO WHIL !INLI(Grid.RelativeRow,0,1)
Grid.DoScroll(1)
lnCnt=lnCnt+1
ENDD
SET ORDE TO TAG MyIndexTag IN (Grid.RecordSource)
Grid.Refresh()
FOR I=1 TO lnCnt
Grid.DoScroll(0)
ENDFOR
ThisForm.LockScreen=.F.
...
Рейтинг: 0 / 0
Несанкционированные перемещения указателя в гриде
    #32263089
EsKor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Andrey-750
Подобного безобразия не избежать, можно только или "обмануть" Grid, или устранить последствия безобразия.
Некоторые варианты уже предложены.
Если интересен еще случай убегания указателей при применении Grid'ов, посмотри на
http://gnomes60.valuehost.ru/ph/read.php3?f=5&pnn=1&i=65785&t=65785
...
Рейтинг: 0 / 0
Несанкционированные перемещения указателя в гриде
    #32263249
slz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
slz
Гость
Привет всем.
Я решил вот так:

LPARAMETERS nButton, nShift, nXCoord, nYCoord
if nButton = 1 then
Local lnRecord
lnRecord=RECNO()

if gnColums!=1 then
SET ORDER TO TAG_DSale Ascending
gnColums=1
glOrder=.T.
else
if glOrder=.T. then
glOrder=.F.
SET ORDER TO TAG_DSale Descending
else
glOrder=.T.
SET ORDER TO TAG_DSale Ascending
endif
endif
GOTO TOP
thisform.refresh()
GOTO lnRecord
endif
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Несанкционированные перемещения указателя в гриде
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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