Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
102 / 39 / 0
Регистрация: 16.09.2014
Сообщений: 429

Циклическая смена чисел на Caption

04.12.2024, 07:25. Показов 1764. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Button от The Trick-а. Поддерживается MouseWheel. При MouseWheel-е на Caption отображается число от 0 до 100 с шагом 1, в зависимости от направления вращения ролика мыши (dir = +-120) увеличивается или уменьшается в интервале 0-100:
Visual Basic
1
2
3
4
5
6
7
Private Sub cmdEvenlyCountV_MouseWheel(dir As Long, button As Integer, shift As Integer, x As Single, y As Single)
    intTMP = Val(cmdEvenlyCountV.Caption)
    intTMP = intTMP + (dir / Abs(dir)) прибавляем или отнимаем 1 в зависимости от направления вращения ролика
    If intTMP > 100 Then intTMP = 0 ’ зацикливаем
    If intTMP < 0 Then intTMP = 100 ’ зацикливаем
    cmdEvenlyCountV.Caption = intTMP
End Sub
С этим проблем нет, но вот дальше:
при каждом MouseDown-е число увеличивается/уменьшается на 20 в интервале 0-100:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub cmdEvenlyCountV_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)
    '
    intTMP = Val(cmdEvenlyCountV.Caption)
    '
    Select Case button
        Case 1
            intTMP = intTMP + 20
 
        Case 2
            intTMP = intTMP - 20
 
    End Select
    '
    If intTMP > 100 Then intTMP = 0 ' зацикливаем
    If intTMP < 0 Then intTMP = 100 ' зацикливаем
 
    cmdEvenlyCountV.Caption = intTMP
    '
End Sub
Теперь, собственно, в чём мой затык:
Сейчас, какое бы число не было на Caption, при MouseDown-е к нему прибавляется/отнимается 20, например было 53, кликнули левой клавишей - стало 73, правой – стало 33, а мне надо чтобы значение приводилось к ближайшему реперному значению – 0, 20, 40, 60, 80, 100, при клике левой к ближайшему большему значению, при клике правой – к меньшему, то есть при 53 должно становиться или 60 или 40. И вот потратил весь вчерашний день, но так и не хватило мозгов придумать как реализовать такую в общем-то несложную логику.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.12.2024, 07:25
Ответы с готовыми решениями:

Циклическая смена даты
Помогите пожалуйста с написанием цикла в котором меняется дата на день вперед, а по достижению конца месяца, меняет месяц и идет новый счет...

Циклическая смена картинок
Друзья, помогите реализовать JavaScript циклической смены картинок, кучу способов перепробовал, не получается. Задача такая, чтобы...

Циклическая смена картинок
Друзья, помогите реализовать JavaScript циклической смены картинок, кучу способов перепробовал, не получается. Задача такая, чтобы...

26
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
09.12.2024, 13:28
Студворк — интернет-сервис помощи студентам
105 как-то некрасиво, проще мне кажется LowerLimit = 0, UpperLimit = 100
0
102 / 39 / 0
Регистрация: 16.09.2014
Сообщений: 429
09.12.2024, 13:56  [ТС]
Mikle Quits БОЛЬШОЕ спасибо !!! ЛЕПОТА!!! Ща попробую.
===
HackerVlad это все зависист от ситуации - вот, например, в данном случае LowerLimit = 0, UpperLimit = 100 будут определять на сколько равных частей по X и по Y будет разделена большая картинка в режиме AutoCut, то есть пользователь задаёт число -прога делит картинку, а поскольку есть и режим UserCut (собственно, основной) то, в режиме AutoCut, задавать числа меньшие ну, скажем, 5-ти, как бы бессмысленно - такое деление лучше делать в "ручном" режиме.
Аналогично, в режиме деления по размеру, а не по количеству - эти параметры будут определять в пикселях ширину и высоту "кусков" на которые разделяется картинка, прямоугольники размером меньше 10 пикселей тоже (по-моему) бессмысленны
1
102 / 39 / 0
Регистрация: 16.09.2014
Сообщений: 429
09.12.2024, 20:02  [ТС]
Mikle Quits всё-таки это не совсем то, что я хотел бы, понимаете, вот пользователь задаёт этими параметрами или количество "кусков" на которое разделится картинка, или размер (ширину или высоту) "кусков", скажем ширина ограничена 999 пикс, количество - 100. Основное управление вводом числа делается MouseWheel-ом с шагом в 1, а этот код чисто для удобства пользователя, для "скачков" по диапазону, скажем нужна пользователю ширина в 800 пикселей - неудобно же столько крутить ролик мышки, поэтому я хочу ввести в управление эти скачки, при простом MouseDown-е скачки скажем на 20, а если одновременно с нажатой клавишей CTRL, то ваще скачки на 50 или даже 100. Заболтался... Одним словом 5-105 как бы не соответствует задумке моей. Поэтому я и просил (если возможно) создать код с вариабельным LowerLimit, UpperLimit и UpDwnStep-ом
0
 Аватар для Mikle Quits
785 / 308 / 17
Регистрация: 21.01.2023
Сообщений: 529
09.12.2024, 20:49
Цитата Сообщение от giaber Посмотреть сообщение
Поэтому я и просил (если возможно) создать код с вариабельным LowerLimit, UpperLimit и UpDwnStep-ом
Создать можно, но в первом сообщении написано:
Цитата Сообщение от giaber Посмотреть сообщение
надо чтобы значение приводилось к ближайшему реперному значению
То есть не просто скачки на UpDwnStep вперёд-назад, а по реперным точкам. Но, если задать диапазон, где UpperLimit - LowerLimit не делится на UpDwnStep, получим один кусок меньшего размера. Это устраивает?
1
102 / 39 / 0
Регистрация: 16.09.2014
Сообщений: 429
09.12.2024, 21:05  [ТС]
Конечно устраивает!
0
 Аватар для Mikle Quits
785 / 308 / 17
Регистрация: 21.01.2023
Сообщений: 529
10.12.2024, 10:21
Лучший ответ Сообщение было отмечено HackerVlad как решение

Решение

Если писать универсальную функцию, то там уже не должно быть Button = 1, туда нужно передавать направление вперёд или назад по сетке.
На счёт куска меньшего размера, я подумал, что правильнее, чтобы и первый, и последний куски могли быть такими, зато сетка привязана к значениям, кратным шагу.
Универсальная функция должна корректно обрабатывать входящие значения вне диапазона.
Такую функцию тоже можно написать в одну строку, но это уже излишества, получится запутанно и непонятно, вот примерно то, что я считаю оптимальным:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Function FixToGrid(ByVal V As Long, ByVal Min As Long, ByVal Max As Long, ByVal Stp As Long, ByVal Up As Boolean) As Long
  If V < Min + 1 + (Up) Or V > Max + Up Then
    If Up Then FixToGrid = Min Else FixToGrid = Max
  Else
    V = ((V - 1) \ Stp) * Stp * -(Not Up) + ((V + Stp) \ Stp) * Stp * -Up
    If V < Min Then
      V = Min
    ElseIf V > Max Then
      V = Max
    End If
    FixToGrid = V
  End If
End Function
И проверочный код. Мышью выбираем начальное значение, сразу видим значения функции вперёд и назад по сетке, с помощью ЛКМ и ПКМ выставляем границы диапазона.
Вложения
Тип файла: zip FixToGrid.zip (1.8 Кб, 2 просмотров)
2
102 / 39 / 0
Регистрация: 16.09.2014
Сообщений: 429
10.12.2024, 18:34  [ТС]
Mikle Quits ! Я уж и не знаю какие слова подобрать для благодарности! Дай Бог вам здоровья и успехов во всём за вашу отзывчивость к чужим проблемам!
Разжевали, положили в рот, погладили по головке и колыбельную спели! Примерно такая аналогия от двух страниц этой темы!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.12.2024, 18:34

Смена Caption при нажатие Button?
Здравствуйте ! Имеется - Panel1 и Button1 Нужно чтобы при нажатие Button1(скрыть) - Panel1 скрылась , Button1 поменяло имя (показать)...

Циклическая смена атрибутов символов
Доброго времени суток! Ниже привел код программы в котором надо добавить функцию циклической смены атрибутов символов строки. Подтолкните...

Циклическая смена атрибутов символов
Доброго времени суток! Необходимо создать две программы на tasm. К сожалению сам я в низкоуровневых языках вообще никак плюс время...

Циклическая смена изображений по клику
Подскажите, пожалуйста, как сделать, чтобы моя картинка менялась по щелчку на одну из кнопок. Допустим, у меня 5 картинок имеется. Нажимаю...

[SFML] Циклическая смена цвета
Добрый вечер, есть такое задание, построить шестиугольник, цвета секторов которого будут менять циклически. Циклов три, т е сначала все...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли Введение: Экологический рынок как игра с нулевой суммой Традиционная экология долгое время. . .
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ Введение: Синдром «цифрового учебника» Современные большие языковые модели (LLM) обладают колоссальным. . .
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос. Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех. А широколиственный лес тоже имеет самую крутую биомассу. То почему не возникло их симбиоза? Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru