Páginas (2):    1 2
vuott   24-08-2022, 00:55
#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".
Última modificación: 24-08-2022, 01:12 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
tercoide   24-08-2022, 01:12
#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
vuott   24-08-2022, 01:13
#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:
Código:
Private x As Short
Private y As Short

Public Sub Form_Open()

  Panel1.Background = &D9D9D9

End

Public Sub X_MouseMove()

  Me.Move(Mouse.ScreenX - x, Mouse.ScreenY - y)

End

Public Sub X_MouseDown()

  x = Mouse.ScreenX - Me.X
  y = Mouse.ScreenY - Me.y

End
...y mejor cambiar también el nombre identificativo del Grupo de Eventos del Panel, ya que "X" es similar a la variable global "x".
Última modificación: 24-08-2022, 01:25 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
Shordi   24-08-2022, 09:19
#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
tincho   24-08-2022, 11:12
#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:
Código:
'....
    Case "fullscreen"
      If Me.Maximized Then
        Me.Maximized = False
        Me.Border = True
      Else
        Me.Maximized = True
        Me.Border = False
      Endif
'....
Última modificación: 24-08-2022, 11:24 por tincho.

1 Saludo.
Shordi   25-08-2022, 19:10
#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".
Código:
Public Sub CreaVentana(f As Form) As _ventana
 
  Dim ventana As _ventana
  Dim o As Object
 
  ventana = New _ventana(ventana)
  f.reparent(ventana.Contenido) 'Este form es incluído dentro del panel "Contenido" de la ventana
  ventana.Width = f.Width
  ventana.Height = f.Height
  For Each o In f.Controls
    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
      o.reparent(ventana.Buttons)
    Endif
  Next
  ventana.Visible = True
  Return ventana
 
End

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):
Código:
Private $ventana As _ventana 'Referencia al formulario _ventana que contendrá a éste

Public Sub Form_Open()
 
  $ventana = mVentana.CreaVentana(Me)
 
  TerminalView1.Background = Color.Background
  TerminalView1.Foreground = Color.Foreground
  TerminalView1.Exec(["/bin/bash"])
  TerminalView1.SetFocus
 
End

Public Sub TerminalView1_KeyRelease()
 
  If Key.Code = Key.Enter Or Key.Code = Key.Return Then
    $ventana.titulo.Text = TerminalView1.Title 'Cambiamos el título de la ventana al prompt del terminal
  Endif
 
End
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)
Última modificación: 25-08-2022, 19:20 por Shordi.

No podemos regresar
Shordi   26-08-2022, 13:37
#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
Shell   03-09-2022, 10:08
#18
Que chulo. Smile

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

Saludos
Última modificación: 03-09-2022, 10:09 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Páginas (2):    1 2
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.