Графический интерфейс для установки числовых диапазонов в Delphi

Время от времени мне нужен графический интерфейс для установки числовых диапазонов , но до сих пор я так и не нашел ни одного компонента, который бы справлялся с этим.

Я попытался сделать следующее:

  • 2 TTrackbars: 1 для мин, 1 для макс

  • 2 TTackbars: 1 для мин, 1 для диапазона

  • 2 TSpinEdit контролирует ввод чисел вручную

  • ttrackbar with range 1 панель управления TTrackbar с маленькой кнопкой для переключения между минимальным и максимальным режимами. В минимальном режиме я устанавливаю selStart, а в максимальном режиме я устанавливаю selEnd (с ShowSelRange, установленным в true).

Большинство параметров занимают больше экрана, чем хотелось бы, и они не интуитивно понятны.

В идеале мне бы хотелось что-то, что работает как полоса прокрутки в Sony ACID. Вы можете щелкнуть и перетащить 3 разных точки в минимальную, максимальную или обе точки:

Потрясающий рисунок mspaint

Есть ли какой-либо свободный компонент, доступный для установки диапазона, или можно что-то подобное сделать творчески, используя готовые VCL-компоненты?


Update

Я изменил TMkRangeSlider в соответствии со своими потребностями. Теперь это работает как шарм. Я отправил измененный компонент и демонстрационную версию оригинальному автору.

TMkRangeSlider 1.1

7 голосов | спросил Wouter van Nifterick 15 AM00000030000000531 2009, 03:49:05

2 ответа


0

Как насчет чего-то вроде Ползунка Майкла Кочиашвили . Это бесплатная программа с исходным кодом, написанная для Delphi 5 и поставляемая с демонстрацией:

альтернативный текст http://www.kochini.com/dcomp/rs/ttrian. JPG

Он не будет перемещать мин и макс одновременно, но, поскольку у вас есть источник, вы, вероятно, можете добавить эту функциональность, если вам это действительно нужно.

ответил lkessler 15 AM00000060000002831 2009, 06:07:28
0

Используя стандартный TScrollBox, технически возможно выполнить ручное управление его свойствами PageSize и Position, перетаскивая его большой палец (ScrollCode = scTrack в его событии OnScroll), чтобы имитировать тип пользовательского интерфейса, который вы показали на скриншоте ACID. , Проблема в том, что 1) вы не можете нарисовать владельцем TScrollBar для добавления линий перетаскивания, и 2) нет прямого способа определить, на какой части большого пальца пользователь удерживает мышь (концы по сравнению с серединой) ). Если вы не можете придумать достаточно надежных вычислений для определения смещения пикселей левого и правого краев большого пальца на основе текущей позиции и размера страницы по отношению к общему клиентскому прямоугольнику, то вам, вероятно, лучше всего написать свою собственную компонент, а затем вы можете заставить его выглядеть и вести себя так, как вы хотите.

ответил Remy Lebeau 15 AM00000050000004031 2009, 05:45:40

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132