On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
администратор




Пост N: 3301
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.07.13 16:24. Заголовок: снова Memoedit


Казалось бы простая задача , но....
1. Нужен счетчик набранных символов
2. При достижении кол-ва набранных символов блочить дальнейший ввод.

Есть у кого то наработки ?
Спасибо !

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 10 [только новые]


Администратор




Пост N: 2928
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.07.13 16:42. Заголовок: Вместо memoedit можн..


Вместо memoedit можно напрямую использовать класс HBEditor. MemoEdit - это рудимент из summer'87, по недоразумению унаследованный clipper 5. Вместо dbedit тогда дали нормальный класс tbrowse, а с заменой memoedit поленились. Но это дела давно минувших дней, а что касаемо наших баранов, то надо делать примерно так:

oEd := HBEditor():New( cText, nTop, nLeft, nBottom, nRight, .f., nLen, nTab )
oEd:RefreshWindow()
while ! oEd:ExitState()
nKey := Inkey(0, 255)
if bUser # nil
nKey := Eval(bUser, nKey, oEd)
endif
// здесь можно проверить nKey - сделать счетчик и блокировать дальнейший ввод
oEd:Edit( nKey )
enddo


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3302
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.07.13 16:51. Заголовок: Pasha Спасибо попро..


Pasha
Спасибо попробую !

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3303
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.07.13 17:54. Заголовок: Pasha пишет: if bUs..


Pasha пишет:

 цитата:
if bUser # nil


Пример блока кода bUser можешь привести а то мозК размяк от жары....
Сенкс.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2929
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.07.13 18:29. Заголовок: Я его использую к пр..


Я его использую к примеру для записи текста в файл.
В xharbour можно сделать поиск в тексте (в Harbour - нет)
Можно в word текст скинуть. Не знаю что там еще может понадобится

А пример - просто проверка клавиши и какое-то действие

if nKey == K_...
...

Можно кстати bUser для того же счетчика использовать

Спасибо: 1 
ПрофильЦитата Ответить
администратор




Пост N: 3304
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.07.13 18:37. Заголовок: А подскажи как ну ск..


А подскажи как ну скажем по нажатию F2 сохранить изменения в cText и выйти , пробовал
не получилось.......

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2930
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.07.13 18:45. Заголовок: можно примерно так: ..


можно примерно так:

if nKey == K_F2
nKey := K_ALT_W
lWrite := .t. // установить какую-то переменную
endif

после выхода ее проверить:

if lWrite
запись в файл

Спасибо: 1 
ПрофильЦитата Ответить
администратор




Пост N: 3305
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.07.13 21:30. Заголовок: Для подсчета символо..


Для подсчета символов заюзал метод GetText() , вроде верно пашет.
Его же и для записи если нужно oed:GetText() , хотя по началу пытался поймать cText

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3306
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.07.13 08:54. Заголовок: Вот что получилось ...


Вот что получилось .
Ограничиваем ввод текста длиной не более 20
 
#include "inkey.ch"
proc main
local oed
local ctext:=""
local nkey
local lsave:=.f.
setcolor("n/n")
cls
setcolor("n/w")

oEd := HBEditor():New( cText, 10, 10, 20, 30, .t., 19,)
oed:InsertState(.t.)
oEd:RefreshWindow()
while ! oEd:ExitState()

nKey := Inkey(0)
hb_DispOutAt(0,0,len(oed:GetText()),"n/w")

if nkey==K_F2
nKey := K_ALT_W
lsave:=.t.
endif

if (nkey>=32 .and. nkey<=255 .or. nkey==13 .or. nkey==9 ) .and. len(oed:GetText())>=20
loop
endif

oEd:Edit( nKey )
hb_DispOutAt(0,0,len(oed:GetText()),"n/w")
enddo
cls
setcolor("n/w")

if lsave .and. !empty(alltrim(memotran(oed:GetText()," "," ")))
@ 0,0 say oed:GetText() color "gr+/r"
inkey(0)
endif
return


Вроде все правильно.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4568
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.03.15 14:31. Заголовок: Косяки в последнем M..


Косяки в последнем Memoedit и HBEditor.
При наборе текста и достижении правой границы курсор не переходит
на следующую строку и наборка продолжается с начала текущей строки.
Получается полная каша......
Вернулся на последнюю версию с SVN ($Id: teditor.prg 18903 2013-03-07 11:39:47Z vszakats $)

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4604
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 19.03.15 10:24. Заголовок: Dima пишет: Косяки..


Dima пишет:

 цитата:

Косяки в последнем Memoedit и HBEditor.



Починили

 
2015-03-18 13:25 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/teditor.prg
! resize missing text on line wrapping (issue #92)



Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 555
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет