Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Variante Del SquareButton: Botón Que Llama A Formulario
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Variante Del SquareButton: Botón Que Llama A Formulario 
 
Variante del SquareButton

Acerca del tema que comentó TercoIde sobre los botones que aparecen el libreoffice, usando el código del boton SquareButton, he hecho una variante, que se parece a estos.

Tiene dos propiedades nuevas:
- Pulldown (true/false): indica que aparezca el "triangulo" junto al icono
- Formulario (cadena): nombre del formulario que debe abrir si se hace click sobre él.

Nota:
El formulario al llama tiene que tener un botón para cerrarlo, ya que le quito el borde , y dos propiedades "xx" y  "yy", para indicarle internamente donde se coloca.

Nota 2:
Modifico el archivo subido, habia un error como comenta Vuott, que ya lo tengo corregido.
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Jueves, 17 Noviembre 2016, 20:11; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Variante Del SquareButton: Botón Que Llama A Formulario 
 


hay q usarlo

 
 



 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Variante Del SquareButton: Botón Que Llama A Formulario 
 
jsbsan, un pequeño error en la linea 109 de la Clase SquareButton.class:

obj.Borde en lugar de obj.Border
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Variante Del SquareButton: Botón Que Llama A Formulario 
 
Vuott:

Ok, corregido en versión 4.0.0.5

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Variante Del SquareButton: Botón Que Llama A Formulario 
 
Tengo un problema con los Suarebuttons que implementamos en mi programa: el evento da_Draw() se ejecuta cada vez que llamo a un Wait desde otro lado (por ejemplo un largo bucle de calculos) y ralentiza toda la interface, ideas?

Export

Inherits UserControl

Public Const _Properties As String = "*,Text,Picture"
Public Const _DefaultEvent As String = "Click"
Public Const _DefaultSize As String = "8,8"
Public Const _Similar As String = "ToggleButton,Button,ToolButton"

Event Click

Property Picture As Picture
Property Text As String

Private $hPicture As Picture
Private $sText As String
Private $hDA As DrawingArea
Private $bState As Boolean

Public Sub _new()

    $hDA = New DrawingArea(Me) As "da"
    Me.Proxy = $hDA

End

Private Function Picture_Read() As Picture

    Return $hPicture

End

Private Sub Picture_Write(Value As Picture)

    $hPicture = Value

End

Private Function Text_Read() As String

    Return $sText

End

Private Sub Text_Write(Value As String)

    $sText = Value

End

Public Sub da_Draw()

    Dim hImage As New Image
    Dim iFlag As Integer = Style.StateOf(Me)

    If Me.W > Me.H Then
        Me.H = Me.W
    Else
        Me.W = Me.H
    Endif

    Style.PaintButton(0, 0, $hDA.W, $hDA.H, $bState, iFlag, False)

    Paint.Font.Size = 7
  
    If $hPicture Then
        hImage = $hPicture.Image.Stretch(Me.W / 1.6, Me.H / 1.6)
        If $sText Then
            Paint.DrawImage(hImage, (Me.W - hImage.W) / 2, (Me.H / 2) - (hImage.H - (Desktop.Scale)))
            Draw.Text($sText, 0, 0, Me.W, Me.H + Me.H / 2 + 7, Align.Center)
        Else
            Paint.DrawImage(hImage, (Me.W - hImage.W) / 2, (Me.H - hImage.H) / 2)
        Endif
    Else
        Draw.Text($sText, 0, 0, Me.W, Me.H, Align.Center)
    Endif

End

Public Sub da_MouseDown()

    $bState = True
    $hDA.Refresh
    Raise Click

End

Public Sub da_MouseUp()

    $bState = False
    $hDA.Refresh

End


Public Sub da_Enter()

    $hDA.Refresh

End

Public Sub da_Leave()

    $hDA.Refresh

End

Public Sub da_GotFocus()

    $hDA.Refresh

End

Public Sub da_LostFocus()

    $hDA.Refresh

End
 

 



 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Variante Del SquareButton: Botón Que Llama A Formulario 
 
TercoIde:
Citar:
Tengo un problema con los Suarebuttons que implementamos en mi programa: el evento da_Draw() se ejecuta cada vez que llamo a un Wait desde otro lado (por ejemplo un largo bucle de calculos) y ralentiza toda la interface, ideas?


Pues lo primero que se me ocurre, es añadir una variable tipo "bandera", que deje o no redibujar el botón:
Añades una nueva propiedad (o variable publica) al SquareButton llamada:
Public Redibujar as Boolean=true


Y en el evento _Draw del squareButton:
Public Sub da_Draw()
Dim hImage As New Image
Dim iFlag As Integer = Style.StateOf(Me)

if me.Redibujar<>true then
'no redibujar... porque estoy recalculando...
return

else
'dibuja lo que sea.
....
...
endif
 


Cuando vayas a usar el  "wait", antes le dices que el boton no se redibuje.
SquareButton1.Redibujar=false

Y despues del "wait", le dices que ya se puede redibujar:
SquareButton1.Redibujar=true
 

Y asi "paras" de redibujar el botón, cuando estas en modo "wait"

Es lo primero que se me ha ocurrido....

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Variante Del SquareButton: Botón Que Llama A Formulario 
 
Me pregunto: porque tiene que redibujarse todo el tiempo?????????????

Si no estoy pasando sobre el con el mouse, ni presionando, ni nada que lo altere, para que redibujarlo??
 



 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Variante Del SquareButton: Botón Que Llama A Formulario 
 
TercoIde:

Citar:
porque tiene que redibujarse todo el tiempo?.... Si no estoy pasando sobre el con el mouse, ni presionando, ni nada que lo altere, para que redibujarlo??


No lo se...   ... en teoría no se deberia de redibujar. Habría que ver como están hecho otros controles "parecidos", como el propio "button", para ver como se dibujan ellos mismos,... (si usan el evento _draw() u otro método)
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Variante Del SquareButton: Botón Que Llama A Formulario 
 
De las ayudas:

Citar:
Este control implementa una zona en donde la aplicación puede dibujar. Cuenta con dos comportamientos, estándar y caché, el cual se define por medio de la propiedad Cached.
En modo estándar\', el DrawingArea disparará el evento [./.draw] cada vez que necesita ser refrescado.
Missing closing '`'
En modo caché\', el dibujo se hace una vez, utilizando el control DrawingArea como dispositivo de dibujo. Este dibujo se almacena dentro de una clase interna [../picture] que es utilizada por el de DrawingArea para refrescarse a sí mismo.
Missing closing '`'


La negrita es mía. Prueba con la propiedad Cached.

Saludos.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Variante Del SquareButton: Botón Que Llama A Formulario 
 
shordi escribió: [Ver mensaje]
De las ayudas:

Citar:
Este control implementa una zona en donde la aplicación puede dibujar. Cuenta con dos comportamientos, estándar y caché, el cual se define por medio de la propiedad Cached.
En modo estándar\', el DrawingArea disparará el evento [./.draw] cada vez que necesita ser refrescado.
Missing closing '`'
En modo caché\', el dibujo se hace una vez, utilizando el control DrawingArea como dispositivo de dibujo. Este dibujo se almacena dentro de una clase interna [../picture] que es utilizada por el de DrawingArea para refrescarse a sí mismo.
Missing closing '`'


La negrita es mía. Prueba con la propiedad Cached.

Saludos.


si lo cacheo, no si dibuja el boton
 



 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Necesito Reconocer El Evento Que Llama A O... alby_hernandez Aplicaciones/Fragmentos de Código 3 Miercoles, 01 Septiembre 2010, 21:55 Ver último mensaje
alby_hernandez
No hay nuevos mensajes Variante De ListBox Necesario v3ctor Controles/Librerías/Componentes 4 Martes, 28 Febrero 2017, 20:39 Ver último mensaje
v3ctor
No hay nuevos mensajes ¿Es Posible Dejar Solo El Botón De Cerra... gambafeliz General 8 Domingo, 20 Octobre 2019, 18:15 Ver último mensaje
tincho
No hay nuevos mensajes Evitar Que Se Cierre Un Formulario (Form) ... gambafeliz General 7 Lunes, 21 Octobre 2019, 10:22 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 2 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario