Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid - не дать пользователю перейти на другую строку ... / 25 сообщений из 25, страница 1 из 1
22.03.2005, 10:50
    #32972969
help123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
Возможно ли такое решение:
- есть грид со множеством строк в котором пользователь может выбрать (активировать) любую строку.
- потом он нажимает кнопку... например: редактировать... и после этого можно редактировать только эту строку... и перейти на другую нельзя...
Это хочу сделать так чтобы редактирование записи было непосредственно в гриде и чтобы пользователь не смог случайно изменить данные в другой какой то строке.
PS: знаю что редактирование непосредственно в гриде - не очень правильная идея... но хотелось-бы максимально упростить ввод данных для пользователя... ему так более понятно.. и не путается...
Просто хочу знать есть ли ПРОСТОЕ решение этой задачи и СТОИТ ЛИ с этим связываться.

powered by Visual FoxPro 8.0 SP1
...
Рейтинг: 0 / 0
22.03.2005, 11:16
    #32973085
Ilhom_uz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
1) В форме новая пропертя editrow
2) После нажатия кнопки "Редактировать" thisform.editrow=recn()
3) В rowcolchange грида не пускаешь никуда кроме thisform.editrow
...
Рейтинг: 0 / 0
22.03.2005, 11:18
    #32973090
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
Добрый день, Help123.

Думаю следует сделать нечто подобное:
Табличка в которой я буду редактировать записи называется a1.
Свойство Грида ReadOnly=.t.

В методе Click кнопки пишите:
Код: plaintext
1.
2.
ThisForm.mGrid1.Tag=AllTrim(Str(Recno('A1')))
ThisForm.mGrid1.ReadOnly=.f.
ThisForm.mGrid1.SetFocus

В методе Грида AfterColRowChange:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
LPARAMETERS nColIndex
IF !Empty(This.Tag)
   IF recno('A1')<>Val(This.Tag)
      cMess='Вы находитесь в режиме редактирования строки, '
      cMess=cMess+'смещение на другую строчку означает выход из режима редактирования.'+chr( 13 )
      cMess=cMess+'Желаете завершить редактирование записи?'
      IF MessageBox(cMess, 4 + 32 + 0 ,'Внимание!')= 6 
         This.Tag=''
         This.ReadOnly=.t.
      Else
         go Val(This.TAG)
      EndIF
   EndIF
EndIF
...
Рейтинг: 0 / 0
22.03.2005, 13:13
    #32973473
help123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
Ilhom_uz1) В форме новая пропертя editrow
2) После нажатия кнопки "Редактировать" thisform.editrow=recn()
3) В rowcolchange грида не пускаешь никуда кроме thisform.editrow А можно поподробнее с кодом... буду очень признателен...
...
Рейтинг: 0 / 0
22.03.2005, 13:24
    #32973524
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
Help123, так llhom_uz говорит как раз о том коде, который я тебе и прописал, только вместо новой "проперти" editrow я использую, как правило, свободную "пропертю" грида Tag.
...
Рейтинг: 0 / 0
22.03.2005, 13:27
    #32973540
help123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
kms_Help123, так llhom_uz говорит как раз о том коде, который я тебе и прописал, только вместо новой "проперти" editrow я использую, как правило, свободную "пропертю" грида Tag. Ваш код конечно хорош, но мне бы хотелось именно недать переместится пользователю на другую строку, а не предупреждать его об этом....... или я чего-то не понял....
...
Рейтинг: 0 / 0
22.03.2005, 13:49
    #32973619
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
Дело в том, что код не предназначен для того, чтобы просто предупредить пользователя. Его цель следуюшая, если пользователь смещается на другу строку, то это может быть сделано по двум причинам:
1. случайно
2. он закончил процесс редактирования текущей записи

Поэтому я и использую MessageBox для того, чтобы уточнить хочет ли пользователь продолжить редактирование, и тогда я оставляю его на этойже записи:
Код: plaintext
go Val(This.TAG)

или пользователь завершил редактирование, тогда надо разрешить переход на другую запись, с одновременной блокировкой грида от дальнейших изменений до следующего нажития кнопки "Редактировать":
Код: plaintext
This.ReadOnly=.t.
...
Рейтинг: 0 / 0
23.03.2005, 03:31
    #32975032
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
Hi help123!

Глупый ты интерфейс задумал однако. Я бы такую прогу пользовать не стал...
Но если уж так надо - то по нужному тебе признаку (режим редактирования) и анализируя Grid.RowColChange (куда хотят уйти - на другую строку, или лишь на другую колонку) выполняй блокировку перехода между ячейками через NODEFAULT в обработчике Grid.BeforeRowColChange()

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
23.03.2005, 12:44
    #32975922
help123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
Igor Korolyov
выполняй блокировку перехода между ячейками через NODEFAULT в обработчике Grid.BeforeRowColChange() а можно по подробнее с примером кода. Я такого никогда не делал...
...
Рейтинг: 0 / 0
23.03.2005, 13:41
    #32976101
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
Hi, Help123, только не подумайте, что я вам навязываю свой код, меня просто обуревает спортивный интерес. Неужели мой код не работает - я его опробовал и все ОК! Или все-таки что-то не так?
...
Рейтинг: 0 / 0
23.03.2005, 14:51
    #32976356
help123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
kms_Hi, Help123, только не подумайте, что я вам навязываю свой код, меня просто обуревает спортивный интерес. Неужели мой код не работает - я его опробовал и все ОК! Или все-таки что-то не так? Да нет все прекрасно работает... это я такой правильный...
Просто у Вас код работает тогда - когда пользователь уже перешел на другую строку... а я вообще хочу не дать ему такого права...
...
Рейтинг: 0 / 0
23.03.2005, 15:11
    #32976456
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
Ясненько...
...
Рейтинг: 0 / 0
23.03.2005, 16:43
    #32976878
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
Пробовал я решить проблемку, вставив код в метод BeforeRowColChange, но там есть проблемка, у меня так и не получилось определить из этого метода намерения пользователя, то есть не могу получить номер строки куда пользователь собирается перейти, а это было бы решением проблемы.
Попробую открыть новый топик может кто и подскажет!
...
Рейтинг: 0 / 0
23.03.2005, 16:47
    #32976898
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
kms_Пробовал я решить проблемку, вставив код в метод BeforeRowColChange, но там есть проблемка, у меня так и не получилось определить из этого метода намерения пользователя, то есть не могу получить номер строки куда пользователь собирается перейти, а это было бы решением проблемы.
Попробую открыть новый топик может кто и подскажет!
А зачем знать на какую строку он собирается перейти? Достаточно факта что он просто хочет кудато перейти, а для этого должно хватить nColIndex из BeforeRowColChange и Grid.RowColChange.
...
Рейтинг: 0 / 0
23.03.2005, 16:53
    #32976928
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
AleksMedдолжно хватить nColIndex из BeforeRowColChange и Grid.RowColChange.

Я не знаю, но у меня нет RowColChange в гриде, а nColIndex выдает номер столбца, причем текущего, что в данной задаче ничего не дает.
Или я чего-то не знаю? И еще у меня VFP 5.0 может RowColChange появился в более поздних версиях?
...
Рейтинг: 0 / 0
23.03.2005, 16:56
    #32976940
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
kms_И еще у меня VFP 5.0 может RowColChange появился в более поздних версиях?
Вот про это не скажу. 6-ку снес давно, работаю на 7-ке.
...
Рейтинг: 0 / 0
23.03.2005, 16:59
    #32976951
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
Ясненько, тогда интересно, что у Help123 стоит, если тоже старушка пятерка, то я еще попробую помочь, а если версии поновее, то тут уж извиняйте...
...
Рейтинг: 0 / 0
23.03.2005, 17:10
    #32976981
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
Ну все, надыбал VFP 8.0 и, действительно, там есть свойство RowColChange, вот бы мне его в пятерке!
Короче метод Click кнопки "редактировать" остается как был, а метод AfterColRowChange с легкими изменениями перемещаем в метод грида BeforeColRowChange

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
IF !Empty(This.Tag)
   IF This.RowColChange<> 2 
      cMess='Вы находитесь в режиме редактирования строки, '
      cMess=cMess+'смещение на другую строчку означает выход из режима редактирования.'+chr( 13 )
      cMess=cMess+'Желаете завершить редактирование записи?'
      IF MessageBox(cMess, 4 + 32 + 0 ,'Внимание!')= 6 
         This.Tag=''
         This.ReadOnly=.t.
      ELSE
         NOdefault
      EndIF
   EndIF
EndIF

Help123, теперь-то вам правильному должно подойти
проверял - работает
...
Рейтинг: 0 / 0
23.03.2005, 17:14
    #32976991
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
Ну так у тебя же теперь есть 8-ка
...
Рейтинг: 0 / 0
23.03.2005, 17:30
    #32977024
help123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
kms_Help123, теперь-то вам правильному должно подойти
проверял - работает Спасибо большое... обязательно попробую как только доберусь до Фокса...
...
Рейтинг: 0 / 0
23.03.2005, 17:37
    #32977035
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
AleksMedНу так у тебя же теперь есть 8-ка

Ну да, теперь есть, только вот что-то боязно как-то переходить на нее! Инерция мышления'с понимаете ли!!! Она то у меня уже давно валялась на компакте, но так и не дошли руки. Зато теперь наверное точно перейду!
...
Рейтинг: 0 / 0
23.03.2005, 17:38
    #32977036
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
Так мож сразу на 9-ку?
...
Рейтинг: 0 / 0
23.03.2005, 17:57
    #32977083
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
Дык 8-ка есть, а девятку еще и достать-то надо! Да и насколько я понял пока доступна только бетта-версия, а я чтой-то не очень отношусь к этой приставке "бетта"
...
Рейтинг: 0 / 0
24.03.2005, 02:46
    #32977426
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
Hi kms_!

Вот с NODEFAULT вариант мне нравится - это идеологически выдержано :) не "кидаем обратно", а не даём перейти. Хотя САМА ИДЕЯ мне по прежнему не нравится - не дело это программы указывать мне куда ходить, а куда - нет. Нечего тогда грид показывать/править в нём - если уж такой "позаписный" подход реально нужен.
А насчёт 9-ки ты не прав - уже давно вышел релиз. Другой вопрос что там как всегда обнаружилось пару неисправленных багов - ну да шанс на них нарваться не так уж и велик :) Тем более что они среди "новшеств" живут.
Версия релиза имеет номер 09.00.0000.2412 смотри чтоб не накололи пираты :)

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
24.03.2005, 09:21
    #32977608
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid - не дать пользователю перейти на другую строку ...
Igor KorolyovХотя САМА ИДЕЯ мне по прежнему не нравится - не дело это программы указывать мне куда ходить, а куда - нет.

Я с вами совершенно согласен, но вот, что писал help123 в самом начале:
help123знаю что редактирование непосредственно в гриде - не очень правильная идея...

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


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