In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Para Jose F. Gimenez ->De vuelta con el TStatusPanel

Foro público de Xailer en español
Responder
proveedores
Mensajes: 37
Registrado: Jue Mar 23, 2006 5:34 am

Para Jose F. Gimenez ->De vuelta con el TStatusPanel

Mensaje por proveedores »

Hola de nuevo :
Como creo que no he explicado de forma suficientemente clara el
problema, voy a reintentarlo. Espero conseguirlo esta vez.
Prescindo de mi propio código y utilizo el proyecto Menús que viene
de ejemplo con la PR7., de esta manera será más fácil seguirme, creo...
Si nos fijamos en la Barra de Tareas ((TStatusBar) vemos que dispone
de 3 paneles
de izquierda a derecha..
en el primero reservado para que se muestre el mensaje correspondiente
a la opción de menú
En el segundo se muestra la fecha del sistema mediante la propiedad
nType := sbDATE
En el tercero vemos la hora del sistema adjudicando nType := sbTIME
En todos y cada uno de estos paneles damos un valor determinado a la
propiedad nWidth. 300,75,100 son los valores otorgados en el ejemplo.
Mientras estamos en el Editor de código podemos ver perfectamente situados
estos datos. A la izquierda el Mensaje, a continuación la fecha y por último
y totalmente a la derecha la hora.
Compilamos, enlazamos y ejecutamos el proyecto.
Disponemos ya de la ventana inicial de nuestra aplicación tal y como la
veíamos en el editor de código.
Ahora viene el tema.....
Si MAXIMIZAMOS o ensanchamos la ventana desplazando el margen
derecho, tanto la fecha como la hora siguen permaneciendo en el mismo lugar,
no se desplazan para adaptarse al nuevo tamaño, como haría cualquier otro
control sinó que se permanecen estáticos en el mismo punto donde fueron
pintados inicialmente.y no se adaptan al nuevo tamaño del formulário.
Lo que yo pretendo es corregir esto y para ello modificaba el ancho
(nWidth) del mensaje de menú pero en vez de desplazar sbDATE y sbTIME estos
desaparecen.
Si os fijáis podréis ver también en tiempo de Edición (en el
TStatusBar podreis marcar indistintamente los 3 paneles y ver el contorno
(color azul) que los delimita pero observar que no podréis modificar su
tamaño, únicamente modificando el del panel situado más a la izquierda e
incluso no se puede eliminar ninguno porque no son seleccionadles, tan es
así que si se se pincha sobre uno de ello y se elige "Eliminar" los que
borra el la TStatus Bar completa.
Estoy empezando usar Xailer y lógicamente debo no haber entendido
correctamente el uso de los paneles en la TStatusBar, pero de eso mismo
trato, de APRENDER el uso correcto y por eso me dirijo al Foro pidiendo
ayuda.
En definitiva, ¿Cómo hacer para que la fecha y la hora estén SIEMPRE
situados lo más a la derecha posible del Formulario?. Independientemente
claro está del tamaño que este tenga.
Perdonarme por la extensión y espero que esta vez sí haya sabido
explicarme comprensiblemente.
Saludos
José Ramón Truchado
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Para Jose F. Gimenez ->De vuelta con el TStatusPanel

Mensaje por jfgimenez »

José Ramón,
> Como creo que no he explicado de forma suficientemente clara el
> problema, voy a reintentarlo. Espero conseguirlo esta vez.
Creo que sí te entendí. No obstante voy a intentar yo también explicarme
mejor.
> Si MAXIMIZAMOS o ensanchamos la ventana desplazando el margen
> derecho, tanto la fecha como la hora siguen permaneciendo en el mismo
> lugar, no se desplazan para adaptarse al nuevo tamaño, como haría
> cualquier otro control sinó que se permanecen estáticos en el mismo punto
> donde fueron pintados inicialmente.y no se adaptan al nuevo tamaño del
> formulário.
Exactamente! Y este es el comportamiento normal de windows. Si he entendido
bien lo que tú quieres, sólo tienes que escribir el evento OnSize del
formulario (usa el mismo ejemplo menus de la PR7). Para esto tienes que
seleccionar el formulario en el inspector de objetos, y en la pestaña de
eventos haz doble click en la casilla del evento OnSize. Cuando te aparezca
el editor de código con el método para el evento, escribe lo siguiente (las
3 líneas que hay dentro):
//---------------------------------------------------------- --------------------
METHOD FormSize( oSender, nSizeType, nClientWidth, nClientHeight ) CLASS
TForm1
IF ::oStatusBar1 != Nil
::oStatusBar1:aItems[1]:nWidth := nClientWidth - 142
ENDIF
RETURN Nil
//---------------------------------------------------------- --------------------
Pulsa F9 para compilar y ejecutar el proyecto y pruébalo. Verás que ahora sí
hace lo que tú quieres.
> Si os fijáis podréis ver también en tiempo de Edición (en el
> TStatusBar podreis marcar indistintamente los 3 paneles y ver el contorno
> (color azul) que los delimita pero observar que no podréis modificar su
> tamaño, únicamente modificando el del panel situado más a la izquierda e
> incluso no se puede eliminar ninguno porque no son seleccionadles, tan es
> así que si se se pincha sobre uno de ello y se elige "Eliminar" los que
> borra el la TStatus Bar completa.
Para eliminar un panel tienes que pulsar con el botón derecho sobre el panel
y seleccionar la opción "Eliminar panel".
> Estoy empezando usar Xailer y lógicamente debo no haber entendido
> correctamente el uso de los paneles en la TStatusBar, pero de eso mismo
> trato, de APRENDER el uso correcto y por eso me dirijo al Foro pidiendo
> ayuda.
Y haces bien. Y nosotros estaremos aquí para contestar cualquier duda ;-)
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
proveedores
Mensajes: 37
Registrado: Jue Mar 23, 2006 5:34 am

Para Jose F. Gimenez ->De vuelta con el TStatusPanel

Mensaje por proveedores »

Agradecidísimo Jose F. : Resuelto el tema, aunque tengo el problema de que
cuando se pincha sobre el menú y aparece el mensaje correspondiente se me
borran la fecha y la hora. Supongo que se deberá a que automáticamente se
modifica la longitud del panel correspondiente en la TStatusBar. La verdad
es que aunque habeis creado un sistema de menús facilísimo de utilizar, el
no disponer por el momento de ayuda alguna al respecto puede generar a los
novatos como yo, estos conflictos. Si puedes indicarme como resolverlo te lo
agradecería.
El metodo quedó como sigue :
METHOD ResituaTodo( oSender, nSizeType, nClientWidth, nClientHeight ) CLASS
TForm1
// Recolocar los Paneles --> de izquierda a derecha
IF ::oStBar1 != Nil
::oStBar1:aItems[1]:nWidth := nClientWidth - 145 // Modifica Longitud
Panel1º
ENDIF
// Recolocar el logo central --> Lo deja centrado en la Zona Cliente del
Formulário al modificar las dimensiones
IF ::oImage1 != Nil
::oImage1:nTop := nClientHeight/2 - ::oImage1:nHeight/2
::oImage1:nLeft := nClientWidth/2 - ::oImage1:nWidth/2
EndIf
EndIf
Saludos
José Ramón Truchado
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:442587f4$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> José Ramón,
>
> Creo que sí te entendí. No obstante voy a intentar yo también explicarme
> mejor.
>
>
> Exactamente! Y este es el comportamiento normal de windows. Si he
> entendido
> bien lo que tú quieres, sólo tienes que escribir el evento OnSize del
> formulario (usa el mismo ejemplo menus de la PR7). Para esto tienes que
> seleccionar el formulario en el inspector de objetos, y en la pestaña de
> eventos haz doble click en la casilla del evento OnSize. Cuando te
> aparezca
> el editor de código con el método para el evento, escribe lo siguiente
> (las
> 3 líneas que hay dentro):
>
> //---------------------------------------------------------- --------------------
>
> METHOD FormSize( oSender, nSizeType, nClientWidth, nClientHeight ) CLASS
> TForm1
>
> IF ::oStatusBar1 != Nil
> ::oStatusBar1:aItems[1]:nWidth := nClientWidth - 142
> ENDIF
>
> RETURN Nil
>
> //---------------------------------------------------------- --------------------
>
> Pulsa F9 para compilar y ejecutar el proyecto y pruébalo. Verás que ahora
> sí
> hace lo que tú quieres.
>
>
> Para eliminar un panel tienes que pulsar con el botón derecho sobre el
> panel
> y seleccionar la opción "Eliminar panel".
>
>
>> Estoy empezando usar Xailer y lógicamente debo no haber entendido
>> correctamente el uso de los paneles en la TStatusBar, pero de eso mismo
>> trato, de APRENDER el uso correcto y por eso me dirijo al Foro pidiendo
>> ayuda.
>
> Y haces bien. Y nosotros estaremos aquí para contestar cualquier duda ;-)
>
> --
> Un saludo,
>
> José F. Giménez
>
>
Responder