AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.03.2003, 09:17   #1  
Nik is offline
Nik
Участник
 
23 / 10 (1) +
Регистрация: 27.03.2003
? Форматирование связанного текстового поля в форме
Attain 3.60.

Господа!
Подскажите, как задать не стандартное форматирование связанного текстового поля в форме, например, телефон: 8-(3832)-22-33-44 или страховой номер 000-000-000 00. В Help о свойстве Format для этого типа поля невнятно написано. Или это можно сделать в триггере OnFormat, то как?
Заранее благодарен.
Старый 28.03.2003, 11:06   #2  
Grizzly is offline
Grizzly
Участник
 
85 / 10 (1) +
Регистрация: 30.01.2003
Адрес: Омск
По-моему, установить такие сложные форматы через свойство format не получится. Потому что в твоем случае нужно разбивать текстовую строку на части (поля) и оперировать уже ими. А для типа Text это сделать невозможно. Если я неправ пусть меня поправят.

Сделать же форматирование через триггер OnFormat не сложно. Например, для твоего телефонного номера это будет так.

Объявить переменную целочисленную переменную i. В теле триггера ввести:

Text:= <Значение поля>;

// Удалить установленные раннее символы форматирования
i:= STRLEN(Text);
WHILE i > 0 DO BEGIN
IF NOT (Text[i] IN ['0','1','2','3','4','5','6','7','8','9']) THEN
Text:= DELSTR(Text, i, 1);
i:= i-1;
END;

// Вставка символов форматирования
IF STRLEN(Text) > 1 THEN
Text:= INSSTR(Text, '-(', 2);
IF STRLEN(Text) >= 7 THEN
Text:= INSSTR(Text, ')-', 8);
IF STRLEN(Text) >= 11 THEN
Text:= INSSTR(Text, '-', 12);
IF STRLEN(Text) >= 14 THEN
Text:= INSSTR(Text, '-', 15);

// Удалить ненужны символы в конце строки
IF STRLEN(Text) > 17 THEN
Text:= COPYSTR(Text, 1, 17);
Старый 28.03.2003, 12:10   #3  
Nik is offline
Nik
Участник
 
23 / 10 (1) +
Регистрация: 27.03.2003
Большое спасибо Gryzzli за помощь. Выводит данные правильно по заданной маске, а вот при редактировании получается билеберда. Изменение любого символа приводит к сохранению в таблице и символов форматирования. Получается что после редактирования данных нужно в триггере (видимо OnBeforeInput) выкусить все символы форматирования и только потом сохранить. Неужели нет более простых средств?
Заранее благодарен.
Старый 28.03.2003, 12:24   #4  
Grizzly is offline
Grizzly
Участник
 
85 / 10 (1) +
Регистрация: 30.01.2003
Адрес: Омск
> Большое спасибо Gryzzli за помощь. Только, как далее использовать
> эту переменную?

Переменная Text передается в триггер OnFormat по ссылке. С ней ничего делать не надо. Система сама отобразит ее в текстовом поле.

> Мне нужна маска на текстовую зону.

Т.е. ты хочешь не отформатировать значение, а контроллировать его ввод?

> Как эту сформированную переменную Text
> использовать для этой цели? И как будут редактироватся данные?
Старый 28.03.2003, 12:33   #5  
Nik is offline
Nik
Участник
 
23 / 10 (1) +
Регистрация: 27.03.2003
Да поле используется как для чтения, так и для ввода информации
Старый 28.03.2003, 13:07   #6  
Grizzly is offline
Grizzly
Участник
 
85 / 10 (1) +
Регистрация: 30.01.2003
Адрес: Омск
Попробуй так.

В OnAfterInput(VAR Text : Text[1024] перенеси

i:= STRLEN(Text);
WHILE i > 0 DO BEGIN
IF NOT (Text[i] IN ['0','1','2','3','4','5','6','7','8','9']) THEN
Text:= DELSTR(Text, i, 1);
i:= i-1;
END;


В OnFormat(VAR Text : Text[1024] оставь

IF STRLEN(Text) > 1 THEN
Text:= INSSTR(Text, '-(', 2);
IF STRLEN(Text) >= 7 THEN
Text:= INSSTR(Text, ')-', 8);
IF STRLEN(Text) >= 11 THEN
Text:= INSSTR(Text, '-', 12);
IF STRLEN(Text) >= 14 THEN
Text:= INSSTR(Text, '-', 15);
Старый 28.03.2003, 13:31   #7  
Nik is offline
Nik
Участник
 
23 / 10 (1) +
Регистрация: 27.03.2003
Спасибо Grizzli, все работает.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
триггер OnLookup поля формы Alex_V NAV: Программирование 4 14.07.2004 15:12
Как автоматически вставить значения в поля arseniy NAV: Программирование 5 07.04.2004 14:30
Поля таблицы, видимые на форме Yuriy NAV: Программирование 6 01.09.2003 16:50
Проверка содержания полей на форме Real NAV: Программирование 1 14.08.2003 05:06
Attain. Как сделать вычисляемые поля на форме? Evgeniy NAV: Программирование 3 04.04.2003 07:24
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 05:17.