Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Проблема с формированием маски для элемента на форме типа EditMask / 22 сообщений из 22, страница 1 из 1
08.11.2005, 12:52
    #33366285
Дремучий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
Версия PB - 7.0.3.

Необходимо, что бы пользователь мог вводить в поле EditMask ( не в DW!!! ) что-то типа 34,52 или 29,92, т.е. ДВЕ цифры до запятой и две после. При этом вполне допустимым является ввод чего-нибудь типа 0,47. Собственно проблема с формированием маски под все это.

Если поставить "##.##", то пользователь страшно обижается, что ему никак не удается ввести 0 перед запятой, т.е. получить что-то типа 0,57 (идею объяснить пользователю, что в таком случае 0 можно не указывать прошу не высказывать).
Если поставить что-нибудь типа "##,##0.00", то пользователь еще ничего не говорит, т.к. он такой вариант еще не видел, но то что будут крики "А почему это все реагирует по разному на ввод первой цифры!!!" и так прогнозируются. А как побороть "странное" поведение ЕМ в этом случая я не знаю. :(
Можно, конечно попробовать вариант "##,##00.00"... но он мне не нравится.. хотя бы потому, что это "не красиво", да и вообще... а если возникнет необходимость вводить ТРИ цифры перед запятой?

Как это можно реализовать я уже не знаю... буду признателен за просвещение моей дремучести...
...
Рейтинг: 0 / 0
08.11.2005, 14:15
    #33366621
zuzu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
поставь тогда обычный Едит и сам проверяй на правельность ввода.
...
Рейтинг: 0 / 0
08.11.2005, 14:48
    #33366727
Дремучий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
zuzuпоставь тогда обычный Едит и сам проверяй на правельность ввода.
1. Эта проблема в PB вообще что ли не решается???
2. Какой обычный Едит? Маску снять? "Шурик, это же не наш метод!" (с)
...
Рейтинг: 0 / 0
08.11.2005, 15:16
    #33366844
PaulJB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
А что, свойство Mask динамически изменять нельзя ?
...
Рейтинг: 0 / 0
08.11.2005, 15:51
    #33366944
Дремучий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
PaulJBА что, свойство Mask динамически изменять нельзя ?
... можно... все можно... но... вот как Вы себе это представляете? Т.е. в какой момент менять маску и с какой на какую? ;)
...
Рейтинг: 0 / 0
08.11.2005, 15:57
    #33366955
urvas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
Используйте маску:

#0.#0
...
Рейтинг: 0 / 0
08.11.2005, 16:22
    #33367047
Дремучий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
urvasИспользуйте маску:

#0.#0
Этот вариант ничем не лучше другого случая, который я упоминал - "##,##0.00". Тут присутствует та же проблема - разная реакция на одинаковую визуальную ситуацию. Выражается это в том, что когда у нас есть "0,00" и курсор стоит перед первым символом, то в случае нажатия цифры отличной от 0 (например, 3) мы можем получить как 3,00, так и 30,00. Результат зависит от наших предыдущих действий. У меня это проявлялось очень четко (в смысле - это не случайный одноразовый глюк, а я могу его симитировать), хотя не всегда я мог симмитировать ситуацию с первого раза. Насколько я понимаю, проблема в том, что по разному оценивается положение курсора. Т.е. ВИЗУАЛЬНО он в обоих случаях в самом начале, а вот "физически" он, или между "#" и "0", или действительно в самом начале (это мое предположение, но даже если оно ложное, то мне не легче, т.к. проблема проявляется на практике).
...
Рейтинг: 0 / 0
08.11.2005, 18:41
    #33367518
PaulJB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
Ну я бы поступил так:
1. сделал бы настройку маски как например ячеек в Excel-e.
Пусть настраивают как хотят.
2. при получении фокуса - автоматическое выделение содержимого
(в событии GetFocus вставил SelectText(1,999) ).

Если я правильно понял проблему.
...
Рейтинг: 0 / 0
08.11.2005, 18:46
    #33367524
urvas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
Опередил предыдущий!!!
В событии getfocus

This.SelectText(1,0)


А ввод заканчивать нажатием на клавишу разделителя целой и дробной части - ВСЕГДА!
...
Рейтинг: 0 / 0
09.11.2005, 13:08
    #33368738
Дремучий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
PaulJBНу я бы поступил так:
1. сделал бы настройку маски как например ячеек в Excel-e.
Пусть настраивают как хотят.
2. при получении фокуса - автоматическое выделение содержимого
(в событии GetFocus вставил SelectText(1,999) ).

Если я правильно понял проблему.
хм... или я неправильно понял... или я неправильно объяснил проблему...

1. хм... это КАК? Т.е. реализовать механизм, когда пользователь в процессе выполнения приложения может менять маску на поле? Круто! :) Реализуемо, конечно... но:
1.1. Это подразумевает некоторые телодвижения в рамках всего проекта, т.к. в проекте все должно быть единообразно.
1.2. Меня заклюют (например, словами "Пользователь туп!") сразу после того, как я рискну повторить эту мысль. :)
1.3.Это подразумевает, что пользователь должен помнить/знать некоторый формат маски, согласно которому я потом буду извращаться. :)
2. А причем здесь получение фокуса? Проблема с разной реакцей на одинаковое визуальное состояние возникает не только в момент попадания в поле. Она может возникнуть по ходу нахождения в поле, т.е. - вводим что-нибудь, потом делитом или BackSpase`ом что-нибудь стираем и/или ходим стрелкой. Результат - вопли пользователя!

А вообще... самое "лучшее" решение которое мне пришло в голову (если уж извращаться по крупному) это перейти на sle и повеситься на pbm_char. А там уж отслеживать все что душе угодно... но это уже какое-то редкостное извращение (имхо, конечно).

urvasОпередил предыдущий!!!
В событии getfocus

This.SelectText(1,0)


А ввод заканчивать нажатием на клавишу разделителя целой и дробной части - ВСЕГДА!
Хм... и чем это лечит? В случае маски типа "#0.#0" (или похожей) разной реакции на одинаковую ситуация я могу добиться уже после того, как "погуляю" по полю...

Ну а завершение потем нажатия "на клавишу разделителя целой и дробной части" означает, что я повесился на pbm_char... а раз так, то нафига ставить садисткие эксперименты над юзверем? Лучше уж тогда реализовать работу маски "ручками"... вот только тогда взникает недоуменный вопрос на тему editMask и его возможности.

Хм... насколько я понял нормального варианта решения такой ситуации (простого установления некой маски хитрого формата и дальше EM сам отследить все правильно) просто нет... однако... :(
...
Рейтинг: 0 / 0
09.11.2005, 13:33
    #33368812
urvas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
Сделайте ДВА поля для целой и дробной части...
...
Рейтинг: 0 / 0
09.11.2005, 13:44
    #33368852
leona
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
а не пробывали маску 0#.##
...
Рейтинг: 0 / 0
09.11.2005, 14:05
    #33368927
Дремучий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
Сам я закрыв глаза поставил "00.00"... было стыдно... но я вспомнил то как отображается формат даты и задавив совесть быстро закрыл форму :). Но если будет нормальное решение, то я исправлю.

urvasСделайте ДВА поля для целой и дробной части...
"Оооо... месье понимает толк в извращениях!" (с) :) Именно так у нас и сделано в другом месте :)

leonaа не пробывали маску 0#.##
Попробовал... удалось повторить эффект разной реакции. Хотя надо признать, что это получилось не сразу и я почти поверил, что это именно то, что спасет человечество.
...
Рейтинг: 0 / 0
09.11.2005, 14:16
    #33368965
Badger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
Ну если EditMask такой дремучий..., почему (не в DW!!! ) в одну строку? Там все проще с форматами.
...
Рейтинг: 0 / 0
09.11.2005, 15:23
    #33369221
Дремучий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
BadgerНу если EditMask такой дремучий..., почему ( не в DW!!! ) в одну строку? Там все проще с форматами.
Дремучий это я :) а EditMask... может я просто "не умею его готовить"?
Да неправильно это... мы используем собственные расширения стандартных объектов. Стиль должен быть везде один (в том числе и в программировании проекта).
...
Рейтинг: 0 / 0
09.11.2005, 17:21
    #33369635
Badger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
ДремучийСтиль должен быть везде один (в том числе и в программировании проекта).
Не могу не согласиться :) Правда постепенно в "проектах" все начинают писать на универсальных объектах типа u_dw от PFC, а к нему наделать базовых dw для которых стиль форматов описан и храниться в базе данных, остальное лесом, в результате единообразие, и ненадо искать черную кошку в черной комнате.....
...
Рейтинг: 0 / 0
10.11.2005, 12:49
    #33370935
savosin_sergey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
поддерживаю Дремучего -- editmask на форме сделан не для людей и не для программистов. Видимо, для программистов есть pbm_char + возможность писать программы.. неужли, в PFC точно такой же editmask? иногда надо его полодить на не DW, а но форму
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
28.11.2007, 16:04
    #34972352
Rebeled
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
Так никто и не нашёл работающего решения?
У меня ни один способ не подошёл...
Есть идея при переходе в элемент dw выделять целую часть... Но может есть что проще? Там же не везде цифры да и как то плохо работает с датами и проч...
...
Рейтинг: 0 / 0
28.11.2007, 17:35
    #34972759
Rebeled
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
Не, ну должно же быть что-то простое...
У меня пока только это:
В событие itemfocuschanged //Event_ID: pbm_dwnitemchangefocus

dec ld_value
CHOOSE CASE dwo.name
CASE 'column_name1'
ld_value = this.object.column_name1[row]
selecttext(1,Len(string(round(ld_value, 0))))
CASE 'column_name2'
ld_value = this.object.column_name2[row]
selecttext(1,Len(string(round(ld_value, 0))))
/*------------------------------*/
END CHOOSE
...
Рейтинг: 0 / 0
29.11.2007, 00:21
    #34973441
rcryo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
Тоже пришел к выводу что с маской для чисел в DW ничего хорошего не добиться и сделал просто Edit с форматом #,##0.00## и с автоселектом
финансовое приложение - юзер`а вводят очень много чисел - все довольны.
...
Рейтинг: 0 / 0
29.11.2007, 18:43
    #34976235
breathem
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
А такую маску #,##0.00 Ваш ПБ понимает? 10ка понимает, так что попоробуйте, вдруг и 7ка тоже.
...
Рейтинг: 0 / 0
30.11.2007, 16:45
    #34978788
Rebeled
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формированием маски для элемента на форме типа EditMask
breathemА такую маску #,##0.00 Ваш ПБ понимает? 10ка понимает, так что попоробуйте, вдруг и 7ка тоже.
PB 9, Масска именно такая - в ней и проблема. С маской #,###.00 вводить числа куда удобнее, но заказчик упорно хочет видеть нолик. За что и страдает.
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Проблема с формированием маски для элемента на форме типа EditMask / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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