Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 142

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!

Если свойства MaxValue и MinValue компонента SpinEdit равны между собой, то этот компонент теряет свое самое важное качество – ограничение значения (Value) снизу и сверху.
Например, надо сделать много стоящих подряд компонентов с непересекающимися интервалами.

Как этот момент обойти аккуратно и красиво?
Я, например, пока сделал так: (MaxValue <> MinValue)

(приложение)

И так, для каждой пары.

Приложение:
  1.  
  2. SpinEdit12. MinValue:=SpinEdit11.Value;
  3. SpinEdit12. MaxValue:=SpinEdit13.Value;
  4. SpinEdit13. MinValue:= SpinEdit12.Value;
  5. SpinEdit13. MaxValue:=SpinEdit14.Value;
  6.  
  7.  
  8. if SpinEdit12.Value=SpinEdit11.Value thenSpinEdit12.Value:=SpinEdit12.Value+1;
  9. if SpinEdit12.Value=SpinEdit13.Value thenSpinEdit12.Value:=SpinEdit12.Value-1;
  10.  
  11.  
  12. if SpinEdit13.Value=SpinEdit12.Value then SpinEdit13.Value:=SpinEdit13.Value+1;
  13. if SpinEdit13.Value=SpinEdit14.Value then SpinEdit13.Value:=SpinEdit13.Value-1;


Junior Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Junior (статус: Посетитель)
Вопрос отправлен: 1 сентября 2009, 20:39
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 6; последнее сообщение — 2 сентября 2009, 22:35; участников в обсуждении: 4.
min@y™

min@y™ (статус: Доктор наук), 1 сентября 2009, 21:02 [#1]:

Можно на OnChange следить, чтобы
if MaxValue > MinValue
then ...
else ... ;

Вообще, странный подход. Я бы это оформил, как в Partition Magic, например. Для чего такое надо? Может, есть более другое решение?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Junior

Junior (статус: Посетитель), 1 сентября 2009, 23:21 [#2]:

Partition Magic есть в Д7, если есть то где? Просто искать времени нет.
Вадим К

Вадим К (статус: Академик), 1 сентября 2009, 23:29 [#3]:

Partition Magic - это программа такая.
А может быть, когда совпадают границы, просто делать его недоступным?
Галочка "подтверждения прочтения" - вселенское зло.
Amidamaru

Amidamaru (статус: 4-ый класс), 2 сентября 2009, 15:48 [#4]:

Насколько много? Можно уменьшить количество кода, если запихнуть их всех в TList или TObjectList.
Согласен насчет "делать его недоступным" или лучше наверно ставить ему ReadOnly:=true;
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.
Junior

Junior (статус: Посетитель), 2 сентября 2009, 20:38 [#5]:

Вот кусочек кода из файла Spin.pas:

function TSpinEdit.CheckValue (NewValue: LongInt): LongInt;
begin
Result := NewValue;
if (FMaxValue <> FMinValue) then
begin
if NewValue < FMinValue then
Result := FMinValue
else if NewValue > FMaxValue then
Result := FMaxValue;
end;
end;

Зачем Борланд добавила условный оператор: if (FMaxValue <> FMinValue) then - не было бы проблем. Я новичек и подвоха не вижу.

ЗЫ Partition Magic конечно же прога )))) совсем уже засиделся
Junior

Junior (статус: Посетитель), 2 сентября 2009, 22:35 [#6]:

Наверное, надо было им сделать свойство которое вкл или выкл. эту условную проверку. В программировании иногда логика отличается от математической.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:03
Выполнено за 0.02 сек.