Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2012, 20:58   #1
Не_шарю_в_делфи
Пользователь
 
Регистрация: 06.07.2011
Сообщений: 15
Радость Работа с Edit

Уважаемые программисты делфи! Ещё совсем зеленый, помогите с моей простой (для Вас) проблемой)
У меня есть 3 EDITa для того, чтобы туда вписывать числа.
Надо сделать чтобы можно было вписывать только значения от 0.01 до 0.99
Ещё надо штоб сумма значений в 3 эдитах была обязательно единица (тоесть я так понимаю вылезал шоумесач, говорящий об этом)
И ещё при всём этом чтобы значение в 1 эдите было меньше чем во втором, а во втором меньше чем в третьем, тоесть edit1<edit2<edit3
как же мне все эти ограничения оформить? Есть какойто простой способ короткий, я просто очень слабенько шарю
Не_шарю_в_делфи вне форума Ответить с цитированием
Старый 20.05.2012, 21:43   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

MaskEdit попробовать не хочешь?
Там настроить маску типа \0.00;1;_
Получишь возможность ввода только после запятой.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.05.2012, 21:44   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Ну, это можно сделать, если самостоятельно отслеживать ввод с клавиатуры.
Разумеется, при условии, если слегка смягчить условия.
Так, как написано, вообще ни одной цифры изменить будет невозможно, т.к. при этом нарушится условие, накладываемое на все три одновременно.
Еще: в постановке явно лишний третий - его состояние однозначно определяется первыми двумя. Т.е. его должен заполнять не пользователь, а программа: когда пользователь что-то вводит, скажем, в первый, программа синхронно меняет значение в 3-м.

Но мне кажется,это неоптимальное решение.
Я бы сделал это не тремя эдитами, а двумя или тремя полосами прокрутки (эдиты управляются ими и лишь индицируют результат, не позволяя пользователю вводить что-то туда самостоятельно).
В этом случае диапазон значений каждой из полос динамически меняется в зависимости от состояния других (пусть их текущие значения a, b и с):
- первая позволяет изменять величину от 0.01 до b,
- вторая - от a до c,
- третья - от b до 0.99.
Шаг для любой, естественно, 0.01.
Но лучше все-таки двумя:
- первая управляет "границей" меду первым и вторым полем),
- вторая - "границей" между вторым и третьим.
s-andriano вне форума Ответить с цитированием
Старый 20.05.2012, 22:28   #4
Mrsqler
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 146
По умолчанию

я попробовал что-то подобное сделать,но получилось не очень)
P.S Компилировал в Delphi 2010.
Вложения
Тип файла: zip Edit.zip (401.4 Кб, 6 просмотров)
Mrsqler вне форума Ответить с цитированием
Старый 20.05.2012, 22:46   #5
Не_шарю_в_делфи
Пользователь
 
Регистрация: 06.07.2011
Сообщений: 15
По умолчанию

Довольно сложно всё это понять, эдитами не принципиально пользоваться, просто надо чтобы соблюдались условия, если есть идеи кода очень прошу поделиться)) Не обязательно чтобы всё было с иголочки, просто чтоб работало
Не_шарю_в_делфи вне форума Ответить с цитированием
Старый 20.05.2012, 22:54   #6
Mrsqler
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 146
По умолчанию

Ок)А если так?)
Вложения
Тип файла: zip Edit.zip (402.9 Кб, 6 просмотров)
Mrsqler вне форума Ответить с цитированием
Старый 20.05.2012, 22:56   #7
Не_шарю_в_делфи
Пользователь
 
Регистрация: 06.07.2011
Сообщений: 15
По умолчанию

так подумал над советом - можно наверное сделать на месте первого и второго эдита чтобы можно было выбирать из предложенного, а на месте третьего сделать формулу 1-выбор1+выбор2. но там тоже должны быть ограничения чтоб нельзя было выбрать выбор2 меньше по значению чем выбор1. Как это оформить?

Mrsqler похоже не работает, пишу значения 0.01 0.33 0.66 пишет результат не равен 1

Последний раз редактировалось Stilet; 21.05.2012 в 07:25.
Не_шарю_в_делфи вне форума Ответить с цитированием
Старый 20.05.2012, 23:06   #8
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Еще раз оптимальный, на мой взгляд, вариант:
Три Edit'а ReadOnly, т.е. пишет в них не пользователь, а программа.
Два ScrollBar'а с шагом 0.01:
- значение первого можно изменять от 0.01 до значения второго,
- значение второго можно изменять от значения первого до 0.99.
При изменении значения одного автоматически изменяются пределы (точнее, один предел) другого.
Плюс к этому в момент отпускания ползунка делается проверка на Edit1<Edit2<Edit3, и, если не выполняется, ползунок автоматически возвращается в крайнее положение, в котором условие выполняется. Можно обойтись и без этого, но тогда пределы придется вычислять по более сложным формулам и, боюсь, такое управление станет менее очевидным для пользователя.
Edit'ы естественно, отображают:
- положение первой полосы,
- разницу в положении второй и первой,
- 1.0 - положение 2-й полосы.
s-andriano вне форума Ответить с цитированием
Старый 20.05.2012, 23:09   #9
Не_шарю_в_делфи
Пользователь
 
Регистрация: 06.07.2011
Сообщений: 15
По умолчанию

s-andriano прикольно придумано) очень тяжело будет разобраться как сделать, если не трудно то можно код?
Не_шарю_в_делфи вне форума Ответить с цитированием
Старый 20.05.2012, 23:15   #10
Mrsqler
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 146
По умолчанию

Вот,теперь считает)Я случайно 2 раза одну и туже переменную указал.
Вложения
Тип файла: zip Edit2.zip (403.8 Кб, 6 просмотров)
Mrsqler вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с Edit ольгаг C++ Builder 4 18.03.2012 15:50
Работа с компонентом Edit Fon_Blut Помощь студентам 2 17.05.2011 21:19
Работа с Edit в делфи sv2311 Помощь студентам 4 09.04.2009 17:57
Работа с Edit Шура Помощь студентам 4 25.11.2008 16:50
Работа с Edit One.Love Общие вопросы Delphi 1 03.05.2008 14:03