Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Два вопросика?!  [new]
Akel
Member

Откуда: Нижний Новгород/Москва
Сообщений: 174
Вопросы наверно элементарные, но я никак не могу разобраться.

1). Как сделать, чтоб в TextBoxе набирались цифры как в калькуляторе Windows.

2). При конвертации числа в строку str(23.45) пропадает точка и все после нее, т.е. получается 23. Возможно я не так конвертирую???
21 май 05, 18:30    [1561910]     Ответить | Цитировать Сообщить модератору
 Re: Два вопросика?!  [new]
Burn
Member

Откуда: Днепропетровск, Украина
Сообщений: 1167
>При конвертации числа в строку str(23.45) пропадает точка и все после нее, т.е. получается 23. Возможно я не так конвертирую???
STR(23.45, 5, 2)

>Как сделать, чтоб в TextBoxе набирались цифры как в калькуляторе Windows
Честноговоря не понял что имено надо, но возможно ThisForm.Text1.Alignment=1
ThisForm.Text1.InputMask='9999999'
21 май 05, 18:58    [1561929]     Ответить | Цитировать Сообщить модератору
 Re: Два вопросика?!  [new]
Akel
Member

Откуда: Нижний Новгород/Москва
Сообщений: 174
Спасибо, второй вопрос снимается=)
А вот по поводу первого, суть вот в чем: при запуске в TextBoxе уже как бы стоят пробелы и я могу куда угодно поставить курсор, а в калькуляторе винды там нет их и число как бы наростает.
21 май 05, 19:19    [1561941]     Ответить | Цитировать Сообщить модератору
 Re: Два вопросика?!  [new]
St_Alex
Member

Откуда:
Сообщений: 19
Пишешь событие KeyPress. В нем обрабатываешь текущее значение TextBox'а и только что введенный символ
21 май 05, 20:08    [1561983]     Ответить | Цитировать Сообщить модератору
 Re: Два вопросика?!  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Akel
при запуске в TextBoxе уже как бы стоят пробелы и я могу куда угодно поставить курсор, а в калькуляторе винды там нет их и число как бы наростает.

Нет. В FoxPro простыми способами этого не сделать. Требуется относительно сложное программирование. В большинстве случаев, в этом нет смысла. Просто вопрос привычки.
21 май 05, 23:07    [1562152]     Ответить | Цитировать Сообщить модератору
 Re: Два вопросика?!  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Akel

Как сделать, чтоб в TextBoxе набирались цифры как в калькуляторе Windows.

Решение не тривиальное, но оно есть и основано на перехвате события KeyPress и его обработки. При этом надо учитывать знаки, десятичные дроби дроби, клавиши Del, BAckSpace, стрелки и пр..
С уважением, Алексей.
21 май 05, 23:11    [1562157]     Ответить | Цитировать Сообщить модератору
 Re: Два вопросика?!  [new]
Akel
Member

Откуда: Нижний Новгород/Москва
Сообщений: 174
ВладимирМ
Нет. В FoxPro простыми способами этого не сделать. Требуется относительно сложное программирование. В большинстве случаев, в этом нет смысла. Просто вопрос привычки.

Обидно... Мне то все равно, я привыкну, а вот что скажут пользователи?!
А я еще не настолько хорошо знаю FOX, чтоб такое написать...
22 май 05, 13:31    [1562440]     Ответить | Цитировать Сообщить модератору
 Re: Два вопросика?!  [new]
leaf
Member [заблокирован]

Откуда: Ростов-на-Дону --> Москва
Сообщений: 2661
Решение не тривиальное, но оно есть и основано на перехвате события KeyPress и его обработки
Я использую InterActiveChange на мой взляд так проще, а KeyPress может в некоторых случаях формой перехватываться
23 май 05, 11:02    [1563340]     Ответить | Цитировать Сообщить модератору
 Re: Два вопросика?!  [new]
Urri
Member

Откуда: Москва
Сообщений: 2693
Akel
ВладимирМ
Нет. В FoxPro простыми способами этого не сделать. Требуется относительно сложное программирование. В большинстве случаев, в этом нет смысла. Просто вопрос привычки.

Обидно... Мне то все равно, я привыкну, а вот что скажут пользователи?!
А я еще не настолько хорошо знаю FOX, чтоб такое написать...
Пользователи привыкнут. И довольно быстро.
Временами и мне хочется, чтобы числовые поля вели себя так, как Вы описали, но это желание никогда не было для меня поводом затевать глобальное кодирование. Тем более, числа получаются в итоге такими, какими они должны быть, ну так и пусть себе вводятся слева направо.
23 май 05, 11:10    [1563380]     Ответить | Цитировать Сообщить модератору
 Re: Два вопросика?!  [new]
IdSyz
Member

Откуда:
Сообщений: 65
Ребята, у меня таая же проблема возникала, но в другой ситуации.
Я просто считал поле ввода текстовым - value=space(50), а потом (после применения замены , на .) делал val().
Тогда набирай любое число с любым кол-вом символов до и после!
23 май 05, 11:50    [1563582]     Ответить | Цитировать Сообщить модератору
 Re: Два вопросика?!  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
IdSyz
Ребята, у меня таая же проблема возникала, но в другой ситуации.
Я просто считал поле ввода текстовым - value=space(50), а потом (после применения замены , на .) делал val().
Тогда набирай любое число с любым кол-вом символов до и после!

Ты в курсе, что предельно допустимое количество символов (включая разделитель целой и дробной части) в любом поле числового типа FoxPro - это 20 символов.

FoxPro работает только и исключительно с 16 значащими цифрами - это значит, что доверять можно только 14 значащим цифрам. 15 и 16 - сомнительны, а остальные заполняются случайгым образом.

Следовательно, из всех введенных тобой 50 символов (space(50)) после конвертации через функцию VAL() останется только 16 значащий цифр, а доверять ты сможешь только первым 14 из них.

Далее, функция VAL() обладает некоторой интелектуальностью. Т.е. переводить символьную строку в число она будет до тех пор, пока не встретиться символ отличный от цифры или символа разделителя целой и дробной части.

Ты анализировал только запятую, но ведь возможен ввод и других символов:

?VAL("123 456.78")
?VAL("456.78.91")

Это значит, что тебе либо придется ввести маску ввода (InputMask = "9999.99"), либо писать относительно сложный анализ нажатых клавишь, либо перед конвертацией по VAL() анализировать введенное значение на предмет выбрасывания лишних символов.

Не надо "мудрить" с форматами ввода, если в этом нет действительной необходимости.
23 май 05, 12:09    [1563693]     Ответить | Цитировать Сообщить модератору
 Re: Два вопросика?!  [new]
IdSyz
Member

Откуда:
Сообщений: 65
Согласен со всем!
Просто у меня задача стояла простенькая - пользователь набирал на правой клавиатуре цену в определенном диапазоне. После этого и шла конвертация и проверка. Насчет 50 символов я загнул - использовал только 15!
23 май 05, 14:10    [1564317]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить