Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648

Компонент UpDown с дробным инкрементом

01.11.2020, 07:53. Показов 1889. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте.

ВСВ6. В текстовом окне действительное число: 12,345. Оно ассоциировано с компонентом UpDown c инкрементом = 1 (меньше не разрешается). Как сделать, чтобы при кликах по компоненту UpDown число в текстовом окне изменялось бы на 0.1? Тема в сети поднималась многократно, но конкретного решения с примером я так и не нашёл.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.11.2020, 07:53
Ответы с готовыми решениями:

Компонент UpDown
Дайте, если не сложно, пример, как программируется Эдит1, с сочетанием с компонентом UpDown1. Не могу немного сообразить. Вот я скинул...

Компонент UpDown
Имеется график с осями x и y ( до 10 ). Как сделать чтобы при нажатие на UpDown график по оси x , стал на 1 меньше.

Компонент UpDown, установка ограничения
Каким образом можно сделать ограничение для UpDown, автоматически лимит стоит на 100. И подскажите еще как сделать так чтобы когда доходишь...

9
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
01.11.2020, 11:28
C++
1
2
3
4
5
void __fastcall TForm1::UpDown1Click(TObject *Sender, TUDBtnType Button)
{
    float ff = Button==btNext ? 0.1 : -0.1;
    Edit1->Text = String().sprintf("%.1f",Edit1->Text.ToDouble()+ff);
}
- хотел было предложить решение, но вдруг сам озадачился... . Не могу понять, почему не происходит изменение эдита в меньшую сторону после достижения изначально заданного значения (скажем, в поле эдита было 12.3. Так прибавлять по 0.1 можно, и отнимать можно, но после достижения значения 12.3 никакого отнимания не происходит. Парадокс! )
Изображения
 
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
01.11.2020, 11:37
Собственно говоря, - и прибавляет только до значения 22.3. Два парадокса. Без бутылки не разберёшься... .

Добавлено через 2 минуты
Наверное, это связано с параметрами UpDown "Position" ( 0 ) и "Max" (100).
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33411 / 21521 / 8236
Регистрация: 22.10.2011
Сообщений: 36,922
Записей в блоге: 12
01.11.2020, 12:17
Лучший ответ Сообщение было отмечено jkrnd как решение

Решение

C++
1
2
3
4
5
6
void __fastcall TForm1::UpDown1Click(TObject *Sender, TUDBtnType Button)
{
    double v = StrToFloat(Edit2->Text);
    v += (Button == btNext) ? 0.1 : -0.1;
    Edit2->Text = String().sprintf("%.3f", v);
}
, выставил Min = -1000; Max = 1000, и не стал вообще связывать UpDown с эдитом. Никаких проблем с граничными значениями не нашел.

jkrnd, а на кой тебе, собственно, это? Ты ж в Лазарусе начал писать, там есть TFloatSpinEdit из коробки ,в котором ничего вообще дорабатывать не нужно, он это все умеет по определению
2
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
01.11.2020, 15:39  [ТС]
Огромное спасибо за участие.
Цитата Сообщение от volvo Посмотреть сообщение
Ты ж в Лазарусе начал писать
Я поддерживаю свои программы написанные на VB-6, VB.net, Delphi7, C++Builder1, C++Builder6, Embarcadero 4 (C++,Delphi), Lazarus нгачиная с конца 90-х. Список указан в порядке осваивания сред программирования. В одной из программ, написанной на BCB-6 лет так несколько назад возникла необходимость внести ряд изменений. Отображение данных происходит на удалённой от пользователя панели. Чтобы воспользоваться клавиатурой для изменения, например, уставок сигнализации, необходимо держать её в руках стоя перед панелью монитора. В обычном состоянии она (клавиатура) спрятана. А вот радиомышкой умеют пользоваться все. Переписывать на другом языке всю программу не хотелось бы. Вот задача: давление в трубопроводе было задано 5,5, а диспетчер задал 4,0 и поэтому минимальное значение, при котором должна сработать сигнализация нужно изменить с 5,3 на 3,8. И хотелось бы чтобы это можно было сделать не только с клавиатуры, но и мышкой.
В примере #4 сразу в глаза бросается обязательность наличия разделителя в системе точки, а не запятой. Хотелось бы чтобы такой зависимости работоспособности программы не было. Ну и после опробования кода я получил следующие значения: 51.1 52.1 53.1 54.1 55.1 вместо ожидаемых 50.1 50.2 50.3 50.4 50.5.
Я тут набрёл на код на Паскале https://delphisources.ru/pages... nedit.html думаю из него можно вытянуть нужную мне функциональность перехватив обработчик UpDownChangingEx компонента UpDown, но как это сделать не соображу. Помогите пожалуйста.

Не по теме:

A Lazarus действительно классная среда. Всё новое пишу только на нём. Работа с опросом Com-порта - вообще супер! Всё работает без сбоев, хотя я не до конца понимаю как всё это происходит)))

0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33411 / 21521 / 8236
Регистрация: 22.10.2011
Сообщений: 36,922
Записей в блоге: 12
01.11.2020, 15:54
Цитата Сообщение от jkrnd Посмотреть сообщение
Ну и после опробования кода я получил следующие значения: 51.1 52.1 53.1 54.1 55.1 вместо ожидаемых 50.1 50.2 50.3 50.4 50.5
Ну и почему я после опробования получаю то, что нужно? Может, потому что
Цитата Сообщение от volvo Посмотреть сообщение
не стал вообще связывать UpDown с эдитом
?

Цитата Сообщение от jkrnd Посмотреть сообщение
В примере #4 сразу в глаза бросается обязательность наличия разделителя в системе точки, а не запятой.
С чего бы это? То, что там стоит точка в строке форматирования sprintf - так это, извините, синтаксис языка, а не разделитель... Да и какие проблемы с точкой-то, в самом крайнем случае? Оно с любым разделителем должно работать, особенно - если заменить в строке '.' и ',' на DecimalSeparator... Но до этого не должно дойти...

В общем, удачи в дальнейшем переписывании функционала с другого языка. Мне это неинтересно.
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
01.11.2020, 16:10  [ТС]
volvo, извините, не догадался разорвать связь Associate компонента UpDown с Edit. Всё работает как нужно. Спасибо.
0
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
04.11.2020, 05:54  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
TFloatSpinEdit из коробки
подскажите пожалуйста как этот компонент найти в Lazarus. В сетевом диспетчере пакетов поиск по имени ничего не дал.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33411 / 21521 / 8236
Регистрация: 22.10.2011
Сообщений: 36,922
Записей в блоге: 12
04.11.2020, 08:58
Цитата Сообщение от jkrnd Посмотреть сообщение
В сетевом диспетчере пакетов поиск по имени ничего не дал
А не надо в сетевом диспетчере. Он сразу же есть ,надо просто среди компонентов искать: Ctrl + Alt + P и вбиваем имя... Ну, или сразу на вкладке Misc в палитре, он там третий слева...
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
04.11.2020, 12:47  [ТС]
volvo, всё нашёл. Спасибо. Очень хотелось бы подсмотреть как там реализованы свойства DecimalPlaces и Increment, но из кода модуля spin не понял как. Куда подсмотреть ещё, чтобы понять как это работает? И на сколько это похоже на то что слепил я, с Вашей помощью, разумеется!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.11.2020, 12:47
Помогаю со студенческими работами здесь

Помогите чайнику с инкрементом...
Здравствуйте! Понимаю, конечно, что вопрос наверное дурацкий... но я только начал знакомство с С++, а этот вопрос не дает покоя... int...

функция с инкрементом объекта. ++
Доброго времени суток. Прошу помочь в реализации функций. static HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); static...

Создание ссылки с инкрементом
Здравствуйте. Помогите разобраться. Есть код: int i = 1 var dddddd = "GrafName"; dddddd += i; // получили...

Массив с инкрементом =1 заполнить по спирали
Заполнить массив 100х100 натуральными числами с инкрементом равному единице. Заполнение массива происходит по спирали. Я разобрался с...

replace..select с инкрементом полей
Обложился документацией, но по всей видимости хочу нечто странное.. Вот синтаксис команды update, которая изменяет определенное поле в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru