Problemas con el evento OnMouseDown de TImage
Hola a todos. Quisiera hacer una pregunta a ver si alguien me puede contestar. Antes que nada decir que solo soy un programador aficionado.
Me ocurre lo siguiente: estoy haciendo un programa en el que dibujo una línea de tiempos, similar a la de los programas de edición de vídeo y/o sonido, que sirve para introducir una serie de datos en el programa en forma gráfica, es decir, el usuario marca diversos puntos en la línea de tiempos que pasan al programa los parámetros de tiempo y nivel, algo como lo que se hace en los programas de edición de sonidos para determinar el volumen del sonido a lo largo del tiempo. Las marcas de nivel entran usando el evento OnMouseDown, que me da los parámetros de posición del puntero.
Dicha línea de tiempos debe poder extenderse hasta una hora de duración, que corresponde a 36000 pixeles de la imagen, ya que cada pixel corresponde a una décima de segundo en la línea de tiempos. También debo desplazar la línea de tiempos en horizontal, dentro de la ventana para poder verla en su totalidad y lo hago también, capturando la imagen en el punto donde se pulsa el botón izquierdo del ratón, dentro del evento OnMouseDown, y arrastrándola con el ratón junto con un panel contenedor.
Todo esto funciona sin problemas siempre que la imagen tenga menos de 32768 pixeles, pues, por alguna razón que desconozco, el evento OnMouseDown del TImage, no se produce si se pulsa más allá del pixel 32767 de la imagen. Esto se traduce en que solo puedo arrastrar la imagen, o introducir marcas en ella, si hago la operación pulsando con el botón izquierdo del ratón, antes del pixel 32768. No es un problema de código, sino que el evento no se genera (Lo he comprobado). En cambio el evento OnContextPopUp del TImage, que también lo utilizo para abrir un menú contextual, si se produce sin problemas, hasta el último pixel de la imagen.
¿Alguien sabe porque pasa esto? 32767 es el valor máximo de una variable de tipo SmallInt, pero yo no uso ninguna variable de este tipo en mi programa. Sospecho que el evento OnMouseDown del TImage, debe utilizar internamente, alguna variable de este tipo. ¿Alguien sabe algo de esto?, ¿Se podría corregir para que el evento OnMouseDown se produzca también a partir del pixel indicado, tal como lo hace el evento OnContextPopUp?
¡Gracias de antemano!
|