Comunidad Gambas-es
ComboBox y dos monitores - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: ComboBox y dos monitores (/thread-1637.html)



ComboBox y dos monitores - Harpo - 18-03-2024

Saludos,

Me ha surgido un problema con el control ComboBox estándar.
Por un lado uso dos monitores, configurados para extender las pantallas, el principal y a la izquierda el secundario.

El control ComboBox usa un Form interno para mostrar los datos, y antes de mostrarlo calcula las coordenadas en pantalla. Para este cálculo utiliza la clase Screens, la cual es un array con las pantallas que hay en el sistema. Selecciona la pantalla en la cual se encuentra el control y utiliza sus propiedades para obtener la posición del Form interno del control.

La última linea de cálculo de coordenadas es esta:
Código:
If X < hScreen.AvailableX Then X = hScreen.AvailableX

El caso es que al tener dos pantallas, la principal (Screen0) y la secundaria (Screen1), en modo extendido a la izquierda, si el formulario que contiene el ComboBox está en la principal, no funciona. He escrito un pequeño programa para ver qué propiedades tienen las pantallas y este es el resultado:
[Imagen: lXQ9Erh.png]
Como se ve la propiedad AvailableX de Screen0 es 1600. Eso hace que el formulario del ComboBox no se muestre o se muestre fuera de sitio.
Uso GTK3 y lo más curioso de todo es que he probado QT5, los valores que salen son idénticos, pero si muestra bien el formulario interno del ComboBox.

Si alguien trabaja también con dos pantallas y le interesa, subo el programa y probamos.
Un saludo, Harpo.


RE: ComboBox y dos monitores - Shordi - 18-03-2024

Súbelo, que tengo por algún lado algún combobox personalizado (uno que busca en la lista según escribes, no recuerdo ahora mismo el nombre) y me interesa el tema.
Aún así yo solo utilizo Qt en mis programas. GTK solo me ha dado siempre un montón de warnings y problemas

Saludos


RE: ComboBox y dos monitores - tincho - 18-03-2024

Yo uso GTK solo para molestar a Shordi Big Grin
Pero como Gambas es QT adaptado a GTK,  este último siempre siempre esta rezagado en cuanto a su implementación en gambas.
Bien, hace tiempo uso un método que le pasas el objeto y lo centra en la pantalla en donde esta el formulario padre, pero funciona para formularios.
Tal vez lo puedas adaptar al combobox.
Código:
Static Public Sub Fix(o As Object, Optional p As Integer = 100, Optional s As Integer = -1)

  Dim x As Integer
  Dim f As Float

  x = Screen(s)

  If p > 100 Then
    f = 1.0
  Else
    If p < 1 Then
      f = 1.0
    Else
      f = p / 100
    Endif
  Endif

  o.W = Screens[x].AvailableWidth * f
  o.H = Screens[x].AvailableHeight * f
  o.x = Screens[x].AvailableX + Screens[x].AvailableWidth / 2 - o.W / 2
  o.y = Screens[x].AvailableY + Screens[x].AvailableHeight / 2 - o.H / 2

End



RE: ComboBox y dos monitores - Shell - 19-03-2024

(18-03-2024, 22:34)tincho escribió: Yo uso GTK solo para molestar a Shordi

Big Grin Big Grin

Nunca me he visto usando dos monitores. Cosas de espacio.

A propósito, se habla de un componente QT6...para Gambas. Rolleyes


RE: ComboBox y dos monitores - Shordi - 19-03-2024

Cita:Yo uso GTK solo para molestar a Shordi Big Grin
Así, cuando subo algún código, alguien tiene que hacer piloto de pruebas y gritar indignado !No funciona!... y yo responder con una sonrisita:  ¡Prueba con QT!
Big Grin Big Grin Big Grin

Saludos


RE: ComboBox y dos monitores - Harpo - 19-03-2024

Gracias Tincho, un código interesante. Aunque en este caso tampoco funcionaría, al usar AvailableX para posicionar el objeto en pantalla en X. El valor de esa propiedad en la pantalla principal es 1600.

Shordi, subo el programa para que pueda probar, al pulsar el botón "Reload" carga las propiedades de la pantalla en la que se encuentra el formulario.

Ya me dirá que tal, un saludo.
Harpo.


RE: ComboBox y dos monitores - Shordi - 19-03-2024

Lo he probado cambiando la resolución de mi segundo monitor a 1600 y manteniendo la del primero a 1600 y a mí me funciona bien.

Moraleja: usa QT siempre. Tongue


RE: ComboBox y dos monitores - Harpo - 19-03-2024

¿Ha probado con GTK3?.
A mi con QT también me funciona.