On-line: i3t4j6, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
постоянный участник


Пост N: 640
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 06.01.17 21:19. Заголовок: TextBox


TextBox

Свойство - InputMask
имеется три поля ( тип паспорта, серия , номер)
Необходимо динамически менять маску полей - серия и номер в зависимости от значения поля - тип паспорта.
Попробовал - напрямую не приваевается, через SetProperty(.. ) то же не устанавливается

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


постоянный участник


Пост N: 641
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 09.01.17 08:28. Заголовок: Не понял? То ли все..


Не понял?
То ли все ещё отдыхают, то ли слишком "трудный" вопрос - ни одного ответа.
Вообще-то - обычная ситуация. В консоле(Харбор) - давно всё было сделано и работало.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5287
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.01.17 08:49. Заголовок: Vlad04 пишет: То ли..


Vlad04 пишет:

 цитата:
То ли все ещё отдыхают, то ли слишком "трудный" вопрос - ни одного ответа.


Все отдыхают...
Давай код, а то догадываться как то сложновато после праздников...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 642
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 09.01.17 09:32. Заголовок: *******************..



 цитата:

*********************************
Proc PassMask()
Local sType:=Rtrim(Pacient.BtnTextBox_Doc_Type.Value)
Local m8:={},m9:={},m10:={},nPos:=0,sMask:='' // ,Nm_Get:=gNam[pPer]

// вид док серия номер
AADD(m8,'1') ;AADD(m9,'A-AA') ; AADD(m10,'999999')
AADD(m8,'2') ;AADD(m9,'99') ; AADD(m10,'9999999')
AADD(m8,'3') ;AADD(m9,'XXXXXXXX'); AADD(m10,'XXXXXXXX')
AADD(m8,'4') ;AADD(m9,'AA') ; AADD(m10,'999999')
AADD(m8,'5') ;AADD(m9,'XXXXXXXX'); AADD(m10,'XXXXXXXX')
AADD(m8,'6') ;AADD(m9,'AA') ; AADD(m10,'999999')
AADD(m8,'7') ;AADD(m9,'AA') ; AADD(m10,'9999999')
AADD(m8,'8') ;AADD(m9,'99') ; AADD(m10,'9999999')
AADD(m8,'9') ;AADD(m9,'XXXXXXXX'); AADD(m10,'XXXXXXXX')
AADD(m8,'10');AADD(m9,'XXXXXXXX'); AADD(m10,'XXXXXXXX')
AADD(m8,'11');AADD(m9,'XXXXXXXX'); AADD(m10,'XXXXXXXX')
AADD(m8,'12');AADD(m9,'XXXXXXXX'); AADD(m10,'XXXXXXXX')
AADD(m8,'13');AADD(m9,'XXXXXXXX'); AADD(m10,'XXXXXXXX')
AADD(m8,'14');AADD(m9,'99 99') ; AADD(m10,'9999999')
AADD(m8,'15');AADD(m9,'99') ; AADD(m10,'9999999')
AADD(m8,'16');AADD(m9,'AA') ; AADD(m10,'9999999')
AADD(m8,'17');AADD(m9,'AA') ; AADD(m10,'9999999')
AADD(m8,'18');AADD(m9,'XXXXXXXX'); AADD(m10,'XXXXXXXX')


nPos:=ASCAN(m8,sType)
//MsgDebug('nPos=',nPos)
sMask :=GetProperty( 'PACIENT', "TEXT_DOC_NUM", 'INPUTMASK')
//MsgDebug('Do sMask=',sMask)


if nPos > 0
// Pacient.Text_DOC_SER.Picture:=m9[nPos]
// Pacient.Text_DOC_NUM.Picture:=m10[nPos]

SetProperty( 'PACIENT', "TEXT_DOC_SER", 'INPUTMASK' ,m9[nPos]) // маска
SetProperty( 'PACIENT', "TEXT_DOC_NUM", 'INPUTMASK' ,m10[nPos]) // маска
////.. Pacient.Text_DOC_SER.INPUTMASK:= m9[nPos]
//// Pacient.Text_DOC_NUM.INPUTMASK:= m10[nPos]
else
// Pacient.GetBox_1.Value:=''
// Pacient.GetBox_2.Value:=''

Pacient.Text_DOC_SER.Value:=''
Pacient.Text_DOC_NUM.Value:=''
endif
//sMask :=GetProperty( 'PACIENT', "TEXT_DOC_NUM", 'INPUTMASK')
//MsgDebug('Posle sMask=',sMask)

Return



Функция PassMask() вызывается при выходе из поля тип документа и по идее должна присвоить
новую маску для полей серия и номер
Но не присваивает.
Пробовал GetBox - там другая засада, но об этом позже

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5288
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.01.17 11:51. Заголовок: Не такой код не пойд..


Не такой код не пойдёт.
Нужен отдельный самодостаточный пример, тогда что-то можно посмотреть.
Т.е. нарисуй форму и то что нужно, и выкладывай здесь...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 643
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 09.01.17 12:34. Заголовок: Сделаю, но дело не в..


Сделаю, но дело не в примере.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1343
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.01.17 13:16. Заголовок: Vlad04 пишет но дело..


Vlad04 пишет
 цитата:
но дело не в примере


i_textbox.ch содержит на DFINE TEXTBOX 3-и варианта
_DefineTextBox(...)
_DefineMaskedTextBox (...)
_DefineCharMaskTextBox (...)
думаю тут @ порылась, скорее всего динамически не работает (сам работаю без textbox-а)
Можно сделать нужное кол-во (с масками) textbox, сделать их hide и нужный открывать

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1398
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 09.01.17 15:54. Заголовок: InputMask (D) Specif..


InputMask (D) Specifies the edit mask for a TextBox control

D: Available at control definition only

Почитайте справку (заодно разницу между InputMask String и Format String м.б. уловите)

кроме того..

Pacient.Text_DOC_SER.INPUTMASK:= m9[nPos] - ну не пошло же
Зачем себя обманывать с
SetProperty( 'PACIENT', "TEXT_DOC_SER", 'INPUTMASK' ,m9[nPos])

SetProperty, к сожалению, не генерирует ошибок времени исполнения.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 644
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 09.01.17 18:12. Заголовок: Грустно. :sm117: У ..


Грустно.
У меня всё это еще на Клиппере работало.


 цитата:
Можно сделать нужное кол-во


Не выход.В данном случае 10 видов каждого поля.

А REdefine не поможет ?
Только не знаю, как правильно написать

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1400
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 09.01.17 18:39. Заголовок: Vlad04 пишет: А REd..


Vlad04 пишет:

 цитата:
А REdefine не поможет ?
Только не знаю, как правильно написать



Без разницы, но поскольку redefine - это команда препроцессора, то правильнее всего написать в upper case: REDEFINE

Это шутка, конечно же.

Посмотрите MiniGUI\SAMPLES\BASIC\ShowPassword\demo.prg - м.б. такая техника вам подойдет (имеется ввиду удаление и создание нового контрола)


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 645
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 09.01.17 19:36. Заголовок: Петр Спасибо! Впол..


Петр

Спасибо!
Вполне, кода немного.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1344
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.01.17 19:58. Заголовок: Vlad04 пишет Вполне,..


Vlad04 пишет
 цитата:
Вполне, кода немного.


Это обманчиво. На 10 видов будет много.
Если следующий textbox будете делать от предыдущего, то что будете делать,
при возврате на вышестоящий и изменении его на другой (сколько то нижних уже есть) ?
Может свести к списку документов (набор texbox мах определенных) и плясать от него.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1401
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 09.01.17 22:53. Заголовок: SergKis пишет: Это ..


SergKis пишет:

 цитата:
Это обманчиво. На 10 видов будет много.



Не больше, чем существует сейчас - если я правильно понял, полей всего 3, переопределять нужно только 2.
Масок м.б. хоть сто, а не только 10, существенно это ни на что не влияет.
Массивы m8-m10 можно сделать статическими (публичными), зачем их каждый раз пересоздавать.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1345
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.01.17 23:34. Заголовок: Петр пишет если я п..


Петр пишет
 цитата:
если я правильно понял, полей всего 3, переопределять нужно только 2.


Если бы, то 2 штуки несложно
SergKis пишет
 цитата:
сделать их hide и нужный открывать


Vlad04 отвечает
 цитата:
Не выход.В данном случае 10 видов каждого поля.


т.е. кроме 2-х показанных в тексте примера, есть еще как мин. 8 плавающих.
По мне "хрен редьки не слаще", что создавать 10 от предыдущих (c учетом прыгалки мышой и исправлении зачения удаления и пересоздание от нового значения), что заранее создать (от документов ~ 10 вариантов).
Или не так понимаю потребности Vlad04

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 646
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 10.01.17 07:33. Заголовок: Сейчас тестирую. Кон..


Сейчас тестирую. Конечно, это костыль любой вариант.
И ещё вопрос.


 цитата:

h_textbox.prg
Public &mVar. := k
...
_HMG_aControlInputMask [k] := ""
...


А нельзя ли как- нибудь обратиться к внутренней переменной, определяющей нужные свойства Контрола?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1346
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.01.17 08:25. Заголовок: Vlad04 пишет А нельз..


Vlad04 пишет
 цитата:
А нельзя ли как- нибудь обратиться к внутренней переменной, определяющей нужные свойства Контрола


If ( i := GetControlIndex(cControlName, cForm) ) > 0
cMask := _HMG_aControlInputMask[ i ]
EndIf
или
If ( i := Form_1.Control_5.Index ) > 0
cMask := _HMG_aControlInputMask[ i ]
EndIf

Vlad04 пишет
 цитата:
Конечно, это костыль любой вариант.


Меня смущает перенос технологии Clipper - одно окно -> 18 вариантов документов (серия, номер) в Gui как есть.
Может стоит сделать список из 18 документов и формировать окна (cForm := 'Dok_1', ..., 'Dok_18').
От массивов или прямыми DEFINE TEXBOX ... (через IDE) создавать окна для работы с док.
Можно работать хоть с несколькими окнами одновременно.



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 647
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 10.01.17 09:48. Заголовок: Пример Вот как-то та..


Пример
Вот как-то так на примере.
Но, есть другие вопросы ( это не связано с переназначением маски)
- как-то непонятно , если надо вводить все символы ХХХ..
Если ставишь АА, то разрешает только буквы
- ограничение длины MaxLength не работает

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 648
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 10.01.17 09:54. Заголовок: SergKis Может стои..


SergKis


 цитата:
Может стоит сделать список из 18 документов и формировать окна


У меня сложная форма, много элементов, а документы- 2 поля с переменной маской, маленькая часть всего.

 цитата:
cMask := _HMG_aControlInputMask[ i ]


Это мы маску прочитали, а присвоить новую
_HMG_aControlInputMask[ i ] :=cMask

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 649
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 10.01.17 11:15. Заголовок: SergKis Все оК! Еще..


SergKis
Все оК! Еще короче и проще.
Может быть , это и неправильно сточки зрения "ВЫСОКИХ МАТЕРИЙ",
но все работает

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

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