Página 1 de 1

Re: OnHeaderOver

Publicado: Dom Ago 24, 2008 8:42 pm
por jose.luis
Hola Toni,
"Toni Sales" <toni.sales@gmail.com> escribió en el mensaje
news:48ad471e$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Ignacio/Jose
> ¿Existe este evento en un TdbBrowse?
>
> Necesito reconocer cuando al realizar un Drag sobre un browse el cursor
> está situado sobre el Header del mismo para realizar un GoUp() desde el
> evento OnDragOver.
>
Creo que si lo que quieres es que el browse vaya bajando mientras el ratón
está por encima del browse podrías hacer lo siguiente:
En el momento de iniciar el proceso del drag+drop (normalmente en el browse)
capturas los movimientos del ratón con SetCapture(oSendeR:Handle). Después
utiliza el envento del dbbrowse:onMouseMove. Este evento te devuelve las
coordenadas del ratón (en al ayuda no queda claro si cliente o no).
Suponiendo que las coordenadas son sobrel area cliente vas verificando que
sean negativas (entonces es que estás más arriba del browse) y empiezas a
hacer oSendeR:goup() en el intervalo de coordenadas que te interese (por
ejemplo, cada 50 pixeles). Cuando se cancela el proceso del drag+drop
deberás liberar el ratón con ReleaseCapture().
Espero que te sea de utilidad.
Saludos,
José Luis Capel

Re: OnHeaderOver

Publicado: Lun Ago 25, 2008 2:14 pm
por jfgimenez
José Luis, Toni,
> En el momento de iniciar el proceso del drag+drop (normalmente en el
> browse) capturas los movimientos del ratón con SetCapture(oSendeR:Handle).
> Después utiliza el envento del dbbrowse:onMouseMove. Este evento te
> devuelve las coordenadas del ratón (en al ayuda no queda claro si cliente
> o no). Suponiendo que las coordenadas son sobrel area cliente vas
> verificando que sean negativas (entonces es que estás más arriba del
> browse) y empiezas a hacer oSendeR:goup() en el intervalo de coordenadas
> que te interese (por ejemplo, cada 50 pixeles). Cuando se cancela el
> proceso del drag+drop deberás liberar el ratón con ReleaseCapture().
En principo esta técnica parece correcta, salvo por que no hay que llamar ni
a SetCapture() ni a ReleaseCapture(), ya que es Xailer quién lo hace durante
el proceso de drag&drop. Por otro lado, el evento OnMouseMove se va a
recibir aunque el puntero esté sobre otro control, ya que el ratón está
'capturado', lo que significa que como bien dice José Luis, si la coordenada
vertical es negativa es que el puntero está por encima. Pero ojo, el header
está dentro del browse, no por encima; tenedlo en cuenta.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info