PDA

Ver la Versión Completa : Dos monitores conectados a una CPU


Isamariko
28-03-2007, 22:36:37
Hola a todos, ojala puedan ayudarme, mi problemita es el siguiente:

Tengo dos monitores A y B, conectados a una CPU y lo que quisiera es q en el monitor B aparezcan los resultados de lo que cargue desde el monitor A,
como podria hacer?
Espero q me hayan entendido :D
Gracias!!! ;)

Lepe
29-03-2007, 13:15:16
¿qué entiendes por "cargar"?

De todas formas, si usas el escritorio extendido de windows (que suele ser lo normal), solo tienes que situar en pantalla la ventana más allá de la resolución del monitor.

Si usas 1024x768, el segundo monitor empezará en las coordenadas 1025x0 hasta las coordenadas 2048x768, con establecer el Left de una ventana a 1025, ya estará en el segundo monitor.

Saludos

roman
29-03-2007, 19:19:59
Oye Lepe, pero, ¿qué pasa si los monitores no están al lado uno del otro? Por ejemplo, puedes colocarlos esquinados y en Windows especificas las posiciones relativas de manera que el ratón sabe a dónde moverse. Entonces tendríamos que saber con mayor precisión las coordenadas del otro monitor ¿no?

// Saludos

Lepe
29-03-2007, 20:35:47
Solo estaba dando la idea :p, gracias por complicarme la existencia :p

(En serio, tengo este código por aquí de hace tiempo, compilable en delphi 6)

procedure TForm1.Button1Click(Sender: TObject);
var m:Tmonitor;
i:Integer;
begin
Memo1.Clear;
for i:=0 to Screen.MonitorCount-1 do
begin
m := Screen.Monitors[i];
with Memo1.Lines do
begin
Add('Monitor Nº: '+IntToStr(m.MonitorNum)+ ' IsPrimary : '+ BoolToStr(m.Primary,True));
Add('Dimensiones estandard');
Add(' Left '+ IntToStr(m.Left));
Add(' Top '+ IntToStr(m.Top));
Add(' Width '+ IntToStr(m.width));
Add(' Height '+ IntToStr(m.height));

Add('BoundsRect');
Add(' Left '+ IntToStr(m.BoundsRect.Left));
Add(' Top '+ IntToStr(m.BoundsRect.Top));
Add(' Right '+ IntToStr(m.BoundsRect.Right));
Add(' Bottom '+ IntToStr(m.BoundsRect.Bottom));

Add('WorkareaRect');
Add(' Left '+ IntToStr(m.WorkareaRect.Left));
Add(' Top '+ IntToStr(m.WorkareaRect.Top));
Add(' Right '+ IntToStr(m.WorkareaRect.Right));
Add(' Bottom '+ IntToStr(m.WorkareaRect.Bottom));
Add('');
end;
end;

Teniendo el segundo monitor a la derecha del principal, ambos a 1024x768, obtengo estos resultados:

Monitor Nº: 0 IsPrimary : True
Dimensiones estandard
Left 0
Top 0
Width 1024
Height 768
BoundsRect
Left 0
Top 0
Right 1024
Bottom 768
WorkareaRect
Left 0
Top 0
Right 1024
Bottom 708 (mi barra de tareas tiene 60 pixels de alta,
la configuración estandar son 30 pixels de alta)

Monitor Nº: 1 IsPrimary : False
Dimensiones estandard
Left 1024 (claro, está a la derecha del monitor 0)
Top 0 (alineado horizontalmente con el monitor 0)
Width 1024 (resolución de esa pantalla)
Height 768 (resolución de esa pantalla)
BoundsRect
Left 1024 (Left considerando el monitor 0)
Top 0
Right 2048 (Right del monitor 1, considerando el ancho del monitor 0)
Bottom 768
WorkareaRect
Left 1024
Top 0
Right 2048
Bottom 768 (la barra de tareas solo está en el monitor 0, en el monitor 1 no hay)


Dobles Saludos :D

Lepe
29-03-2007, 20:39:34
Más complicado todavía:
Monitor 0 a 1024x768
Monitor 1 a 800x600 centrado horizontalmente con el primero a la derecha:

Monitor Nº: 0 IsPrimary : True
Dimensiones estandard
Left 0
Top 0
Width 1024
Height 768
BoundsRect
Left 0
Top 0
Right 1024
Bottom 768
WorkareaRect
Left 0
Top 0
Right 1024
Bottom 708

Monitor Nº: 1 IsPrimary : False
Dimensiones estandard
Left 1024
Top 80
Width 800
Height 600
BoundsRect
Left 1024
Top 80
Right 1824
Bottom 680
WorkareaRect
Left 1024
Top 80
Right 1824
Bottom 680

ji ji.

roman
29-03-2007, 20:47:19
¡Ah! Entonces es fácil. Es decir, según veo de tus ejemplos, uno puede configurar como quiera sus monitores en Windows, y el BoundsRect y WorkAreaRect del monitor, son relativos al monitor principal.

pd: Necesito dos monitores :D

// Saludos

Lepe
30-03-2007, 12:28:56
En realidad no me dejan ponerlos como yo quiera, me explico: quise poner los monitores en forma de escalera, sin embargo, al tiempo de aplicar los cambios, windows los asignaba:
- O bien uno arriba del otro
- O bien uno al lado del otro.

Realmente frustrante, pero bueno, supongo que teniendo 9 monitores si dejaría hacerlo , ejem... eso me gustaría a mí.... 9 monitores :D.

Ya hablando de otras cosas, lo que más me gusta, es poder asignar teclas rápidas para llevar la aplicación activa al monitor que quieras, realmente es muy cómodo.

PD: Yo necesito otro monitor, Uno para las ventanas que diseño, otro para el código fuente y el otro para la ayuda de Delphi :D :D.

"Borland", a día de hoy, todavía no tiene preparado el lenguaje para entornos multimonitor, de hecho la unidad multimon es una patata, según leí, delphi2007 será el primero que sí integre soporte completo para este tema.

Edito: Se me olvidaba, es lógico que sean relativos al monitor principal, ya que tengo "extendido el escritorio al segundo monitor", desactivando esa opción en las propiedades de pantalla... el monitor se apaga, y poca cosa podemos hacer con él, salvo duplicar el contenido del monitor 0 en el 1.


Saludos