Ir al contenido


Foto

problemas con el componente JvxpBar y su align?


  • Por favor identifícate para responder
8 respuestas en este tema

#1 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes

Escrito 29 abril 2015 - 03:24

Despues de bregar y bregar con este dichoso componente, he conseguido encontrar la opción que te permite subir los componentes inferiores si recoges el primero como así lo hace WXP. Con la propiedad Align = AkTop; Pero claro cuando hago esto el componente se alarga de izquierda a derecha ocupando todo el form2 a lo ancho.

 

No consigo redimensionar el JvxpBar1 y el JvxpBar2 a su estado original y con la propiedad Align=AkTop para que me haga el efecto indicado, ya que si lo cambio deja de hacerlo. He jugado con los valores de Archor y nada tampoco.

 

Alguna sugerencia con este componente.

 

Aparte de eso la fecha que hace el scroll del componente ni aparece el circulo blanco que si aparece en otras imagenes, solo me aparece las dos flechas  ">>" sin el circulo en medio.

 

Un saludo

 


  • 0

#2 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 29 abril 2015 - 04:09

La propiedad Align siempre trabaja así: agarra el componente y lo "estira" hasta ocupar el alto/ancho del contenedor "padre" según se lo alinea a la izquierd/derecha o arriba/abajo.

En ocasiones la propiedad Align y Anchors "entran en conflicto". Cambio en una de ellas puede alterar a la otra. Que yo recuerde tiene prioridad de ejecución el valor de Align por sobre el de Anchors.

 

Si no interpreto mal tu deseas que tus JvXPBar estén a la izquierda con un ancho determinado, tal como se lo ve siempre en XP.

Para eso, aprovecha el poder del Panel, que actúa de contenedor.15.gif :

1) Coloca un panel en el form y establece en su propiedad Aling el valor alleft.

2) Dale ahora el ancho/grosor que esperar que tenga tanto el panel como tus JvXPBar.

3) Opcional. Dale color, borra el texto panel, etc.

4) Coloca tu JvXPBar.

5) Establece en la propiedad Aling del JvXPBar el valor altop.

 

Repite 4 y 5 por tantos JvXPBar que necesites desees.

 

Y listo.

 

Truco: Cuando tengas dificultades para alinear controles usa Paneles. Sirven muy bien para distribuir controles alineados. 27.gif  Juega con alinear paneles de diferentes formas. Luego pon en éstos los controles que quieras.

 

Saludos,


  • 0

#3 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes

Escrito 29 abril 2015 - 11:47

Me lo imaginaba Delphius que habría que tirar de paneles,  pensaba que esto se podía arreglar sin poner tantos paneles en el

form.

 

Tomaré nota de tu comentario y voy probar como queda.

 

Un saludo


  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 30 abril 2015 - 08:24

No te hagas tanta drama por poner tantos paneles. Son opcionales. Pero pueden ayudar mucho. En diseño de interfaces, es más de arte e ingenio que otra cosa. Yo no soy muy artista en diseñar formularios asi que no me amigo a dar consejos de como debiera lucir un form.

 

La otra posibilidad, y si es que la barra va a ser muy extensa y superar el alto del formulario es que dipongas en lugar del T¨Panel un TScrollBox. El TScrollBox de forma automática mostrará la barra vertical según se necesite.

 

Saludos,


  • 0

#5 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes

Escrito 30 abril 2015 - 02:50

Gracias Delphi, pues he seguido los pasos que indicabas arriba y  he conseguido cuadrar los dos JvXP con el efecto que buscado, pero no se si es por diseño del componente o por mala configuración aún del mismo por mi parte, cuando los encajo en un Tpanel con la propiedad align=akTop aunque los haya separado algo uno debajo del otro, automaticamente se juntan uno debajo del otro tanto que apenas se dejan espacio, y no me queda otra que volvera a quitarle la propiedad align=akTop y poner Custom para bajar el JvBar2 del primero un poco y dejar separación ya que queda mal tan juntos (porque sino no me deja bajarlos al tenerlo en akTop) y repito la operación de dejar nuevamente los dos paneles align=top  y compilo y me vuelve a dejar muy junto uno del otro.

 

No se si es del propio componente, como "chapuza" he intentado dejar cada JvXP en paneles separados, pero con eso el efecto de recogerse el panel inferior sobre el superior lo pierde.

 

No se a que es debido.

 

Un saludo


  • 0

#6 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 30 abril 2015 - 04:10

No dispongo de XP como para verificarlo. Pero al menos en W8.1 con las propiedades por defecto, y ubicando unos cuantos en un panel y poniendoles unos cuantos items para probar no veo que se junten mucho. Es más veo un espacio más que cómodo entre ellos, para mi gusto. Tanto en tiempo de ejecución como de diseño.

Si quieres dar un poco más de espacio entre ellos puedes disponer de un TBevel. Es decir:

 

TJvXPBar

TBevel

TJvXPBar

...

 

al TBevel le estableces el valor bsSpacer en la propiedad Shape y eso simulará un espacio.

 

Saludos,


  • 0

#7 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes

Escrito 01 mayo 2015 - 04:24

Pues mi gozo en un poco Delphius, como bien me acosejaste, he insertado un TBevel, entre ambos, y si funciona pero debo quitar  al JvXPBar2 la propiedad align= aktop perdiendo con ello el efecto deseado, porque si no lo hago, el componente se vuelve a juntar bastante con el superior, es decir

que le da igual lo que insertes en medio porque no lo respeta con la align=aktop.

 

Como veis, cosas aparentemente tan sencillas me vuelven loco y que sin duda no deberían dar el más mínimo problema siempre, aunque en estos casos no consigo descifrar si es por el componente en sí de Lazarus, porque el de Delphi según he visto queda perfecto, o por mi mala configuración del mismo. No desisto ello me lleva a aprender cosas nuevas por muy insignificantes que puedan ser.

 

Como no dispongo de más componentes iguales, no tengo alternativas.

 

Un saludo


  • 0

#8 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 01 mayo 2015 - 08:50

Se me olvidó decir que tanto los bevels como los JvXPBars deben estar con el valor alTop en su propiedad Align y deben colocarse en orden. Es decir primero un JvXPBar, luego un Bevel. Y repetir esto dependiendo de la cantidad que dispongas.

En ningún momento he tocado la propiedad Anchors ha mano, dejo que ésta se adapte según la alineación de forma automática. Y se me hace que allí es donde tienes el problema. Noto que hablas de aktop. y eso vale para anchors. Yo simplemente me he valido de Align. Nota que al momento de establecer el valor alTop en Align a cada JvXPBar y/o Bevel su propiedad Anchors se modifica con el siguiente valor {akButton = false, akLeft = true, akRigth = true, akTop = true} para adaptarse al posicionamiento dentro del panel.

 

Dejando todas las demás propiedades por defecto como vienen, no hizo falta de más.

 

Prueba esto en un proyecto desde cero. Tiene que salirte.

 

Saludos,


  • 0

#9 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes

Escrito 01 mayo 2015 - 11:06

Pues como siempre tu estimable ayuda Delphius he conseguido dominar este dichoso componente. Era por falta de ponerle top a la propiedad del Tbevel. Pero me pregunta, realmente para separarlos más, hay que hacer esto? No entiendo como dejarle espacio de separación entre ambos sin Tbevel se juntaba dejando muy poca separación...Me quedo con la duda si esto se hubiera hecho en Delphi sucedería lo mismo.

 

Un saludo y no me canso de daros las gracias y seguiré dándolas!


  • 1




IP.Board spam blocked by CleanTalk.