Comunidad Gambas-es

Versión completa: ¿Como lanzar form por pantalla secundaria?
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
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?
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
:
GAMBAS
  1. Public Sub Button1_Click()
  2.  
  3.   Dim dw As DesktopWindow
  4.  
  5.   With dw = New DesktopWindow(Me.Id)
  6. ' Muevamos el formulario principal de nuestra aplicación al tercer escritorio (índice 2):
  7.     .Desktop = 2
  8.  


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.
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...
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
El tema podría funcionar con algo como esto.
GAMBAS
  1.  
  2.   For n = 0 To Screens.Count - 1
  3.     If Screens[n].AvailableWidth > b Then
  4.       b = Screens[n].AvailableWidth
  5.       x = n
  6.     Endif
  7.   Next
  8.  
  9.   Me.x = Screens[x].AvailableX
  10.   Me.y = Screens[x].AvailableY


Saludos
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