Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-06-2005
serhasae serhasae is offline
Miembro
 
Registrado: jun 2004
Ubicación: España
Posts: 117
Poder: 20
serhasae Va por buen camino
Saber pulgadas de un monitor

Alguien sabe como saber las pulgadas que tiene el monitor que se este usando en el ordenador, para asi cambiar mas adecuadamente la resolucion a la cual quiero que trabaje mi programa. Saludos.
Responder Con Cita
  #2  
Antiguo 23-06-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
pues no creo que puedas saber desde un programa la medida del monitor, aunque alomejor puedes usar un "truco":
Tienes una "form" que presentas maximizada en pantalla, por ejemplo de medidas 800x600.
Luego mides la altura del canvas de una letra determinada (por ejemplo), y mediante una regla de tres, puedes hace el cálculo para poner la pantalla más grande o pequeña.

mi monitor de 17" con una resolución de 800x600 presenta una altura de canvas de 21 pixels.
Este monitor de xx" con una resolución de 800x600 presenta una altura de canvas de 24 pixels.
Mediante una regla de tres, puede salirte un resultado aproximado a xx", que serían las pulgadas de tamaño del monitor donde se ejecute el programa.

Quizás he dicho una tontería muy grande y resulta que eso no se puede, pero alomejor es posible
Responder Con Cita
  #3  
Antiguo 23-06-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Yo creo que lo que quieres saber es a cuanta resolución esta configurado el monitor para así saber cuanto espacio diponible tienes en pantalla.

SI ese es el caso, verifica la información en este hilo: Obtener resolución de pantalla

cuando obtienes estos datos puedes hacer algo asi como:
Componente.Witdh:=ResoluciónHorizontal-100;
de esta manera el componete no será mayor al espacio en la pantalla.
__________________

Responder Con Cita
  #4  
Antiguo 24-06-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
La resolución sí es facil obtenerla, quizás ha hecho mal la pregunta: "como saber las pulgadas que tiene el monitor"
Responder Con Cita
  #5  
Antiguo 30-06-2005
serhasae serhasae is offline
Miembro
 
Registrado: jun 2004
Ubicación: España
Posts: 117
Poder: 20
serhasae Va por buen camino
No hize mal la pregunta, queria saber el tamaño del monitor, porque no es lo mismo un monitor de 17 a 1024 x 768, que un monitor de 15 a 1024x768, para el de 17, mejor 1024 , para el de 15 mejor 800. No creen?. Saludos.
Responder Con Cita
  #6  
Antiguo 30-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Tiene lógica tu pregunta pero creo que todos pensamos en la resolución porque lo usual es adaptar tus formularios a la resolución con la que el usuario quiere ver su monitor y no cambiarle sus preferencias. Dicho de otra forma, lo "correcto" es adaptar tu aplicación al ambiente y no el ambiente a tu aplicación.

No creo que sea posible saber exáctamente las medidas físicas del monitor pero puedes intentar con esto:


Código Delphi [-]
var
  Wnd: HWnd;
  DC: HDC;
  HSize, VSize: Integer;

begin
  Wnd := GetDesktopWindow();
  DC := GetDC(Wnd);

  HSize := GetDeviceCaps(DC, HORZSIZE);
  VSize := GetDeviceCaps(DC, VERTSIZE);

  Caption := Format('%d x %d', [HSize, VSize]);
end;

EDITO

Lo olvidaba: las medidas devueltas se supone que están en milímetros.

// Saludos

Última edición por roman fecha: 30-06-2005 a las 01:21:26.
Responder Con Cita
  #7  
Antiguo 30-06-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
¿Me han timado con mi monitor?
Código Delphi [-]
Format('%d x %d %F pulgadas', [HSize, VSize,  SQRT(IntPower(VSize ,2)+ IntPower(HSIZE, 2))/25.4])

Teniendo en cuenta que las pulgadas son en la diagonal de la pantalla, y que Una pulgada son 25.4 milímetros, segun pitagorin me sale 15,60 pulgadas, y yo compré uno de 17''

Edito: La diagonal ppal si me da 400 milímetros y medidos con regla es eso, ¿estoy haciendo mal el cálculo?
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 30-06-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Pues se supone que yo tengo un monitor de 15 pulgadas (configurado a 1024x768) y me da el mismo resultado: "320x240 15.75 pulgadas". Y según pitagorin parace que esta bien el cálculo.

Por otro lado, por alguna extraña razón no puedo usar la función IntPower me marca "missing operator or semicolon" en la línea:
Diag:=IntPower(VSize,2);

si, agregue la unidad Math.
__________________

Responder Con Cita
  #9  
Antiguo 30-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Has tomado una regla y medido tu monitor?

No sé en qué se base GetDeviceCaps para tales medidas. Debo aclarar que le referencia donde consulté esto es el clásico libro Programming Windows 95 de Charles Petzold quien indica que las medidas se basan en ciertos estándares y no es algo que proporcione directamente el driver del monitor.

Además las medidas suelen diferir de lo que el comerciante anuncia. En mi caso, mi laptop se anunciaba con un monitor de 15.2 pulgadas y sin embargo su superficie visible era exactamente igual a la del monitor de 17 pulgadas de mi computadora de escritorio.

Si lo que el fabricante anuncia no coincide con la realidad, pues dudo que haya una forma fidedigna de obtener estas medidas.

De cualquier manera, reitero mi opinión muy personal. Si instalo una aplicación que me cambia la resolución de mi monitor, es seguro que la desinstale al momento.

// Saludos
Responder Con Cita
  #10  
Antiguo 30-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por ContraVeneno
Por otro lado, por alguna extraña razón no puedo usar la función IntPower me marca "missing operator or semicolon" en la línea:
Diag:=IntPower(VSize,2);
¿Estás seguro de que el operador o punto y coma faltante no es el de la línea anterior? Cuando esto sucede el compilador se detiene en la siguiente línea.

// Saludos
Responder Con Cita
  #11  
Antiguo 30-06-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Saludos
Código Delphi [-]
Format('%d x %d %F pulgadas', [HSize, VSize,  SQRT(IntPower(VSize ,2)+ IntPower(HSIZE, 2))/25.4])
No funciona bien del todo
Tengo una lapto de 15 pulgadas en:
1024x768 = 270x 203 13.30 pulgadas
800x600 = 211 x 158 10.38 pulgadas
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #12  
Antiguo 30-06-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Así es Roman, de hecho estaba pensando que hubiera sido mejor poner:
Código Delphi [-]
  HSize := GetDeviceCaps(DC, HORZSIZE);
  Diag:=IntPower(VSize,2); //Error en esta línea
  VSize := GetDeviceCaps(DC, VERTSIZE);

que haber puesto una sola línea, pero bueno... Muchas veces me he topado con ese error y en muchos lenguajes diferentes y precisamente por ser el error más común fue lo que me pareció más extraño.
__________________

Responder Con Cita
  #13  
Antiguo 01-07-2005
serhasae serhasae is offline
Miembro
 
Registrado: jun 2004
Ubicación: España
Posts: 117
Poder: 20
serhasae Va por buen camino
A ver el Diag ahi para que lo utilizais, como quedaria la funcion final, veo muchas modificaciones, mmm. Alguna funciona de lujo?. Veo que el tema interesa. Saludos.
Responder Con Cita
  #14  
Antiguo 01-07-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Mi último mensaje era solo porque no puedo usar la función IntPower pero es algo que para mi no tiene relevancia porque no lo utilizó, soo que cuando quise hacer el ejemplo me aparecieron esos errores que menciono... pero para la escencia del tema no tiene importancia
__________________

Responder Con Cita
  #15  
Antiguo 03-07-2005
serhasae serhasae is offline
Miembro
 
Registrado: jun 2004
Ubicación: España
Posts: 117
Poder: 20
serhasae Va por buen camino
A ver probando en un monitor de 17 pulgadas de sobremesa, da siempre 320 x 240, y 15.75 pulgadas, tanto a 1024x768, como a 800x600, si aumentas la resolucion ya va variando a 1280 320x192, 14.69. Hacer la prueba con los de 15 a ver que da, no tengo ninguno, lo que pasa es que me doy cuenta que le monitor si es portatil (laptop) creo que va de otra manera. Conseguiremos sacar algo que funcione, dificiil lo veo, jaja. Saludos.

Última edición por serhasae fecha: 03-07-2005 a las 01:10:49.
Responder Con Cita
  #16  
Antiguo 03-07-2005
serhasae serhasae is offline
Miembro
 
Registrado: jun 2004
Ubicación: España
Posts: 117
Poder: 20
serhasae Va por buen camino
Investigando encontre esto:

Otra característica fundamental es el tamaño del monitor, es decir, la longitud de la diagonal medida en pulgadas, siendo valores habituales: 14 pulgadas (35,4 cm), 15 pulgadas (37,9 cm), 17 pulgadas (43 cm), 20 pulgadas (50,6 cm), 21 pulgadas (53,1 cm), 28 pulgadas (70,8 cm) y 34 pulgadas (86 cm).
Sin embargo, el tamaño del monitor y su AVR (área de visualización real) son completamente diferentes. Al hablar del tamaño del monitor, se hace referencia la diagonal del tubo de imagen, técnicamente llamado tubo de rayos catódicos (CRT). El AVR del monitor hace referencia a la longitud de la diagonal de la pantalla, y dicha medida es variable pues se encuentra en función del fabricante y modelo. El AVR suele encontrarse entre 13,3 y 14 pulgadas (33,7 y 35,5 cm.) en los monitores de 15 pulgadas de tamaño, y de 15,6 a 16,8 pulgadas (39,6 y 42,6 cm.) en los de 17. Esto me es mas coherente lo que no entiendo es porque al cambiar la resoulcion el AVR cambia. Saludos.

Última edición por serhasae fecha: 03-07-2005 a las 01:39:03.
Responder Con Cita
  #17  
Antiguo 03-07-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Muy interesante esa información, y la verdad es que cuadra con todo lo dicho.

Cita:
Empezado por serhasae
lo que no entiendo es porque al cambiar la resoulcion el AVR cambia.
Al leer esto inmediatamente he pensado en los juegos, pones resolución de 1024 y ocupa toda la pantalla, pones 800 y queda un marco negro a su alrededor, obviamente el área de visualización real ha disminuido. Que conste que es por buscarle una lógica, no quiero decir que tenga razón .

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 07:30:20.


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