Автор | Сообщение |
|
| |
Пост N: 1218
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.05.09 10:51. Заголовок: Memoedit
Как ограничить кол-во символов вводимых в memoedit , в примере это не более 50 ? cmem:=space(50) cmem:=memoedit(cmem,11,21,18,59,.t.,"my_func",38)
|
|
|
Ответов - 18
[только новые]
|
|
|
| постоянный участник
|
Пост N: 346
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.05.09 11:22. Заголовок: Насколько я знаю, НИ..
Насколько я знаю, НИКАК! Можно вудымывать всякие приемы с пользовательской функцией, которая передается в качестве параметра MEMOEDIT(), но тем не менее всегда найдется способ, который позволит пользователю преодолеть ограничение. Я помню как-то делал BACKSPACE, когда позиция выходила за ограничение. Тем не менее если очень быстро набирать текст, то почему-то BACKSPACE не срабатывал. То есть в буфер клавиатуры печатаемые символы попадали быстрее, чем я заносил BACKSPACE. Поэтому пришлось писать свою функцию на ассемблере, которая работает как MEMOEDIT, но с ограниченным числом символов. Я ее назвал MEMOGET. Правда сейчас в связи с поломкой диска я свои нароботки утратил..
|
|
|
|
| |
Пост N: 1219
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.05.09 12:11. Заголовок: Григорьев Владимир п..
Григорьев Владимир пишет: Плёхо.... Может есть какой то аналог в котором можно это сделать ?
|
|
|
|
| |
Пост N: 1221
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.05.09 16:33. Заголовок: Поставим вопрос инач..
Поставим вопрос иначе Как находясь в Memoedit выяснить сколько символов введено ?
|
|
|
|
| постоянный участник
|
Пост N: 347
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.05.09 17:28. Заголовок: Опять-таки, НИКАК! В..
Опять-таки, НИКАК! Вы можете только определить номер строки и номер колонки. А символы могут удаляться и снова набираться. То есть если человек нажал 10 раз букву "А", это не означает, что в поле присутствует 10 символов. Проблемы с MEMOEDIT() в том, что очень много комбинаций служебных клваиш существует. Например, можно удалить целиком строку, или вставитиь новую строку.
|
|
|
|
| |
Пост N: 1222
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.05.09 17:47. Заголовок: Григорьев Владимир ..
Григорьев Владимир Хорошо , как тогда контролировать следующую ситуацию ? В программе сделан миничат между пользователями программы (сетевой) Длина поля для сообщения составляет 250 символов , НО , набирая сообщение в memoedit , пользователь может набрать более 250 символов. То есть на экране он видит все что хотел набрать , но реально дойдет только 250 символов.
|
|
|
|
| постоянный участник
|
Пост N: 660
Зарегистрирован: 09.10.06
|
|
Отправлено: 20.05.09 19:56. Заголовок: Dima пишет: Длина п..
Dima пишет: цитата: | Длина поля для сообщения составляет 250 символов , НО , набирая сообщение в memoedit , пользователь может набрать более 250 символов. То есть на экране он видит все что хотел набрать , но реально дойдет только 250 символов. |
| Делать так, как делают некоторые мобильные телефоны - автоматически разбивают длинную SMS на несколько коротких и передают.
|
|
|
|
| |
Пост N: 1223
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.05.09 10:54. Заголовок: Петр Отличная идея ..
Петр Отличная идея , спасибо !!!
|
|
|
|
| |
Пост N: 8
Зарегистрирован: 24.03.09
|
|
Отправлено: 06.06.09 11:13. Заголовок: Попробовал модифицир..
Попробовал модифицировать штатный Memoedit для CLIPPER 5.3b следующим образом: добавил 14-й параметр, который участвует в вычислении наибольшей длины возвращаемой строки следующим образом: а) если он не указан или 0 - тогда стандартное поведение MemoEdit-a. б) если он указан и больше длины исходной строки (1-й параметр), то в качестве макс. значение берется значение этого параметра, иначе - длина исходной строки. Изменения старался делать так, чтобы в наименьшей степени затронуть оригинальный текст этой функции. Результаты обнадеживающие, но пока очень сырая версия, поэтому больше для ознакомления. Пробовал c Blinker, а c Exospace еще не проверял. Для применения следует прилинковать memoedit.obj - и тогда вместо штатного MemoEdit-а будет модифицированный. Прилагается оригинальный текст программы (memoedit0.asm) и модифицированный мною (memoedit.asm) - для желающих поэкспериментировать. http://slil.ru/27732091
|
|
|
|
| |
Пост N: 9
Зарегистрирован: 24.03.09
|
|
Отправлено: 06.06.09 15:50. Заголовок: Заметил один дефект ..
Заметил один дефект - возле индикатора <Insert> появлялись лишние символы. Исправиленный вариант http://slil.ru/27732682
|
|
|
|
| |
Пост N: 1237
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.06.09 16:09. Заголовок: ALGO пишет: Попробо..
ALGO пишет: цитата: | Попробовал модифицировать штатный Memoedit для CLIPPER 5.3b |
| Проверить не могу так как использую Clipper 5.2e
|
|
|
|
| |
Пост N: 10
Зарегистрирован: 24.03.09
|
|
Отправлено: 06.06.09 16:51. Заголовок: Попробую еще для 5.2..
Попробую еще для 5.2е - не думаю, что сложнее будет.
|
|
|
|
|
| |
Пост N: 1238
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.06.09 18:34. Заголовок: ALGO пишет: добавил..
ALGO пишет: цитата: | добавил 14-й параметр, который участвует в вычислении наибольшей длины возвращаемой строки следующим образом: |
| ALGO пишет: цитата: | Попробую еще для 5.2е - не думаю, что сложнее будет. |
| Минутку , если мы говорим о возвращаемом значении , тогда это не интерестно. Нужно было ограничить дальнейший ввод в Memoedit если длина вводимой строки превышает длину начальную.
|
|
|
|
| |
Пост N: 11
Зарегистрирован: 24.03.09
|
|
Отправлено: 06.06.09 20:48. Заголовок: Функция честно возвр..
Функция честно возвращает ровно то, что введено - никаких дополнительных действий с возвращаемым значением не делается. Ограничение возвращаемого значения достигается за счет блокирования дальнейшего ввода и разблокированием при удалении символов, т.е. уменьшении количества символов. Я правильно понял задачу?
|
|
|
|
| |
Пост N: 1239
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.06.09 21:12. Заголовок: ALGO Да правильно. ..
ALGO Да правильно. Собственно пожелание изложено в первой месаге. Если я правильно понял ответы Григорьев Владимир то сделать это сложно в том виде в котором существует Memoedit , но попробовать я готов (в смысле потестить) , хотя с другой стороны все реализовал с подсказки Петра , и всех все устроило. Спасибо , думаю нет смысла заморачиваться с переделкой !!!
|
|
|
|
| |
Пост N: 20
Зарегистрирован: 09.07.08
|
|
Отправлено: 20.08.09 10:34. Заголовок: а у меня своя memoed..
а у меня своя memoedit, через объект, делаю в ней, что хочу... Лениться меньше надо, а не твердить "НИКАК,НИКАК,..."
|
|
|
|
| постоянный участник
|
Пост N: 899
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.08.09 13:07. Заголовок: PRG_MAN пишет: Лени..
PRG_MAN пишет: цитата: | Лениться меньше надо, а не твердить "НИКАК,НИКАК,..." |
| Если такой умный... то почему живешь не на Канарах или Багамах ?
|
|
|
|
| |
Пост N: 21
Зарегистрирован: 09.07.08
|
|
Отправлено: 01.09.09 14:26. Заголовок: Ты из ГРУ ?..
Ты из ГРУ ?
|
|
|
|
| постоянный участник
|
Пост N: 352
Зарегистрирован: 17.05.05
|
|
Отправлено: 02.09.09 12:08. Заголовок: PRG_MAN пишет: а у ..
PRG_MAN пишет: цитата: | а у меня своя memoedit, через объект, делаю в ней, что хочу... Лениться меньше надо, а не твердить "НИКАК,НИКАК,..." |
| Так поделитесь идеями, что именно делает ваша MEMOEDIT(), и как она оформлена в объект. То есть какие именно методы объекта вы реализовали для MEMOEDIT()?
|
|
|
|