PDA

Ver la Versión Completa : ¿ Cómo se puede enviar un form a otro dispositivo de imagen o monitor ?


dannytec
07-04-2006, 20:07:25
Hola a todos,

Por favor, si alguien dispone de tiempo en el foro, ruego un poco de ayuda ya que tengo un problema a la hora de desarrollar una aplicación que pueda tener un FORM (operador de la aplicación) en la pantalla principal del ordenador pero, a su vez y dependiendo de lo que haga el operador en el form o pantalla principal del programa, enviar otro form distinto a un dispositivo de salida de imagen o monitor diferente al del operador o aplicación principal.

Agradezco de antemano cualquier comentario, sugerencia, manual, enlace, etcétera sobre este tema, pues ando más perdido que la "pipa de un indio" con las salidas a diferentes dispositivos de imagen (en un principio me interesa cualquier información sobre la salida hacia el segundo monitor conectado a un ordenador con su propia pantalla) para DELPHI o ASSEMBLER.

Muchas gracias,

Daniel

seoane
07-04-2006, 23:12:10
Seguramente habra formas mas sofisticadas de hacerlo pero ahora mismo lo que se me ocurre es obtener las coordenadas del monitor secundario y asignarselas al form. Es decir:


// Comprobamos que tenemos mas de 1 monitor
if Screen.MonitorCount > 1 then
begin
// Obtenemos las coordenadas del segundo monitor
Top:= Screen.Monitors[1].Top;
Left:= Screen.Monitors[1].Left;
end;


¿Era eso lo que querias?

Lepe
08-04-2006, 00:19:03
En mi caso tengo una tarjeta gráfica ATI RADEON X600 que viene con 2 salidas para monitores, bueno, en realidad una de ellas es un conector DVI, pero con un adaptador puede conectarse el segundo monitor. El mismo efecto se consigue instalando una segunda tarjeta de video, obtienes 2 salidas y puedes conectar 2 monitores.

Al menos en Windows Xp y teniendo 2 monitores, es un juego de niños, las coordenaas las da, como bien seoane, el objeto TScreen, ya que el segundo monitor se convierte en una "extensión del escritorio".

Puedes poner los dos monitores uno debajo de otro, a la izquierda, a la derecha, etc. De hecho, cualquiera de los 2 monitores puede ser el principal, es decir, el que tiene la barra de tareas e iconos.

Uno de los monitores siempre tendrá su Top y Left en cero, así que... como cualquier eje cartesiano, ese es el monitor principal.

El otro monitor puede tener coordenas negativas... dependiendo de su ubicación física respecto del principal, por ejemplo con resolución 1024x768 ambos monitores, si el secundario está:
- a la derecha del principal Top := 0 Left := 1024 (es la esquina Superior izquierda del secundario)
- a la izquierda del principal Top := 0 Left := -1024 (es la esquina Superior izquierda del secundario)
- Debajo del principal Top := 768 Left := 0
etc.

Y no me he equivocado con las coordenadas, recuerda que desde 0 hasta 1023 hay 1024 pixeles ;)

Como hablas de "dispositivo de imagen" pues no sé hasta que punto puede complicarse la cosa. Si acaso ya aclararás algo más.

Saludos

dannytec
09-04-2006, 11:35:32
Hola Lepe y Seoane,

Muchas gracias por responder y darme una idea de por donde pueden ir los tiros. Desconocía que existiera una instrucción directa en DELPHI para poder controlar el número de monitores conectados y, gracias a vosotros, ahora ya sé como controlar la salida e implementar las rutinas necesarias. Por cierto, esta instrucción estará implementada en versiones 6.0 o superior del DELPHI, ¿ no ?

La idea de Seoane es sencilla y práctica, eso sí, si está bien instalados los drivers de la tarjeta de vídeo del usuario, la veo bastante fiable a nivel de programación que configurar o cambiar las propiedades del controlador de vídeo desde el S.O. pues depende de como tenga el Usuario final su Windows y, lo que me ha "tocado" hacer, es una aplicación a miles de kilómetros de distancia, con lo tengo que hacer algo sólido, fiable y que funcione debidamente sin que el Usuario tenga que "tocar" nada del XP.

Sí, lo sé, Lepe, gracias por recordarme que las coordenadas trabajan desde 0 a 1023 ya que es la forma de "contar" de los norteamericanos. :) Para mí y casi para el resto de programadores hispanos, el "conteo" debería ser de 1 a 1024 como los romanos. ;) No me costó trabajo ni nada entenderlo cuando empecé a programar en FORTRAN y BASIC MALLARD bajo CPM/PLUS allá por el reino de los Visigodos y eso que aún soy un chaval. :D

Me pondré a la faena y ya os contaré como va la "cosa". :o Tengo faena para al menos 3 meses, pues tengo que capturar la imagen de una cámara de vídeo, gestionar dos forms (operador y visitante) cada uno para una salida de vídeo diferente y después, el tema contable de la aplicación, ¡ buuuffff ! éste último tema nunca me gustó nada de nada.

Lo dicho, muchas gracias y un fuerte abrazo a los dos,

Daniel