powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вопрос по DW
6 сообщений из 6, страница 1 из 1
Вопрос по DW
    #36705566
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!

Есть PowerBuilder 9.3 и вопрос к нему. Имеется DW для ввода информации. Под ДВ лежит запрос, возвращающий одну строку (при обновлении информации) или пустую строку (при вставке информации). Одно из полей необходимо для ввода числа. На поле стоит стиль редактирования EditMask. Маска - ###,###,###,##0.0000. Галка UseFormat не стоит.
Значение по умолчанию (при добавлении) - 0. При добавлении пользователь видит 0.0000.
При переводе фокуса ввода слева от имеющихся цифр и вводе новых - ноль, который был по умолчанию слева от разделителя, остается. А хотелось бы, чтоб затирался. Т.е. сейчас при наборе цифр скажем 123, в поле ввода - 1230.0000.
Как решить эту задачу? Кто может подсказать?
ПС: видел вариант - при попадании фокуса в колонку - выделять все содержимое. Тогда, думалось, ноль уйдет... Однако почему-то SelectText не помог - ничего не выделилось... Возможно потому, что в ДВ имеется несколько колонок, а в параметрах SelectText негде указать, в какой колонке производить выделение...
Была идея - при попадании фокуса удалять ноль самостоятельно, однако как подменять текст в ДВ тоже не разобрался...

Вобщем, буду благодарен за любые идеи!
...
Рейтинг: 0 / 0
Вопрос по DW
    #36705615
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, вопрос решен :)
Почему-то ковырял ItemChanged и что-то еще. А надо было всего-то поковырять EditChanged :)
Вот, на всяк случай сырец для евента EditChanged редактирующего DW:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
if dwo.name = 'nvalue' then
	if not ib_valueChanged then
		String ls_data, ls_delim
		
		if pos(data, ',') >  0  then
			ls_delim = ','
		else
			ls_delim = '.'
		end if
		if pos(data, ls_delim) >  0  then
			ls_data = left(data, len(data) - pos(data, ls_delim) -  1 )
		else
			ls_data = data
		end if
		if right(ls_data,  1 ) = '0' then
			ls_data = left(ls_data, len(ls_data) -  1 )
		end if
		ib_valueChanged = True
		dw_edit.setItem( 1 ,'nvalue',Double(ls_data))
	end if
end if
Можно конечно упростить, но так вроде читается... Если есть грабли на любой взгляд - пишите
...
Рейтинг: 0 / 0
Вопрос по DW
    #36705659
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, была небольшая ошибочка.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
if dwo.name = 'nvalue' then
	if not ib_valueChanged then
		String ls_data, ls_delim
		
		if pos(data, ',') >  0  then
			ls_delim = ','
		else
			ls_delim = '.'
		end if
		if pos(data, ls_delim) >  0  then
			ls_data = left(data, pos(data, ls_delim) -  1 )
		else
			ls_data = data
		end if
		//Критерий того, что число нужно резать. У каждого может быть свой
		if right(ls_data,  1 ) = '0' then
			ls_data = left(ls_data, len(ls_data) -  1 )
			dw_edit.setItem( 1 ,'nvalue',Double(ls_data))
		end if
		ib_valueChanged = True
	end if
end if
...
Рейтинг: 0 / 0
Вопрос по DW
    #36705663
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если есть какое-то другое, более правильное и элегантное решение - буду рад узнать!
...
Рейтинг: 0 / 0
Вопрос по DW
    #36707825
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может просто формат колонке поменять?
...
Рейтинг: 0 / 0
Вопрос по DW
    #36800633
riy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
riy
Гость
Vadim Romanenko,


format="#,##0.0000;-[red]#,##0.0000;#;#"

editmask.useformat=yes editmask.mask="###,###,###,###.0000"
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вопрос по DW
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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