Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 12

TUpDown Increment, или как это сделать по другому

27.10.2009, 21:39. Показов 3611. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помощи в следующем вопросе:
Есть TUpDown и ассоциированный с ним TEdit
Основная проблема состоит в том, что свойство Increment для TUpDown работает слишком хитро. Если ставишь Increment равный 2 (или 3,4, и т.д), то при первом нажатии на UpDown значение в TEdit становиться кратным инкременту. То есть если сейчас значение 1, а инкремент 2, то при первом нажатии на UpDown значение станет 4 (кратным 2). Как этого избежать по человечески? Мне непонятно даже чем руководствовались разработчики компонента, когда его создавали...

Из-за отсутствия человеческого решения, я прибег к кривому:
написал в OnChangeEx для UpDown следующий код:
C++
1
2
3
4
  if(Direction == updUp)
   a = 1;
  if(Direction == updDown)
   a = -1;
а на OnClick сделал следующее:
C++
1
UpDown1->Position = UpDown1->Position + a;
Получился эдакий "ручной" инкремент. НО тут тоже возникает проблема:
если нажать стрелку вверх на UpDown, то значение увеличиться на 2. Если после этого нажать стрелку вниз, то обработчик OnClick не выполняется. и я опять в тупике.

Кто нибудь подскажите как работать с Increment "человеческим", или "кривым" способом, что б всё было безотказно.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.10.2009, 21:39
Ответы с готовыми решениями:

Как можно оператор ^ применить к типу double или как по другому сделать задачу
Помогите пожалуйста, в моем коде пишет, что "оператор ^ невозможно применить к типу double". Как можно оператор ^ применить к типу...

Как это назвать или где почитать как это сделать?
Вот как выглядит моя цель - http://cs623921.vk.me/v623921477/38005/2W46UJsY3nM.jpg При нажатии на стрелки происходит плавный переход. ...

Обзоры (Views) существуют в Access'е? Или подскажите как по другому сделать )
Здравствуй многоуважаемый All есть таблица в этой таблице могут быть находится записи в отношении один к многим т.е. добавлено...

5
14 / 14 / 1
Регистрация: 17.10.2009
Сообщений: 58
27.10.2009, 22:15
TCSpinEdit есть. Зачем такие извраты?
0
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 12
27.10.2009, 22:47  [ТС]
Мне обязательно нужен OnChangeEx, потому что он позволяет определить какая кнопка была нажата (вниз\вверх), в соответствии с этим произвести некоторые вычисления, и в случае чего запретить выполнение (AllowChange = false). У TCSpitEdit нет такой возможности. Или есть?

Тогда другой пример:
Есть 2 TCSpinEdit и 1 TEdit. В TEdit есть некоторое число (допустим 12). При нажатии на стрелку вверх на одном из TCSpinEdit происходит вычитание значения из Edit. При нажатии стрелки вниз - прибавление. Так вот цель - при нажатии на стрелку вверх проверять значение в Эдите (перед изменением значения) и в случае если там 0, запрещать изменение в TCSpinEdit.
Если смогу проделать такое через СпинЭдит, потребность в Апдауне пропадет.
0
14 / 14 / 1
Регистрация: 17.10.2009
Сообщений: 58
28.10.2009, 00:58
Цитата Сообщение от DenFromTula Посмотреть сообщение
Мне обязательно нужен OnChangeEx, потому что он позволяет определить какая кнопка была нажата (вниз\вверх), в соответствии с этим произвести некоторые вычисления, и в случае чего запретить выполнение (AllowChange = false). У TCSpitEdit нет такой возможности. Или есть?

Тогда другой пример:
Есть 2 TCSpinEdit и 1 TEdit. В TEdit есть некоторое число (допустим 12). При нажатии на стрелку вверх на одном из TCSpinEdit происходит вычитание значения из Edit. При нажатии стрелки вниз - прибавление. Так вот цель - при нажатии на стрелку вверх проверять значение в Эдите (перед изменением значения) и в случае если там 0, запрещать изменение в TCSpinEdit.
Если смогу проделать такое через СпинЭдит, потребность в Апдауне пропадет.
Не понятно. Есть нормальные свойства MinValue и MaxValue для спинэдита. И проверять ничего не надо)
Если нужны значения в апдауне, пользуй OnMouseUp и проверяй на <=0..
0
125 / 116 / 17
Регистрация: 27.02.2007
Сообщений: 291
28.10.2009, 21:13
Этот вопрос уже обсуждался Компонент UpDown

Добавлено через 8 минут
Получился эдакий "ручной" инкремент. НО тут тоже возникает проблема:
если нажать стрелку вверх на UpDown, то значение увеличиться на 2. Если после этого нажать стрелку вниз, то обработчик OnClick не выполняется. и я опять в тупике.
И так использовать компонент я бы не рекомендовал, т.к. он самостоятельно ведет отслеживание приращения/уменьщение и OnClick отрабатывает с учетом предыдущего флага. И если мы вмешиваемся в его работу, то имеем,то что видим...

Добавлено через 3 минуты
Прошу прощения, этот вопрос обсуждался здесь Обработчик OnClick не выполняется на TUpDown
0
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 12
30.10.2009, 00:45  [ТС]
desp, не понял что ты мне хочешь сказать. Про Min и Max я знаю, но они мне не помогут. Причем здесь OnMouseUp, я вообще не понял - это действие которое срабатывает, при отпускании кнопки мыши. Попробую еще раз описать проблему. Хотя я уже склоняюсь к тому, что я ставлю перед стандартными компонентами слишком специфические задачи. Итак:
Есть 2 поля (2 это для примера. на самом деле их 18) которые я буду прибавлять или убавлять (они могут быть либо TEdit+TUpDown, либо TCSpinEdit). Есть третье поле - просто TEdit, в нем записано некое число. Так вот: при нажатии на стрелочку вверх на Апдауне или на СпинЭдите, мне нужно вычитать определенное число из третьего поля (TEdit). Определенное число зависит от величины, которое находится в поле которое я увеличиваю. Т.е. если в поле 1-20 я вычитаю из третьего 1, 21-40 - вычитаю 2, и т.д. При нажатии на стрелку вверх я сначала (до изменения) должен проверить хватает ли в третьем поле величины, а потом вычесть нужное число. Именно для этого мне нужен OnChangeEx, потому что он позволяет перед изменением провести некоторые вычисления, и в случае необходимости запретить изменение. Но тут проблема в том, что при некоторых обстоятельствах мне необходимо прибавлять не 1 а 2, и мне нужно свойство Increment, которое в TUpDown работает слишком хитро(см. пост №1).
В CSpinEdit Increment работает как надо, но там нет OnChangeEx, и я не могу проверить значение до изменения. Короче замкнутый круг.
Пока писал это сообщение - пришла идея как это всё переделать совершенно другим способом, так что булу переписывать программу капитально. Извините за много букв.
АНК, про вмешательство в TUpDown я уже понял. Этот компонент попил немало моей кровушки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.10.2009, 00:45
Помогаю со студенческими работами здесь

как отсюда найти е?или сделать выражение по-другому что комплилятор смог прочитать
как отсюда найти е?или сделать выражение по-ругому что комплилятор смог прочитать c=1/a d=1/b 1/e=c-d

Почему -1^i не считается, или в VBA это пишется по другому
Sub vvv() Dim i# For i = 0 To 8 Debug.Print -1 ^ i Next End Sub выдает все время -1

Как это сделать просто незнаю как назывваваеться эта штука или вложения или что подскажите кто может
Вот при мер не пойму как это зделать если б подсвечивалось название нашел бы http://s57.***********/i155/1003/ce/ba96f093c72d.gif

Интерполяция или как проще это сделать
Возник вопрос по реализации функции подобной екЦелевкой -'Тенденция' Вот сам вопрос существует таблица: 52,5 65 75 32...

Параллельные потоки или как это сделать
В общем проблема такова. Пишу програмку которая будет самостоятельно шастать по GUI веб-сайтов (диплом у меня такой, не спрашивайте). ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru