Ir al contenido


Foto

como lanzar un menu vertical en Lazarus?


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

#41 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes

Escrito 05 enero 2016 - 11:45

Aquí el fichero adjunto.

Archivos adjuntos


  • 0

#42 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 mensajes
  • LocationMisiones, Argentina

Escrito 08 enero 2016 - 10:27

No pude leer todo el hilo, pero Escafandra publicó hace un tiempo un componente de botón mejorado que cambia al ser señalado. Por mi parte también compartí un código de botón, días después.

Es fácil agrupar estos compoentes manteniendo su funcionalidad de "mostrarse señalados".

Te recomiendo que busques estos componentes y les hagas algunas modificaciones.

 

Saludos.


  • 0

#43 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 08 enero 2016 - 10:49

No pude leer todo el hilo, pero Escafandra publicó hace un tiempo un componente de botón mejorado que cambia al ser señalado. Por mi parte también compartí un código de botón, días después.

Es fácil agrupar estos compoentes manteniendo su funcionalidad de "mostrarse señalados".

Te recomiendo que busques estos componentes y les hagas algunas modificaciones.

 

Saludos.

 

Recuerdo vagamente ambos temas, pero yo no me animé a comentarlo por las dudas que ese código no fuera tan aplicable al caso de Lazarus.

 

Saludos,


  • 0

#44 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes

Escrito 08 enero 2016 - 12:04

Gracias Cram, lo buscaré para ver lo que comentas. Pero sabe alguien porque hace ese efecto en la foto (fotoBGRA.bmp) que indico arriba. Será defecto del componente? o ese efecto me lo provoca en ejecución a mi particularmente? ya no se que pensar, viendo que en el caso anterior...

 

Un saludo


  • 0

#45 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 08 enero 2016 - 12:27

Dopper recién veo la última imagen que subiste. Lo que yo te recomiendo es que si vas a poner un BCPanel y si éste va a contener controles es setear en la propiedad BorderBCStyle el valor bpsBorder y en general, para el Panel tradicional jugar con las propiedades BevelInner y BevelOuter para que no muestre bordes. Cuestión estética más que nada.

Esto es para que sean los propios controles que disponemos los que den el bordeado, y de ese modo quizá elimines ese efecto que te pone en griseado en el medio.

 

No creo que sea cosa de los BGRA Controls, o de CT ni de Lazarus. Se me hace que ya es cosa de Windows, he visto ese efecto grisaseo parcial sobre un borde en algunas ocasiones cuando muevo rápido algunos controles o  juego con las alineaciones en tiempo de diseño. Pero en tiempo de ejecución la verdad es que no presté atención como para ver si se produce o no.

Los BGRA Controls son componentes ya bastante probados, aunque siguen mejorándose. En cualquier componente puedes correr el riesgo de que algo no ande 100% perfecto... y eso puede suceder en cualquier entorno, no es cosa de que porque es Lazarus, en Delphi y otros lenguajes también se les quema la leche también.

 

Lo del fondo en negro por el ícono no sabría decir que puede ser ¿En diseño también lo hace? ¿O sólo en ejecución? ¿Será que por casualidad dejaste algún color, negro en concreto, para algún gradiente, iluminación, etc? Hay muchas cosas por ver... y yo no soy el mejor para saberte responder por esta suite. Cuando yo hice la prueba con el BGRAControls y te mostré el bordeado no he probado que pasa si uno le pone íconos. ¿La imágen es un .ico? ¿La idea es que algún color de fondo de la imagen actúa de transparente? ¿La imagen original tiene ese color de fondo?

Nota en como surgen más preguntas, y con todo respeto: no nos brindas mayores detalles como para eliminar variables y poder ver por donde apuntar. Debes ser muy detallista, y descriptivo. ¿Que propiedades has configurado? ¿Que valor tienen? ¿Que pasos aplicaste? ¿Tienes por casualidad algún código para los eventos del control, ya sea del frame o del botón?

 

Acabo de hacer una sencilla prueba, similar a la del bordeado que hice antes con el BCButton. Esta vez puse un BCFrame alineado a la izquierda, puse bpsBorder por cuestión "estética", le añadí un BCButton alineado al top y lo configuré para que tenga sólo borde rectangular y sus colores para estado normal, recibe el "foco" y se cliquea. No tiene nada en gradiente. Le puse una imagen (formato .bmp a formato de profundidad de bit 24) de 16 x 16 pixeles con fondo fucsia en la propiedad Glyph. Lo primero que tengo para decir es que no he notado que tenga alguna propiedad TransparentColor a simple vista como para elegir el color que sea considerado transparente (esperando que sea similar al comportamiento del TImage). En Delphi al menos por defecto tanto el TImage como el BitBtn asumían como transparente el color del pixel (0,0)  Por tanto cuando se pone la imagen en Glyph toma toda la imagen.

Se puede aprovechar en cambio la propiedad Images para asignarle un TImageList y aquí si ya jugar con icos y/o bmps y configurar el color transparente, que por defecto toma igual que en Delphi el del pixel (0,0). Esto es muy útil para tener varias imágenes iconos y que cambien de color o diseño incluso cuando se pasa el mouse, se hace clic etc. El truco está en cambiar la propiedad ImageIndex para que cambie en cada evento.

 

Sea como sea, la prueba que hice no me muestra el efecto negro en el icono. Me ha respetado el transparentado cuando usé el TImageList y cuando se usa el Glyph, como ya he comentado, me muestra el fondo fucsia como debe ser. Pasando el mouse, o haciendo clic conserva su color y se comporta como lo esperado. En algún lado tienes un pequeño desliz, pero no sabría decirte donde...

 

Ten presente que cuanto más tus dudas se hacen puntuales en como funciona x componente lo mejor es ir a la fuente principal. Para una mejor ayuda sobre los controles BGRA Controls lo mejor será que acudas a su propio foro dentro de la comunidad Lazarus. No temas preguntar en ese foro, eso si: en inglés y por favor se bien descriptivo y detallista al explicar tu caso.

No te digo esto para desanimarte sino para alentarte a despertar ese instinto de investigador que se está desarollando en ti y mejores mucho más tu capacidad de expresión. No temas en decir que has estado probando, configurando, describiendo que propiedades cambiaste, etc. y llenarnos de palabras... ¡en realidad todo eso te ayuda más a vos que a nosotros! ¡Nosotros ni los del foro de Lazarus te vamos a cobrar por cada palabra que pongas!

 

Saludos,


  • 0

#46 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes

Escrito 08 enero 2016 - 02:39

Muchisimas gracias Delphius, seguiré investigando y trasteando con las propiedades en sí, ya que me quedo más tranquilo que no es un problema del componente y si se resiste el tema comentarlo en el foro que indicas. Volveré a retomar estos controles y volver

a retocar propiedades. A ver si puedo obtener más resultados con ellos. Aunque desde mi simples conocimientos, el Panel de este componentes como se ve en la imagen toma una forma de bordes raras, ahora en cuestión no se si ese efecto visual con la propiedad ( border3dframe) activada os ocurre igual, sin tocar más propiedades, parece más que el border no lo traza correctamente o esa fue mi impresión inicial al clickar el icono y pasarlo al FORM.

 

Aunque ciertamente estoy ya algo desmoralizado, ya que no dejo de darle vueltas al simple menú que usé con Panel y Tlabel que días atrás tampoco me funciona correctamente como ya expuse en el este post, insisto a ratos para ver si afortunadamente la suerte se pone de mi parte, y más aún comprobado por vuestra parte y sí se adapta a lo que busco.

 

Probé a usar el .exe en otro equipo con w7 (ya que mi equipo tiene XP) tanto un caso como el otro para ver si pudiera ser de windows, pero nada seguimos igual. En el primer caso el menu funciona si no pasa el ratón por encima del TLabel ni del TImage que tiene el Panel, de lo contrario el efecto del menu se desconfigura visualmente con la foto subida en el post.

 

Un saludo


  • 0

#47 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 08 enero 2016 - 05:25

No te decepciones dopper.

En la informática todo solución, asi que ha seguir dando batalla. Nunca se dijo que sea fácil, todo cuesta entenderlo al comienzo. Para mi BGRA Controls es también una suite difícil de entenderle, puesto que empecé a verla en la medida en que te fui asesorando en el hilo.

Puede llegar a resultar comprensible que al BCPanel, como así también el BCButton notes algo raro en sus bordes. Por defecto tienen el diseño de bordeado redondo configurado, aunque en BCPanel esto no se ve hasta que cambias en su propiedad BorderBCStyle a bpsBorder. Puedes verlo mejor si cambias las siguientes propiedades:

BevelIner = BevelOuter = bvNone (las cambiamos por seguridad)

Border -> Color = clBlack

Border -> Width = 5

 

BorderBCStyle = bpsBorder

Rounding -> RoundX = RoundY = 12

 

Con eso ya adquiere un borde grueso del color que fijes en la subpropiedad Color del Border  con sus esquinas redondeadas.

Para que se comporte como el tradicional en BorderBCStyle le pones bpsFrame3d y entonces notarás que no hay bordes alguno ya que en las propiedades Bevel le pusimos bvNone por seguridad. Si cambias a estas por sus valores iniciales notarás el efecto "3D" en el borde y todo será recto.

 

Ahora bien, cuando está en modo bpsBorder todo lo que configures en la propiedad Border tomará este valor para visualizar los efectos, si quieres anular este borde puedes hacerlo con la subpropiedad Style en bboNone. Con las propiedades subpropiedades RoundX y RoundY puedes hacer los bordes más o menos curvos. Para mis ejemplos con BCButton habrás notado que era todo rectangular, esto lo logré con ponerle 0 a ambas.

 

Como comprobarás, dependiendo de la propiedad BorderBCStyle el panel tomará uno u otro diseño para manejar el dibujado de los bordes. El comportamiento del fondo depende exclusivamente de lo que configures en Background. Allí puedes indicarle el color de fondo, como así también si hasta quieres que asuma colores difuminados con los gradientes.

 

No descarto que visualmente detectes algo raro entre algún cambio en los bordes cuando pasa de un estado a otro. Después de todo el repintado no es una tarea elemental y consume su tiempo. Y si pones controles encima con más razón, ya que debe redibujar todo muy rápido... En mi prueba con el BCButton después de probar con uno sólo y de subir el post me animé a poner varios uno debajo del otro para simular como va cambiando el pintado. En esa segunda prueba he notado como que se "tarda" un poquito en pasar de un estado a otro, y un poco de "destello" justo al borde entre 2 controles... ¡Es normal! ¡Al repintado hay que darle su tiempo! Puede ayudar en todo lo que es repintado, dibujado y sobre todo en aquellos controles y procesos que deben pintarse continuamente poner en true la propiedad DoubleBuffered.

 

Voy a ver si puedo preparate un mini ejemplo de como lograr un menú con los BGRA Controls para que pruebes y veas si vos detectas algún defecto visual.

 

Saludos,


  • 0

#48 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 08 enero 2016 - 06:52

Pues ya hice un demo medio básico, explora en como están configuradas las propiedades. El 90% se hizo en tiempo de diseño. Puse un BCPanel, aunque bien podría haber un panel común. Y dentro de éste tres TBCButton. A todos ellos les asocié el mismo TImageList en el que figuran 3 imágenes bmp a 24bits de 16 x 16 pixeles. Cada una representa los estados: normal, en foco y clickeado.

Todos los botones comparten el mismo evento, basta con seleccionar el control y asignarles en tiempo de diseño el evento seleccionandolo de la lista.

El código mayormente está para cambiar el índice de la imagen del TImageList para que asuma el efecto según el estado que esperamos.

En estado normal los botones no tienen borde: sin color, grueso en 0, y en estilo None en lugar de Solid. Mientras que en los demás estados el grosor está en 1 y estilo sólido. Para enfocado el color es azul cielo y para pulsado en azul marino.

El BCPanel tiene sus bordes en None y sin color. Y a su izquierda puede apreciarse un TBevel con el estilo en separador para que se aprecie un pequeño espacio entre la "barra de menú" y el área cliente restante.

Todo el demo lo puedes ver en el siguiente enlace público en mi cuenta de Copy. Disculpa el tamaño del zip, me había olvidado de configurar el proyecto para que no almacene la info de debug. Esto hizo que el exe creciera mucho de tamaño.

 

En lo personal aún cuando he puesto DobleBuffered en true en el OnCreate aprecio cierto "parpadeo blanco" rápido en el texto cuando se cambia el foco entre un botón a otro, pero no algo raro en cuanto a bordes. En equipos con menos prestaciones que el mío quizá sea más notorios.

 

Espero que con esto te hagas una idea de como con un poco de creatividad se pueden conseguir un buen par de cosas.

 

Saludos,

 

 


  • 0

#49 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes

Escrito 09 enero 2016 - 03:21

Acabo de ver tus respuestas y estoy descargando la "demo" a ver si puedo sacar muchas conclusiones al respecto Delphius. Siempre agradecido por tu

ayuda  a igual que los demás compañeros como Agustin Ortu que en este post han podido contestar.

 

Voy a estudiar las opciones y propiedades de esta demo y ver que hay.... en cuanto tenga algunos resultados te los hago llegar por si hay alguna duda al respecto.

 

Aunque he estado con la  continuidad del menú principal que al pasar por los componentes (Tlabel y Timage) no actuaban en consecuencia...aún sin solución, pero como el que resiste gana, ahí sigo...

 

Un saludo


  • 0

#50 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes

Escrito 10 enero 2016 - 07:10

Fabuloso Delphius, este codigo me da posibilidades a lo que ando buscando. Adaptaré lo que busco a partir de esta Demo y al mismo tiempo ir

sacando conclusiones del mismo.

 

Aunque no descarto y como de hecho sigo,con el código anterior usando componentes TPanel Y Tlabel, insisto en que no puede ser que a vosotros

os funcione y el mismo codigo no hay bien su función al ejecutarlo en mi equipo. Como dije en un principio, no ya por funcionamiento en sí, sino por la

comprensión del código del que aprendí muchas conclusiones, y da rabia no poder implementarlo y que actue correctamente..

 

Un saludo


  • 0

#51 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 10 enero 2016 - 01:59

Fabuloso Delphius, este codigo me da posibilidades a lo que ando buscando. Adaptaré lo que busco a partir de esta Demo y al mismo tiempo ir

sacando conclusiones del mismo.

 

Aunque no descarto y como de hecho sigo,con el código anterior usando componentes TPanel Y Tlabel, insisto en que no puede ser que a vosotros

os funcione y el mismo codigo no hay bien su función al ejecutarlo en mi equipo. Como dije en un principio, no ya por funcionamiento en sí, sino por la

comprensión del código del que aprendí muchas conclusiones, y da rabia no poder implementarlo y que actue correctamente..

 

Un saludo

 

Me queda la duda, ¿Probaste el exe tal como está?

Para podes descubrir realmente todo lo que pasa con tu menú habrá que darle una buena mirada a tu sistema, ni que decir, al código.

 

Tu sigue intentando y no desistas.

Saludos,


  • 1




IP.Board spam blocked by CleanTalk.