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:
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
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.
...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.
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
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