2009-08-14 17 views
6

De vez en cuando necesito una GUI para establecer rangos numéricos, pero hasta ahora nunca he encontrado ningún componente que lo haga bien.GUI para establecer rangos numéricos en Delphi

he intentado las siguientes:

  • 2 TTrackbars: 1 para min, 1 para max

  • 2 TTackbars: 1 para min, 1 para la gama de

  • 2 TSpinEdit controles para escribir los números manualmente

  • ttrackbar with range 1 TTrackbar control, con un li botón de control para cambiar entre modo mínimo y modo máximo. En el modo mínimo configuré selStart y en modo máximo establecí selEnd (con ShowSelRange establecido en verdadero).

La mayoría de las opciones toman más espacio en la pantalla de lo que quisiera, y no son intuitivas.

Idealmente, me gustaría algo que funcione como la barra de desplazamiento en Sony ACID. Puede hacer clic y arrastrar 3 puntos diferentes a los valores mínimo, máximo, o ambos:

Awesome mspaint drawing

¿Hay algún componente gratuito disponible para establecer un rango, o puede algo similar hacerse mediante el uso fuera de la -box componentes de VCL creativamente?


actualización

He modificado TMkRangeSlider para satisfacer mis necesidades. Funciona como un encanto ahora. Envié el componente modificado y la demo al autor original.

TMkRangeSlider 1.1

Respuesta

5

¿Qué tal algo como Range Slider, by Michael Kochiashvili. Es gratuito con fuente, escrito para Delphi 5 y viene con una demo:

alt text http://www.kochini.com/dcomp/rs/ttrian.jpg

No se moverá mínimo y máximo al mismo tiempo, pero ya que tienes la fuente, es probable que podría añadir esa funcionalidad si realmente lo necesitas

+0

Genial, nunca lo había visto antes. Lo acabo de descargar, y jugaré con él. –

+0

He tomado su consejo tomando TMkRangeSlider y modificándolo. Hace exactamente lo que estaba buscando ahora. ¡Gracias! –

1

El uso de un TScrollBox estándar, es técnicamente posible hacer algo de tocar el violín Manual de sus propiedades PageSize y de posición mientras se arrastra el dedo alrededor (ScrollCode = scTrack en su caso OnScroll) para simular el tipo de interfaz de usuario que apareciste en la captura de pantalla de ACID. El problema es que 1) no puede dibujar un TScrollBar por su propietario para agregar las líneas de arrastre, y 2) no hay una manera directa de determinar qué parte del pulgar el usuario mantiene presionado el mouse (los extremos contra el medio)) A menos que pueda obtener cálculos bastante fiables para determinar los desplazamientos de píxeles de los bordes izquierdo y derecho del pulgar en función de la posición actual y del tamaño de página en relación con el rectángulo general del cliente, entonces probablemente sea mejor que simplemente escriba su propio componente en su lugar, y luego puede hacer que se vea y se comporte de la forma que quiera.

+0

Muy bien, gracias por el consejo. Es extraño que Delphi no tenga nada como esto, porque el establecimiento de rangos numéricos es algo que tengo que hacer todo el tiempo, en todo tipo de aplicaciones ... –

+0

El tipo de IU que está describiendo no es estándar. Es por eso que TScrollBox no lo admite de forma nativa (porque el sistema operativo subyacente en sí mismo no lo admite de forma nativa) –

Cuestiones relacionadas