Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-09-2007
Quicksilver Quicksilver is offline
Registrado
 
Registrado: sep 2007
Posts: 4
Poder: 0
Quicksilver Va por buen camino
Post Mostrar Ventana Monitor secundario

Holas,
Alguno de ustedes sabe cómo reconocer las coordenadas ó el punto (0, 0) del monitor secundario en caso tenga instalado más de un monitor en mi PC?. Quiero hacer que una ventana se ejecute siempre en ese monitor y siempre maximizado. Agradezco su ayuda.
Slds.
Responder Con Cita
  #2  
Antiguo 26-09-2007
quickynet quickynet is offline
Registrado
 
Registrado: mar 2007
Posts: 3
Poder: 0
quickynet Va por buen camino
Mirate "Screen.MonitorCount" para saber el numero de monitores, y a partir de ahi las propiedades y metodos de "Screen.Monitors[Numero de monitor]".

Un Saludo.
Responder Con Cita
  #3  
Antiguo 26-09-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Has revisado la clase TScreen y TMonitor?
Desde la primera tienes acceso a un propiedad que te da el número de monitores y acceso a cada uno de ellos mediante la segunda clase.

Accediendo a los monitores puedes obtener las coordenadas y supongo que a partir de ahí podrás calcular la posición del escritorio correspondiente a la (0,0) del segundo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 27-09-2007
Quicksilver Quicksilver is offline
Registrado
 
Registrado: sep 2007
Posts: 4
Poder: 0
Quicksilver Va por buen camino
Muchas gracias por sus respuestas, pero lamentablemente no me sirvio de mucho, lo que intento hacer es: Al abrir una nueva ventana desde mi aplicacion, por default se abra en el monitor secundario, al inicio me imagine que si conseguia las coordenadas del segundo monitor lo conseguiria, pero no funciono:
Esta es la parte de mi codigo

=============================
NewForm := TNewForm.Create(Self);
NewForm.Left := Screen.Monitors[1].Left;
NewForm.Top := Screen.Monitors[1].Top;
NewForm.Show;
=============================
Tienen idea de como puedo resolver esto?

Muchas gracias por sus aportes
Responder Con Cita
  #5  
Antiguo 27-09-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
pues a mi si me sale:
Código:
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 738

Monitor Nº: 1 IsPrimary : False
Dimensiones estandard
   Left   1024
   Top    0
   Width  1024
   Height 768
BoundsRect
   Left   1024
   Top    0
   Right  2048
   Bottom 768
WorkareaRect
   Left   1024
   Top    0
   Right  2048
   Bottom 768
el código delphi... nada del otro mundo:
Código Delphi [-]
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;

¿qué obtienes tú?

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 27-09-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Quicksilver Ver Mensaje
...pero lamentablemente no me sirvio de mucho, lo que intento hacer es: Al abrir una nueva ventana desde mi aplicacion, por default se abra en el monitor secundario, al inicio me imagine que si conseguia las coordenadas del segundo monitor lo conseguiria, pero no funciono....
¿Pero qué pasó? ¿Falló? ¿Error?
¿EWjecuta paso a paso y dinos qué valor tienen Left y Top? (la primera debería ser la ancura del primer monitor y la segunda 0).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 27-09-2007
Quicksilver Quicksilver is offline
Registrado
 
Registrado: sep 2007
Posts: 4
Poder: 0
Quicksilver Va por buen camino
Question

Al ejecutar paso a paso, los valores que obtengo son:
Para Screen.Monitors[1].Left
Valor = 0; //Esto es el punto X de origen del monitor, no el ancho, el ancho es me lo da el weight

Para Screen.Monitors[1].Top
Valor = 0; //Esto es el punto Y de origen del monitor.

Finalmente lo que obtengo con esta parte del codigo es:
Código Delphi [-]
 
NewForm := TNewForm.Create(Self);
NewForm.Left := Screen.Monitors[1].Left;
NewForm.Top := Screen.Monitors[1].Top;
NewForm.Show;

Que la ventana me lo muestre en el primero monitor, esto debido a que, al asignarle 0, 0 como puntos de origenes, lo envia a la esquina superior izquierda del monitor primario, cuando lo que deseo es que lo envie a la esquina superior izquierda, pero del segundo monitor.

Gracias por el interes y la ayuda
Responder Con Cita
  #8  
Antiguo 27-09-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
AYUDA:
In multi-monitor applications, the available screen space can span multiple monitors from left to right. Read Left to determine where, in the entire available screen space, this monitor appears. The value of Left is in pixels relative to the left edge of the primary monitor.


Se supone que el Left del segundo monitor te debería devolver un valor igual al Width del primero, es decir (por lo que yo entiendo) el pixel a partir del cual empieza el segundo monitor.
Si te devuelve 0, ya sabemos porque no te aparece en el segundo; Lo que hay que saber ahora es porqué te devuelve 0 (la propiedad Left).

¿Como tienes la configuración de Multimonitor en Windows?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mostrar mensaje sobre cualquier ventana valera Varios 4 14-05-2012 11:44:47
Mostrar ventana de bienvenida antes del form1 Greco Varios 3 01-08-2007 20:44:20
Si mi ventana esta oculta como la Puedo mostrar JULIPO API de Windows 4 07-02-2006 00:07:31
mostrar ventana de login para acceder al servidor feusebi API de Windows 0 13-01-2006 15:24:09
Al mostrar Hint, desaparece ventana nowheremanza OOP 4 19-09-2005 22:37:03


La franja horaria es GMT +2. Ahora son las 01:57:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi