Форматирование и вставка в текстбокс
fury21
Дата: 05.11.2009 00:01:11
Привет!
нужно перед тем, как вставить в текстовое поле из буфера текст, его отформатировать. Как это можно сделать?
Например в буфере весит номер 495-123-45-67
а на поле стоит маска (000) 000-0000 и не всегда текст вставляет в поле или вставляется не полностью, а если кидать просто набор цифр, например 4951234567 то он сам распределяет правильно в поле по соответствию маске.
Владимир Саныч
Дата: 05.11.2009 00:17:49
То есть Вы хотите выкинуть минусы? Ну так выкиньте.
fury21
Дата: 05.11.2009 00:32:37
А как потом отформатированный текст уложить в текстбокс?
Через буфер?
например все проблемы и тире можно убрать через Replace(Abc, "-", "") а дальше?
nrg_fly
Дата: 06.11.2009 10:11:00
fury21 |
А как потом отформатированный текст уложить в текстбокс?
Через буфер?
например все проблемы и тире можно убрать через Replace(Abc, "-", "") а дальше? |
можно скопировать одно поле все содержимое буфера, затем при обработке свойста "после обновления" убрать из содержимого этого поля все ненужные символы, оставить только цифры, а затем поместить этот результат в другое поле с маской.
Владимир Саныч
Дата: 07.11.2009 00:44:48
fury21 |
А как потом отформатированный текст уложить в текстбокс?
Через буфер?
например все проблемы и тире можно убрать через Replace(Abc, "-", "") а дальше? |
Мне лень лезть в хелп, но у этой маски есть параметр (где-то в конце через
;), который позволяет не считать символы маски частью значения поля. И тогда можно просто заносить значение в поле без символов маски, а форматирование произойдет само.
fury21
Дата: 09.11.2009 19:58:02
Реализовал таким вот образом:
Private Sub контактный_AfterUpdate()
If контактный.Value <> "" Then
a = Replace(контактный.Value, "-", "")
a = Replace(a, " ", "")
a = Replace(a, "(", "")
a = Replace(a, ")", "")
If Left(a, 1) = "8" Then a = Mid(a, 2)
контактный.Value = ""
контактный.InputMask = "\(999\) 999\-9999;0;;;"
контактный.Value = a
If Len(a) <> "10" Then MsgBox "Вы не правильно ввели номер телефона", vbCritical, "Ошибка": контактный.Value = "": контактный.SetFocus: контактный.InputMask = "###############": End
Else
контактный.InputMask = "###############"
End If
End Sub
но почему то маска не срабатывает.... В таблицу попадает не (495) 123-4567 а вот так: 4951234567 ........
Анатолий ( Киев )
Дата: 09.11.2009 22:18:21
автор |
контактный.InputMask = "\(999\) 999\-9999;0;;;" |
Далеко не всегда то, что вы видите в св-вах объекта так же выглядит, если его прочитать или присвоить в VBA.
Здесь, как минимум, "," вместо ";". Выплюньте в MsgBox значение правильно настроенного св-ва InputMask (а особенно - Format для числового поля в виде # ##0,00 и т.п.), и вы будете приятно удивлены.
fury21
Дата: 11.11.2009 00:01:21
Замена на "," не помогла ((((
Какие еще есть предположения?
fury21
Дата: 12.11.2009 12:39:06
Проблема очень актуальна!!! Почему не срабатывает маска???
fury21
Дата: 12.11.2009 12:50:37
Вопрос сам решил окончательно заменой вот на эту строку
контактный.Value = Format(a, "\(###\) ###\-####;0;;;")