Página 1 de 1
Cómo poner un menú en un footer
Publicado: Jue May 19, 2011 9:27 pm
por Fredy
Hola a todos
Estoy intentando que al pulsar el botón izquierdo del ratón en el footer
de una columna del browse me aparezca un menú popup en el lugar donde tengo
el ratón, pero no hay manera, si utilizo los parámetros nposx nposy me lo
manda a la esquina del browse
¿alguna idea?
1 Saludico,
Fredy
Cómo poner un menú en un footer
Publicado: Jue May 19, 2011 9:47 pm
por jlalin
Fredy,
mira el método heredado ScreenToClient( @nPosX, @nPosY ).
Saludos,
José Lalín
Cómo poner un menú en un footer
Publicado: Jue May 19, 2011 10:30 pm
por Fredy
Hola!
Si, ese ya lo he mirado, pero es que hay manera de sacar un handle válido
para el footer
1 Saludico,
Fredy
Cómo poner un menú en un footer
Publicado: Jue May 19, 2011 10:49 pm
por jlalin
Fredy,
> Si, ese ya lo he mirado, pero es que hay manera de sacar un handle válido
> para el footer
El oFooter no es más que un objeto THeader así que si necesitas obtener su
manejador: oFooter:Handle
Saludos,
José Lalín
Cómo poner un menú en un footer
Publicado: Jue May 19, 2011 10:52 pm
por jlalin
Fredy,
otra cosa: TControl->TStdControl->THeader, así que con
oFooter:ClientToScreen() no necesitas pasarle el handle puesto que ya lo
obtiene el propio objeto.
Saludos,
José Lalín
Cómo poner un menú en un footer
Publicado: Jue May 19, 2011 11:20 pm
por Fredy
Donde pulso es un HeaderITem.
Desde el evento OnFooterClick que es el que estoy tratando, puedo llegar
a ClientToScreen mediante oSender:oFooter:oParent:ClientToScreen(), que sí
que me funciona, pero me da unas coordenadas que no corresponden.
El OnFooterClick me da como oSender un objeto TDBBrwColumn y oSender:oFooter
me da un objeto THeaderITem que hereda de TComponent por lo que para tener
un objeto THeader no me queda más remedio que oSender:oFooter:oParent y las
posiciones que me da creo que son las del THeader con lo cual el menú establece
las coordenadas con el footer de la primera columna.
1 Saludico,
Fredy
Cómo poner un menú en un footer
Publicado: Vie May 20, 2011 8:31 am
por jlalin
Fredy,
> El OnFooterClick me da como oSender un objeto TDBBrwColumn y
> oSender:oFooter me da un objeto THeaderITem que hereda de TComponent por lo
> que para tener un objeto THeader no me queda más remedio que
> oSender:oFooter:oParent y las posiciones que me da creo que son las del
> THeader con lo cual el menú establece las coordenadas con el footer de la
> primera columna.
Al saber el número de columna en el que haces click, puedes sumar los
anchos de los otros footer para calcular correctamente la posición
horizontal del click.
Saludos,
José Lalín
Cómo poner un menú en un footer
Publicado: Vie May 20, 2011 10:24 am
por ignacio
Fredy escribió el jue, 19 mayo 2011 21:27Hola a todos
Estoy intentando que al pulsar el botón izquierdo del ratón en el footer
de una columna del browse me aparezca un menú popup en el lugar donde tengo
el ratón, pero no hay manera, si utilizo los parámetros nposx nposy me lo
manda a la esquina del browse
¿alguna idea?
1 Saludico,
Fredy
Te incluyo con este mensaje un sencillo ejemplo.
Un saludo
Attached files fredy-1-0-0-0.zip (2.1 KB)Â
Cómo poner un menú en un footer
Publicado: Vie May 20, 2011 11:23 am
por Fredy
Hola,
Sí, eso es lo que buscaba.
¿Se puede hacer con el botón izquierdo?
1 Saludico,
Fredy
Cómo poner un menú en un footer
Publicado: Vie May 20, 2011 2:36 pm
por ignacio
Fredy escribió el vie, 20 mayo 2011 11:23Hola,
Sí, eso es lo que buscaba.
¿Se puede hacer con el botón izquierdo?
1 Saludico,
Fredy
Fredy,
Hemos añadido el soporte del método ShowPopupMenu() en la clase TBrwColumn, por lo que será tan sencillo como:
METHOD ArrayBrowse1Column1FooterClick( oSender, nFlags, nPosX, nPosY ) CLASS TForm1
RETURN oSender:ShowPopupMenu( ::oPopupMenu1, nPosX, nPosY )
Actualmente también lo puedes hacer de la siguiente forma:
oSender:oParent:oFooter:ClientToScreen( @nPosX, @nPosY )
oSender:oParent:ScreenToClient( @nPosX, @nPosY )
oSender:oParent:ShowPopupMenu( ::oPopupMenu1, nPosX, nPosY )
Pero existe un problema adicional (ya resuelto) por el cual nFlags se corresponde con nPosX y nPosY es nPosX. Ten en cuenta que si lo haces ahora de forma manual como te comentó fallará con la nueva actualización.
Un saludo