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

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

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2009, 20:50   #1
Juni
 
Регистрация: 19.04.2009
Сообщений: 7
По умолчанию SpinEdit

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

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

Событие от любого SpinEdit
SpinEdit12. MinValue:=SpinEdit11.Value;
SpinEdit12. MaxValue:=SpinEdit13.Value;
SpinEdit13. MinValue:= SpinEdit12.Value;
SpinEdit13. MaxValue:=SpinEdit14.Value;

Событие от SpinEdit12.Value:
if SpinEdit12.Value=SpinEdit11.Value thenSpinEdit12.Value:=SpinEdit12.Va lue+1;
if SpinEdit12.Value=SpinEdit13.Value thenSpinEdit12.Value:=SpinEdit12.Va lue-1;

Событие от SpinEdit13.Value:
if SpinEdit13.Value=SpinEdit12.Value then SpinEdit13.Value:=SpinEdit13.Value+ 1;
if SpinEdit13.Value=SpinEdit14.Value then SpinEdit13.Value:=SpinEdit13.Value-1;

И так, для каждой пары.
Juni вне форума Ответить с цитированием
Старый 01.09.2009, 21:03   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

так если у одного компонента они равны то да....
а если у разных совпадают то все норм...
что сделать то надо?
можно пример(без тысяч спинов)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.09.2009, 23:27   #3
Juni
 
Регистрация: 19.04.2009
Сообщений: 7
По умолчанию

Надо, что бы пользователь мог задать интервалы произвольной ширины, но смежные. Например, первый заканч. на 5 а второй инт. начинается с обязательно 6.
Juni вне форума Ответить с цитированием
Старый 02.09.2009, 00:29   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

интервал задается двумя величинами (начало , длина)
интервалы смежные т.е. начало определяется однозначно по предыдущему следовательно его начало ПОЛЬЗОВАТЕЛЮ задавать НЕ НАДО (сделать недоступным для изменения пользователем ENABLE) а задавать только длину
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.09.2009, 20:47   #5
Juni
 
Регистрация: 19.04.2009
Сообщений: 7
По умолчанию

Вот кусочек кода из файла 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 - не было бы проблем. Я новичек и подвоха не вижу.
Juni вне форума Ответить с цитированием
Старый 02.09.2009, 22:24   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

f (FMaxValue <> FMinValue) then
если границы равны то считаем что их нет.
это так и есть...так что следите что границы одного спина не были равны
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.09.2009, 22:36   #7
Juni
 
Регистрация: 19.04.2009
Сообщений: 7
По умолчанию

Наверное, надо было им сделать свойство которое вкл или выкл. эту условную проверку. В программировании иногда логика отличается от математической.
Juni вне форума Ответить с цитированием
Старый 02.09.2009, 23:23   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вообще у компонента есть событие OnChange там делайе любые проверки.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SpinEdit и CBuilder Gromsky Общие вопросы C/C++ 0 14.05.2009 20:47
Обработка Ctrl+V и Shift+Ins в SpinEdit ZeLiK Общие вопросы Delphi 9 26.02.2008 02:22
Свойство Decimal у SpinEdit Ko$tello Компоненты Delphi 3 18.11.2006 17:53