Comunidad Gambas-es

Versión completa: ¿Alguien sabe cómo insertar toolbuttons en la barra del título de la ventana?
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Tengo un programita en el que se "desperdicia" una línea entera con un toolbutton solamente (aunque pudieran ser tres o cuatro). Me gustaría eliminar esa linea y una opción sería hacer algo semejante a ésto:

[Imagen: lfhfbLi.png]

¿Alguien sabe cómo se podría hacer con Gambas?

Saludos
Intente hacerlo hace tiempo pero no encontré la manera creo que esas características GTK3 no están disponibles en gambas porque en realidad es QT "simulando" GTK3.
Lo que podes hacer es quitarle el borde al formulario y poner un panel con los iconos, pero tenes que agregar de alguna manera los eventos del raton para mover la ventana o para minimizar.
[Imagen: Cj3tg6D.png]
buena tecnica!
(23-08-2022, 14:13)tincho escribió: [ -> ]quitarle el borde al formulario
Hay pero el problema que Confused no es posible mover la ventana con el ratón.
(23-08-2022, 15:32)vuott escribió: [ -> ]Hay pero el problema que Confused no es posible mover la ventana con el ratón.

Correcto, por eso decía antes que hay que agregar los eventos del ratón par amover la ventana. pero seguramente con los eventos en el panel de iconos _MouseDown() activar una variable "bMover = True" y luego con _MouseMove() mover el formulario igual que el puntero del ratón.
(23-08-2022, 17:55)tincho escribió: [ -> ]hay que agregar los eventos del ratón par amover la ventana
Uhmmm... puedes agregar este código a tu ejemplo, que adjuntaste aquí.
Para mover la ventana del Formulario con el ratón en tu ejemplo, debes hacer clic precisamente en la parte del Formulario accesible/visible.
GAMBAS
  1.  
  2. Public Sub Form_MouseDown()
  3.  
  4.   x = Mouse.X
  5.   y = Mouse.Y
  6.  
  7.  
  8. Public Sub Form_MouseMove()
  9.  
  10.   Me.Move(Mouse.ScreenX - x, Mouse.ScreenY - y)
  11.  


(23-08-2022, 20:07)vuott escribió: [ -> ]Uhmmm... puedes agregar este código a tu ejemplo, que adjuntaste aquí.
Para mover la ventana del Formulario con el ratón en tu ejemplo, debes hacer clic precisamente en la parte del Formulario accesible/visible.

ok, funciona pero... ¿como hago para que funcione haciendo click en cualquier parte del form?
Cambie un poco el código para que sea mas fluido el movimiento
[Imagen: EiYbAyv.gif]
GAMBAS
  1.  
  2. Public Sub Form_MouseMove()
  3.  
  4.   If bMove Then
  5.     Me.Move(Mouse.ScreenX - x, Mouse.ScreenY - y)
  6.   Else
  7.     Stop Event
  8.  
  9.  
  10. Public Sub Form_MouseUp()
  11.  
  12.   bMove = False
  13.  
  14.  
  15. Public Sub Form_MouseDown()
  16.  
  17.   x = Mouse.X
  18.   y = Mouse.Y
  19.   bMove = True
  20.  



ok, ya logre que funcione con click en cualquier parte
GAMBAS
  1.  
  2. Public Sub X_MouseMove()
  3.  
  4.   If bMove Then
  5.     FMain.Move(Mouse.ScreenX - x, Mouse.ScreenY - y)
  6.   Else
  7.     Stop Event
  8.  
  9.  
  10. Public Sub X_MouseDown()
  11.  
  12.   x = Mouse.X
  13.   y = Mouse.Y
  14.   bMove = True
  15.  
  16.  
  17. Public Sub X_MouseUp()
  18.  
  19.   bMove = False
  20.  


(23-08-2022, 20:36)tincho escribió: [ -> ]¿como hago para que funcione haciendo click en cualquier parte del form?

pero se supone que los controles dentro del Form reciben click para otra cosa, no para mover su Form Parent...
Me imaginé este Confused  otro código (para mover el Formulario, hay que actuar con el ratón en la parte superior, como siempre):
GAMBAS
  1. Private tb As ToolButton
  2.  
  3. Public Sub _new()
  4.   
  5.   With wn = New Window As "Wndw"
  6.     .W = Me.W
  7.     .H = 40
  8.     .X = (Screen.AvailableWidth / 2) - (.W / 2)
  9.     .Y = (Screen.AvailableHeight / 4) - (.H / 2)
  10.     .Border = Border.None
  11.     .Background = &D9D9D9
  12.     .Show
  13.   With Me
  14.     .X = wn.X
  15.     .Y = wn.Y + wn.H
  16.     .Border = Border.None
  17.     .Margin = True
  18.     .Padding = 5
  19.     .Arrangement = Arrange.Fill
  20.   
  21.   For b As Byte = 1 To 4
  22.     With tb = New ToolButton(wn) As "Toolb"
  23.       .W = wn.W * 0.1
  24.       .X = .W + (b * 60)
  25.       .Y = wn.H * 0.15
  26.       .H = wn.H * 0.8
  27.       .Border = Border.Plain
  28.       .Background = Color.Yellow
  29.       .Text = CStr(b)
  30.     End With
  31.   Next
  32.  
  33.  
  34. Public Sub Form_Open()
  35.  
  36.   ta = New TextArea(Me) As "TextA"
  37.   w = New Watcher(wn) As "Osserva"
  38.   
  39.  
  40. Public Sub Toolb_Click()
  41.   
  42.   ta.Text &= Last.Text
  43.  
  44.  
  45. Public Sub Wndw_MouseDown()
  46.  
  47.  x = Mouse.X 
  48.  y = Mouse.Y 
  49.  
  50.  
  51. Public Sub Wndw_MouseMove()
  52.  
  53.   wn.Move(Mouse.ScreenX - x, Mouse.ScreenY - y)
  54.  
  55.  
  56. Public Sub Osserva_Move()  ' Cuando se mueve el objeto gráfico "Window" con el ratón...
  57.  
  58. ' ...también se mueve el Form:
  59.   Me.Move(wn.X, wn.Y + wn.H)
  60.   


Probé el código, funciona perfecto.
Movés la ventana, y con el observador ves este evento y luego movés el formulario.
Este método esta muy interesante, supongo que los controles desplegables como los combobox usaran algo similar.
Tambien esta bueno para hacer paletas de herramientas flotantes como Gimp.

[Imagen: o3kjequ.gif]
Páginas: 1 2