Comunidad Gambas-es
[SOLUCIONADO] ¿Como lanzar form por pantalla secundaria? - 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: [SOLUCIONADO] ¿Como lanzar form por pantalla secundaria? (/thread-124.html)



¿Como lanzar form por pantalla secundaria? - kokodrilo - 05-10-2020

buenas,

En el programa VisorRV1960 hay una parte donde muestra en un formulario maximizado una lista x de versículos.
El asunto es que cuando se lanza lo hace en la pantalla1 y hay que desmaximizarlo correrlo a la pantalla2, maximizarlo y recién ahí esta pronto correctamente para trabajar.

La pregunta es como se hace para detectar la segunda pantalla y lanzar el formulario en ella?


RE: ¿Como lanzar form por pantalla secundaria? - vuott - 06-10-2020

Si por "pantalla" te refieres a "Escritorio" (Desktop), en mi opinion tienes que utilizar la Propiedad " .Desktop " de la Clase " DesktopWindow " activando el Componente gb.desktop .

Exemplum simplex
:
Código:
Public Sub Button1_Click()

  Dim dw As DesktopWindow

  With dw = New DesktopWindow(Me.Id)
' Muevamos el formulario principal de nuestra aplicación al tercer escritorio (índice 2):
    .Desktop = 2
  End With

End



RE: ¿Como lanzar form por pantalla secundaria? - kokodrilo - 06-10-2020

me refiero a una laptop con un proyector o una pantalla secundaria via vga, teniendo asi dos pantallas, por la laptop sale visor y por la pantalla secundaria una ventana x.


RE: ¿Como lanzar form por pantalla secundaria? - vuott - 06-10-2020

Ah, ahora creo que comprendo.
El uso de dos pantallas siempre ha sido un gran problema y un gran misterio sin resolver en Gambas. Confused

...pero...quizás con los recursos de GStreamer mediante gb.media...


RE: ¿Como lanzar form por pantalla secundaria? - jsbsan - 08-10-2020

Yo lo haria por coordenadas (sabiendo que dimensiones tengo en las dos pantallas):
Código:
 
' Gambas class file


Public Sub Button1_Click()

  Dim FTMP As New Form1
  
  FTMP.X = 10 'PANTALLA 1
  FTMP.Y = 10 'PANTALLA 1
  
FTMP.SHOW
End

Public Sub Form_Open()

  Me.X = 100
  Me.Y = 200

End

Public Sub Button2_Click()

   Dim FTMP As New Form1
  
  FTMP.X = 1700 'PANTALLA 2 'DEPENDE DE LAS DIMENSIONES DE PANTALLA QUE TENGAS
  FTMP.Y = 10 'PANTALLA 2
  
FTMP.SHOW

End



RE: ¿Como lanzar form por pantalla secundaria? - tincho - 08-10-2020

El tema podría funcionar con algo como esto.
Código:
  Dim n As Integer
  Dim b As Integer
  Dim x As Integer

  For n = 0 To Screens.Count - 1
    If Screens[n].AvailableWidth > b Then
      b = Screens[n].AvailableWidth
      x = n
    Endif
  Next

  Me.x = Screens[x].AvailableX
  Me.y = Screens[x].AvailableY
Saludos


RE: ¿Como lanzar form por pantalla secundaria? - kokodrilo - 09-10-2020

gracias tincho excelente aporte, resolví con esto:

If Screens.Count > 1 Then
    Me.X = Screens[1].X
    Me.y = Screens[1].y
  Else
    Me.X = 350
    Me.y = 10
  Endif