Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 2 voto(s) - 5 Media
  • 1
  • 2
  • 3
  • 4
  • 5

[SOLUCIONADO]  ¿Alguien sabe cómo insertar toolbuttons en la barra del título de la ventana?
#11

tincho, de verdad reconozco que aquel mi código es un ejercicio mental demasiado complejo y completamente inútil, porque el área, donde colocar los "ToolButton", puede ser muy bien un "Panel" colocado en el Formulario principal (como has hecho tú).
En efecto, el tamaño del Formulario está condicionado por el tamaño de la "Pantalla".

"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
    ¡Gracias!
#12

(24-08-2022, 00:55)vuott escribió:  un ejercicio mental demasiado complejo y completamente inútil

sabias que una mente activa es el mejor remedio para el Parkinson?  Heart

"Es mejor saber todo de muy poco que muy poco de todo" - anonimo
    ¡Gracias!
#13

Tincho, yo diría que retomemos la segunda versión de tu código (que es mejor que el mio), pero en el IDE colocando a "False" la propiedad "Tracking" del "Form" y del "Panel", y agregando este código:
GAMBAS
  1.  
  2. Public Sub Form_Open()
  3.  
  4.   Panel1.Background = &D9D9D9
  5.  
  6.  
  7. Public Sub X_MouseMove()
  8.  
  9.   Me.Move(Mouse.ScreenX - x, Mouse.ScreenY - y)
  10.  
  11.  
  12. Public Sub X_MouseDown()
  13.  
  14.   x = Mouse.ScreenX - Me.X
  15.   y = Mouse.ScreenY - Me.y
  16.  


...y mejor cambiar también el nombre identificativo del Grupo de Eventos del Panel, ya que "X" es similar a la variable global "x".

"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
    ¡Gracias!
#14

¡Buff, buff!¡Qué maravilla de foro! Haces una pregunta y encuentras chicha para masticar durante un buen rato.
Muchas gracias a los dos.
Hace tiempo hice algo parecido con mi programa de música en el que me estorbaban los marcos de las ventanas, pero por pura pereza no seguí con el tema y me resigné. Ahora todo esto me viene de maravilla para lo que estoy haciendo y para ese programa.

Repito: Gracias.

Saludos

No podemos regresar
    ¡Gracias!
#15

(24-08-2022, 00:55)vuott escribió:  tincho, de verdad reconozco que aquel mi código es un ejercicio mental demasiado complejo y completamente inútil, porque el área, donde colocar los "ToolButton", puede ser muy bien un "Panel" colocado en el Formulario principal (como has hecho tú).

Los ejercicios mentales, como dices, creo que son lo que hace interesante la programacion, ademas de como dice Tercoide, que hacen bien al cerebro a la memoria y otra cosa que no me acuerdo  Big Grin
Es un placer para mi poder estudiar los algoritmos que pones, gracias por compartir y enseñarnos a todos.

(24-08-2022, 09:19)Shordi escribió:  ¡Buff, buff!¡Qué maravilla de foro! Haces una pregunta y encuentras chicha para masticar durante un buen rato.
Muchas gracias a los dos.
Hace tiempo hice algo parecido con mi programa de música en el que me estorbaban los marcos de las ventanas, pero por pura pereza no seguí con el tema y me resigné. Ahora todo esto me viene de maravilla para lo que estoy haciendo y para ese programa.

Si, esta buena esta dinamica, y la verdad que es divertido encontrar una forma de lograr el efecto GTK en las ventanas con gambas.
Me alegro que esto te sirva para tu programa.
Por otra parte tal vez te sirva algo como esto:
GAMBAS
  1. '....
  2.     Case "fullscreen"
  3.       If Me.Maximized Then
  4.         Me.Maximized = False
  5.         Me.Border = True
  6.       Else
  7.         Me.Maximized = True
  8.         Me.Border = False
  9.       Endif
  10. '....



1 Saludo.
    ¡Gracias!
#16

Animado por vuestras propuestas le he dado vueltas al tema y creo que ya lo tengo. La solución consta de un formulario al que he llamado "_ventana" a falta de mejores propuestas (no hay muchos sinónimos de ventana en inglés y ninguno me gustó mucho).
El formulario _ventana:
[Imagen: LVc0X25.png]



y un módulo mVentana que contiene una sola función "Creaventana".
GAMBAS
  1. Public Sub CreaVentana(f As Form) As _ventana
  2.  
  3.   Dim ventana As _ventana
  4.  
  5.   ventana = New _ventana(ventana)
  6.   f.reparent(ventana.Contenido) 'Este form es incluído dentro del panel "Contenido" de la ventana
  7.   ventana.Width = f.Width
  8.   ventana.Height = f.Height
  9.   For Each o In f.Controls
  10.     If o.Tag = "TitleButtons" Then 'Los controles que contengan "TitleButtons" en el tag se incluyen en el panel "Buttons" de la ventana pero su obervador sigue siendo el formulario F
  11.       o.reparent(ventana.Buttons)
  12.     Endif
  13.   Next
  14.   ventana.Visible = True
  15.   Return ventana
  16.  



Lo único que hay que hacer es llamar a dicha función dentro del evento Open() del formulario que queremos ver.
En el ejemplo adjunto (un supuesto Terminal de Consola):
GAMBAS
  1. Private $ventana As _ventana 'Referencia al formulario _ventana que contendrá a éste
  2.  
  3. Public Sub Form_Open()
  4.  
  5.   $ventana = mVentana.CreaVentana(Me)
  6.  
  7.   TerminalView1.Background = Color.Background
  8.   TerminalView1.Foreground = Color.Foreground
  9.   TerminalView1.Exec(["/bin/bash"])
  10.   TerminalView1.SetFocus
  11.  
  12.  
  13. Public Sub TerminalView1_KeyRelease()
  14.  
  15.   If Key.Code = Key.Enter Or Key.Code = Key.Return Then
  16.     $ventana.titulo.Text = TerminalView1.Title 'Cambiamos el título de la ventana al prompt del terminal
  17.  


Este sería el aspecto final:
[Imagen: 4lUc8Ii.png]

Como está recién sacado del horno, aún falta pulirlo. Pero hay una cosa en la que he perdido mucho tiempo y que no he sabido darle una respuesta satisfactoria:
Podéis cambiar el tamaño de la ventana desde los bordes y desde las esquinas, pero para los bordes y esquinas que implican cambio de posición, a saber, el superior, el izquierdo y sus correspondientes esquinas, no he sido capaz de encontrar la manera de hacerlo de forma fluida y fiable. Los únicos que lo hacen bien son el inferior y el derecho y la esquina correspondiente. Eso me ha llevado a resaltar dicha esquina y pretendo dejarla como la única zona de la ventana para cambiar el tamaño... pero antes de dejarlo así os lo traigo a ver si alguien es capaz de encontrar la solución a eso. Estaré totalmente agradecido.

Saludos


Archivos adjuntos
.gz ventana-0.0.1.tar.gz Tamaño: 14.14 KB  Descargas: 2

No podemos regresar
[-] Los siguientes 1 usuarios dice gracias a Shordi por este post:
  • tincho
    ¡Gracias!
#17

Añadiendo esta solución a mi programa de música he abierto el audacious para comprobar una cosa y veo que ellos cambian el tamaño de la ventana de la lista de canciones sólo desde la esquina inferior derecha también... eso anima. Big Grin Big Grin Big Grin


Saludos

No podemos regresar
    ¡Gracias!
#18

Que chulo. Smile

Como no puedo evaluar a un solo usuario, califico el post de cinco estrellas.

Saludos

"El buen perfume en frasco pequeño se vende"
[-] Los siguientes 1 usuarios dice gracias a Shell por este post:
  • Shordi
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 2 invitado(s)