| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Сложение значений Integer и Double |
| Автор: nicka 22.6.2004, 13:44 |
| Работаю в Delphi7 У меня на форме стоят 2 поля ввода(TRichEdit). Одно имеет маску - ' . ' - т.е для ввода значений типа Double(для цены товара), а второе - ' ' - т.е для ввода значений типа Integer , плюс к этому есть еще одно поле, в котором после ввода значений в первые 2 поля, должна отображаться сумма этих значений. Это поле имеет маску ' . '. я делаю для этого следующее [code] TRichEdit3.text := InttoStr(StrtoInt(TRichEdit1.text) + StrtoInt(TRichEdit2.text)); [code] конечно это ыдает ошибку поскольку первая маска не позволяет перевести '10 . '(например) в Integer , я понимаю но что делать не знаю ... может кто подскажет |
| Автор: _vova_ 22.6.2004, 14:02 | ||
| А зачем нужен TRichEdit? Есть чудовый компонент TCurrencyEdit из RX, скорее всего есть что-то подобное и в JEDIVCL. У него есть свойство Value, и делай сним что хочеш. Также поддерживается такая прелесть, как As... Ну если очень нуно TRichEdit, то
или наоборот, взависимости от того где дабл. |
| Автор: nicka 23.6.2004, 13:29 | ||||
К сожалению, данный метод вызывает у меня следующую ошибку
и что же делать? |
| Автор: Girder 23.6.2004, 13:48 |
| У тебя разделитель не соответствует. |
| Автор: nicka 23.6.2004, 14:15 | ||
не соответствует чему? установкам на машине в Regional Settings? вроде точка у меня - хотя проверю... |
| Автор: Medved 23.6.2004, 14:38 | ||
В первую очередь делать нормально! Это все равно что экскаватором грузить сено! Вам же сказали, есть специальные компоненты (из той же RxLib). Или воспользуейтесь TMaskEdit. А TRichEdit предназначен для ввода и отображения форматированного текста. |
| Автор: Girder 23.6.2004, 14:49 | ||
или в обработчике обрезаеш все лишнее из RichEdit.text а потом конвертируеш. Ну и ряд других способов. |
| Автор: nicka 23.6.2004, 15:58 | ||||||||||
во первых - ни каких других компонент( в той же или не в той жеRxLib) у меня не видно и не читала. Насчет TMaskEdit. - надо поискать. Но вопрос то касался TRichEdit - значит мне так нужно, я читала про него в книге. Там было сказано, что если надо задать маску, то существует он. Вот я и взяла...
так зачем же наезжать так, я в дельфи новичок, просто не знаю в какую сторону копать , да изаказ поджимает... а для чего же тогда форумы, если лучать подсказку на то , что другие уже знают , а тебе не стоит тратить время?
|
| Автор: Guest 23.6.2004, 18:22 |
| Ладно, всем пардон, оказалось что у меня на форме не всем ненавистный TRichEdit , а всеми любивый TMaskEdit. Но ошибка вес равно та же, так что уж надеюсь на совет, потому что учень уж срочная проблема... |
| Автор: Guest 23.6.2004, 18:36 |
| Выше сообщение от было от меня, т.е Нicka - автора темы. И щас тоже я пишу. Дело в том что если я введу в поле число 10 следующим образом - '10 . ' , то выйдет вышеуказанная ошибка. А если не введу так - ' 10. ' - то не выдаст ошибку. Но так постоянно вводить не удобно. ЧТо можно придумать тут? |
| Автор: Girder 23.6.2004, 21:13 | ||||||
| Береш обычный TEdit и используеш. а)для IntEdit.OnChange;
б)для FloatEdit.OnChange;
Использовать OnKey... также можно, что бы сразу игнорировать не допустимые коды символов, НО... ни что не помешает вставить(через буфер) в поле ввода информацию. При конвертации необходимо обрабоботать исключения(потому что, ни что мне не помешает ввести к примеру "..11,,ee". Конечно можно и допустисый синтексис обратывать):
Но лично я, вообще(если честно то редко) не обрабытываю OnChange, OnKey... Т.к. часто это пугает пользователя: Он нажимает... А-ааа.. ни чё не происходит и т.п. А просто обрабатываю исключения и вслучаи чего сообщаю пользователю, где и в чем ошибка. |
| Автор: Medved 24.6.2004, 05:29 | ||
надо правильно отредактировать саму маску. Поставить вместо символа 9 символ 0. Т.е. сказать что должна быть не просто цифра, а ОБЯЗАТЕЛЬНО цифра и ничего более.
|
| Автор: nicka 24.6.2004, 14:11 |
| Pegas , про маски я читала, только если я поставлю вместо 9 - 0, то это будет означать обязательный ввод, то есть если я уже ввела туда число, а потом передумала и хочу удалить его, то оно выдаст сообщение, что я не правильно ввела значение в маску...я так пробовала Теперь насчет удобного ввода, чтоб при вводе например 10 сажалось ' 10. ' , а не '10 . ' я подумала, что тут поможет !(восклицательный знак) в маске, т.е !99.99;1;_ да, это вроде решает проблему пробелов перед точкой, но зато возничает другая - при вводе например ' 100.25' значение может поменяться при вводе в базу на ' 100.01' или что то в этом роде, короче значение после точки меняеться, не знаю из зачего..... А откуда можно скачать эту RX библиотеку? |
| Автор: Medved 25.6.2004, 05:22 |
| http://delphiplus.nagano.ru/rxlibrary.html Добавлено @ 05:23 Установи RXLib и не мучайся. RXLib - это почти что стандартная библиотека для Delphi. Описание процедур и функций смотри в DRKB. |
| Автор: Петрович 26.6.2004, 09:51 | ||
Лично я, и все мои ближайшие знакомые уже давно (после первых опытов) отказались от использования TMaskEdit. Уж больно он "не русский" какой-то. Наладить ввод который будет соответствовать маске, и при этом будет допускать гибкость, в этом компоненте по моему невозможно. Мне кажется что он применим только если нужно заставить пользователя обязательно ввести значение точно соответствующее маске. Но даже при этом, пользователи "чумеют" от такого компонента, по крайней мере те с которыми приходилось иметь дело мне. Поэтому, обычно просто ставится tEdit, и либо вешается обработчик на OnChange в котором делается проверка на допустимость вводимой величины, либо проверка делается уже после ввода, например по нажатию Ok. А можно и правда поискать более продвинутые компоненты. |
| Автор: Medved 1.7.2004, 11:36 |
| Согласен. ^ |