Shell   10-02-2023, 15:29
#1
Buenas!.

A ver si el título es adecuado para la pregunta.

Trasteando con los controles de checkbox en LibreOffice Calc, me rondaba una cuestión y me fui al editor de Gambas.
Usé un checkbox y tiré de los vértices donde había posicionado el control aumentando su contenedor.

Pregunta, cuando yo amplio de tamaño ese contenedor, ¿ qué es lo que evita que el tamaño del checkbox aumente (su diseño, su figura como cuadrado)?.
Siempre es el mismo, solo aumento su contenedor. El icono del checkbox tiene un tamaño de 64x64, claro pero ese es el icono en la caja de herramientas
o el panel de controles,objetos. Que por cierto tampoco es en si el propio diseño del control cuando lo situamos en el formulario, que no se muestra igual.

No es que quiera crear un cuadrado de checkbox enorme Smile , pero me rondaba esa cuestión. Desde luego seria un problema.

Saludos
Última modificación: 10-02-2023, 15:30 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shordi   10-02-2023, 19:31
#2
Eso depende de cómo esté construido el propio control. Los hay que son adaptables y los hay que no. En el caso de checkbox sólo se adapta a la anchura para dar cabida al texto. No he mirado el código pero imagino que el control intenta evitar el acceso a los iconos del stock y utiliza los métodos de la clase Paint para dibujarse en el IDE en tiempo de diseño. No será fácil cambiar eso...Sin embargo hacerte tu propio checkbox está chupado ¡Ándele mi cuate!

Saludos
Última modificación: 10-02-2023, 19:34 por Shordi.

No podemos regresar
Shell   10-02-2023, 21:18
#3
(10-02-2023, 19:31)Shordi escribió: Los hay que son adaptables y los hay que no

Ejemplo ?.  Rolleyes
 
(10-02-2023, 19:31)Shordi escribió: En el caso de checkbox sólo se adapta a la anchura para dar cabida al texto

Pero esto también depende de la fuente que se use. Que puede ser más pequeña y no llegar al borde superior.
 
(10-02-2023, 19:31)Shordi escribió: Sin embargo hacerte tu propio checkbox está chupado ¡Ándele mi cuate!

Big Grin

No es en si crear el checkbox, lo que me gustaría es hacer un control para probar como se expande en el formulario. Adaptable como has dicho.

Ejemplo un control que hereda de DrawingArea y en este crea un circulo, en modo diseño al ampliar el tamaño del control, el circulo aumentaría
su radio, puede ser un circulo, una elipse. La cosa es ver en tiempo de diseño si eso funciona. Tampoco se si es la forma correcta.
Es solo a modo de ejemplo, claro.

Crear el circulo no es difícil. Veré que hace.

Saludos

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shordi   10-02-2023, 21:38
#4
Cita:Ejemplo ?.  Rolleyes
TextArea...

Big Grin Big Grin

No podemos regresar
Shell   11-02-2023, 00:12
#5
(10-02-2023, 21:38)Shordi escribió: TextArea...

Big Grin

He creado un ejemplo. A ver si me explico mejor con esto.
He creado el control circulo que hereda de DrawingArea.
Este es el código.

Código:
Export

Public Const _Properties As String = "*,radio"

Inherits DrawingArea

Property radio As Integer Use hradio

Private refrescador As Timer
Private observadrawing As Observer

Public Sub _new()

  observadrawing = New Observer(Me) As "ManejaDrawingArea"
  With Me
    .W = Me.W
    .H = Me.H
    .Expand = True
  End With

  refrescador = New Timer As "ManejaReloj"

  With refrescador
    .Delay = 500
    .Start
  End With

End

Public Sub ManejaDrawingArea_Draw()

  Paint.LineWidth = 2
  Paint.Arc(Me.W / 2, Me.H / 2, hradio)
  Paint.Background = Color.Green
  Paint.Stroke

End

Public Sub ManejaReloj_Timer()

  Me.Refresh

End

Creé el icono del control y este se muestra en el menú de controles donde estaba DrawingArea, normal.
Ahora bien. Cuando situó el control en el formulario.

[Imagen: LMOdcHy.png]

Veo el icono que hice para el control, pero no veo un circulo que aumenta o disminuye según ajusto su contenedor. ( En modo diseño ).
Eso es lo que quería decir. Rolleyes
 

Por cierto si añadiese una propiedad para el color del trazado, ¿ cómo podría escoger entre un color u otro ?.
Como pasa con el color de fondo de un control o el de primer plano (foreground).
 


Complicado con el tema de las llaves para decirle de que tipo es.

Código:
Public Const _Properties As String = "*,radio,colorprimerplano{Color}"

Inherits DrawingArea

Property radio As Integer Use hradio
Property colorprimerplano As Integer Use hcolorprimerplano

El actual código queda de esta forma:
- Ahora hereda de UserControl
- No necesita Timer, al ser un objeto que no tiene movimiento
- No necesita un observador, ya que el propio objeto DrawingArea tiene su manipulador de eventos

Código:
Export
Inherits UserControl

Public Const _Properties As String = "*,Radio=50,Colorprimerplano{Color}"

Property Radio As Integer Use hRadio''Radio del círculo
Property Colorprimerplano As Integer Use hColorprimerplano''Color del trazo del círculo

Private $hDrawingArea As DrawingArea

Public Sub _new()

  $hDrawingArea = New DrawingArea(Me) As "DrawingArea"

  With $hDrawingArea
    .W = Me.W
    .H = Me.H
    .Expand = True
  End With

  Me.radio = 50

End

Public Sub DrawingArea_Draw()

  Paint.LineWidth = 2
  Paint.Arc(Me.W / 2, Me.H / 2, hRadio)
  Paint.Background = hColorprimerplano
  Paint.Stroke

End

Saludos
Archivos adjuntos
.gz
Circulo-0.0.4.tar.gz (Tamaño: 12.96 KB Descargas: 0)
Última modificación: 11-02-2023, 23:55 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shordi   11-02-2023, 08:28
#6
Cita:Veo el icono que hice para el control, pero no veo un circulo que aumenta o disminuye según ajusto su contenedor. ( En modo diseño ).
Eso es lo que quería decir. Rolleyes
No funciona así. Cuando defines la clase debes usar la constante _DrawWith. En ella le indicas qué control debe usar para dibujar tu control en el editor de formularios. Si especificas un control que sea miembro de los componentes gb.qt4, gb.qt.ext, gb.form o gb.form.mdi, como por ejemplo:

PUBLIC CONST _DrawWith AS String = "TextBox"

Se dibujará usando ese diseño en el editor de formularios. Si el control especificado no es miembro de esos componentes, como es tu caso, se dibujará un marco con el icono del control dentro.

Saludos
Última modificación: 11-02-2023, 08:28 por Shordi.

No podemos regresar
Shell   11-02-2023, 11:38
#7
(11-02-2023, 08:28)Shordi escribió: Se dibujará usando ese diseño en el editor de formularios. Si el control especificado no es miembro de esos componentes, como es tu caso, se dibujará un marco con el icono del control dentro.

Eso es a lo mas que puedo llegar por lo que parece. Por defecto siempre es del tipo DrawingArea (La caja con el icono),
a menos que quieras con la propiedad _DrawWith representarlo como una caja de texto.

A lo que voy es que no es algo como ocurre en un programa de dibujo, el lienzo seria el formulario y uso la herramienta trazar circulo (que seria
como un control con una serie de propiedades ) y allí aumento o disminuyo hasta lograr el tamaño deseado viendo siempre el circulo como aumenta
o disminuye su radio.

Pero bueno con esto he repasado tu vídeo de diseñar controles y he aprendido más cosas, que algunas dudas las iré planteando en otro tema.

Saludos

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shordi   11-02-2023, 11:44
#8
Cita:A lo que voy es que no es algo como ocurre en un programa de dibujo, el lienzo seria el formulario y uso la herramienta trazar circulo (que seria
como un control con una serie de propiedades ) y allí aumento o disminuyo hasta lograr el tamaño deseado viendo siempre el circulo como aumenta
o disminuye su radio.

Pero eso es en tiempo de ejecución, no en tiempo de diseño. No hay que confundirlos.

Saludos

No podemos regresar
  
Usuarios navegando en este tema: 7 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.