У меня есть приложение, которое будет использовать измерения, в частности до 1/16 дюйма. Мне бы очень хотелось, чтобы конечный пользователь мог ввести значение, ВКЛЮЧАЯ дробную часть, например, 3 7/16. Я понимаю, что я могу потребовать от пользователя просто ввести десятичные значения (т. Е. 3.1875), но мне бы очень хотелось, чтобы это было лучше. Кто-нибудь знает о падении или управлении спином, что облегчает его ввод? (В идеале версия DB контроля.)Как мне ввести фракции в Delphi?
ответ
Вы можете сделать просто
function FractionToFloat(const S: string): real;
var
BarPos: integer;
numStr, denomStr: string;
num, denom: real;
begin
BarPos := Pos('/', S);
if BarPos = 0 then
Exit(StrToFloat(S));
numStr := Trim(Copy(S, 1, BarPos - 1));
denomStr := Trim(Copy(S, BarPos + 1, Length(S)));
num := StrToFloat(numStr);
denom := StrToFloat(denomStr);
result := num/denom;
end;
Это будет принимать ввод формы examplified по 3/7
и -4/91.5
.
Чтобы разрешить целую часть, добавить
function FullFractionToFloat(S: string): real;
var
SpPos: integer;
intStr: string;
frStr: string;
int: real;
fr: real;
begin
S := Trim(S);
SpPos := Pos(' ', S);
if SpPos = 0 then
Exit(FractionToFloat(S));
intStr := Trim(Copy(S, 1, SpPos - 1));
frStr := Trim(Copy(S, SpPos + 1, Length(S)));
int := StrToFloat(intStr);
fr := FractionToFloat(frStr);
result := int + fr;
end;
Это будет помимо принимают входные данные формы examplified с помощью 1 1/2
.
И расширьте это с помощью опции, чтобы ввести целое число впереди (вы можете обнаружить это по наличию пробела char) - просто введите полное число в одном TEdit - это самый простой способ для пользователя * и * позволяет им использовать десятичные знаки в том же элементе управления, если они предпочитают вводить 3.5, чем 3 1/2 –
Я думаю, что я мог бы быть наклонным для использования оценщика экспрессии JCL здесь. С настройкой, предложенной Jan. –
Идея использования оценщика истинного выражения хороша. Затем вы можете вводить такие вещи, как '4.5 + (10.2 + 3.83) * 3.67'. –
Я, случается, написал контроль много лет назад, и в настоящее время я заканчиваю обновление для него, которое также включает в себя преобразование показателей. Он позволяет пользователю и разработчику переключаться между ft внутри, dec в, dec ft, mm, cm, m, просто щелкнув правой кнопкой мыши или установив режим во время разработки. Он также обрабатывает округление до ближайшего 16-го, 32-го или того, что вам нужно для метрики. Проверьте это на большинстве сайтов компонентов delphi, таких как torry.net или мой старый сайт по адресу http://www.enhancedtechsolutions.com/delphi/ Я надеюсь, что новая версия будет выполнена через день или 2 и опубликовано.
забыл упомянуть самую важную часть: Это называют TMaskFtInch
Имеет ли это также версию с поддержкой БД? – user1009073
@ user1009073 Вы можете сделать эту часть самостоятельно? –
Нет, но поскольку Дэвид заявил, что это будет не слишком сложно для вас, чтобы управлять i/o через код, а не только ссылку управления.Загрузка включает демонстрационный пример, чтобы вы могли проверить текущую функциональность, не имея необходимости устанавливать что-либо. –
- 1. Как мне ввести «y» автоматически?
- 2. Как мне ввести формулу Ramanujan в java?
- 3. Как мне ввести именованные зависимости в контроллер?
- 4. в qpython, как мне ввести символ «return»
- 5. Delphi предупреждения подслушивания мне
- 6. Получения фракции из двойной
- 7. Как написать фракции в html?
- 8. Как представлять фракции в HTML
- 9. Как мне ввести метод, который принимает массивы?
- 10. Как мне ввести, когда нет тестовых примеров?
- 11. Ввод смешанные фракции в Java
- 12. Фракции в Python
- 13. Разделительные фракции
- 14. Добавление фракции в Java
- 15. Преобразование фракции в десятичный
- 16. Длина фракции
- 17. Подвижные фракции в с
- 18. Где мне ввести аргументы приложения в XCode?
- 19. Факторизующие фракции в sympy
- 20. Формат фракции в rdlc
- 21. Преобразование фракции в проценты
- 22. Поддержка стоимости фракции в шрифте Verdana
- 23. Непрерывные фракции
- 24. Фракции в NumericUpDown/DomainUpDown
- 25. Как мне ввести текст в gedit linux, введенный в java?
- 26. Как конвертировать поплавки в человекочитаемые фракции?
- 27. Как конвертировать специальный поплавок в объект фракции
- 28. Хромированные пиксели рендеринга как фракции
- 29. Как мне ввести целочисленное значение в цикле «while»?
- 30. Как мне ввести пароль администратора в таблицу моих пользователей?
Получить пользователю ввести текст, а затем разобрать его. Элементы управления графическим интерфейсом были бы ужасны в использовании. –
или ... если только разрешенные фракции могут быть выражены как кратные 1/16, тогда вам нужно всего лишь пригласить своих пользователей для числителя. Выпадающий список или управление спином будут в порядке. Вы можете разрешить больший диапазон предварительно заданных дробей, используя один элемент управления для числителя и один для знаменателя, либо бок о бок с «/» между ними, либо один над другим с линией, нарисованной на холсте между их (возможно, прямоугольный TShape с высотой 1 или 2 пикселя). – Sam
Что вы хотите делать с этими фракциями? Я думаю, вы должны подумать о том, чтобы разрешить пользователю вводить выражения свободной формы, такие как «3/4» », и затем сохранять эти значения в памяти с помощью класса, который вы создаете, который может хранить как вход пользователя, так и затем манипулировать значениями. Я бы назвал это 'TDimension', и он будет иметь как исходное значение ввода строки, так и его десятичное значение внутри как поля. –