FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Como obtener el ancho del borde de las ventanas de Windows
Después de mucho tiempo vuelvo a saludaros a tod@s !
Y tengo una preguntita : Como puedo obtener en mi programa Delphi el valor del ancho del borde de las ventanas en Windows ? Resulta que entre Windows XP y Windows 7 (p.ej.), el ancho del borde de las ventanas cambia, y en algunas ocasiones me fastidia en cierta manera ese cambio, por lo que necesitaria saber qué varible de Windows guarda dicho valor, y como obtenerlo desde Delphi. Gracias como siempre por vuestra ayuda.
__________________
Piensa siempre en positivo ! |
#2
|
||||
|
||||
Hola, gluglu, no conozco la respuesta a tu pregunta , pero quiero saludarte, tanto tiempo ya, espero que sigas bien y con tu afición tan bonita bajo los mares
|
#3
|
||||
|
||||
Gracias Casimiro !
Nunca he dejado de consultar por estos lares pero he intentado dedicar el mayor tiempo posible a avanzar en mi aplicación que me está llevando mucho tiempo. .... y sí, sigo con mi afición que corresponde a mi 'nick' ! ... aunque de momento se note la crisis y no pueda disfrutar de ella tanto como quisiera !!
__________________
Piensa siempre en positivo ! |
#4
|
||||
|
||||
Cita:
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Última edición por rgstuamigo fecha: 02-02-2010 a las 14:44:58. |
#5
|
||||
|
||||
API GetWindowRect
Ejemplo Fácil en un formulario simple con un botón: Encontrar el Alto y el Ancho de nuestro formulario:
Saludos. |
#6
|
|||
|
|||
Hola,
yo uso Height - ClientHeight, Width-ClientWidth. Saludos. |
#7
|
||||
|
||||
Te recomiendo investigar la WinApi: GetSystemMetrics, creo que es exactamente lo que buscas.
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#8
|
||||
|
||||
Yo utilizo también el método de coso. Usar el Height/Width y las respectivas ClientHeight/ClientWidth.
__________________
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. |
#9
|
||||
|
||||
Muchísimas gracias a todos por vuestra ayuda. Me ha servido mucho.
El problema viene principalmente por el hecho de que mis forms con un borde de ventana tienen un tamaño predefinido por diseño, y utilizo además los 'Constraints' precisos para delimitar el tamaño máximo. Este hecho, me define como muy bien habeis indicado, el tamaño del 'Client' y con las propiedades que indicais puedo hallar el tamaño del borde de la ventana. El problema viene, tal y como indiqué, cuando porto la aplicación de Windows Xp a Windows 7. Resulta entonces que mi tamaño máximo de Form, definido en mis Constraints, es fijo, y dado que Windows 7 me modifica el tamaño del borde de la ventana respecto de Windows XP, entonces el resultado es que el 'Client' se reduce en algunos píxeles, y este es precisamente el hecho que quiero evitar. No es tanto por el tamaño del 'Client' que se vé reducido, sino este cambio se aprecia sobre todo y considerablemente cuando en determinadas partes del programa tengo que superponer ventanas a un form, tomando como referencia el borde izquierdo del 'Client'. Al ser dos forms diferentes, la referencia que tomaba es la que me daba Windows XP, sin saber que Windows 7 me cambiaría ese ancho de borde. Al cambiarlo, el left del nuevo form con respecto al form inferior, que ahora tiene un borde más ancho, es diferente. Por eso, y concluyendo, entiendo que aunque con las propiedades Width y ClientWidth puede conocer el ancho del borde, en mi caso, y por las particularidades que indico, debo de uitlizar la función GetSystemMetrics del Api de Windows. Gracias de nuevo a todos por vuestra ayuda.
__________________
Piensa siempre en positivo ! |
#10
|
||||
|
||||
Puedo preguntar qué parámetros pasas a GetSystemMetrics para lograr tu objetivo, y cuál sería la diferencia entre, por ejemplo, Width - ClientWidth y GetSystemMetrics(SM_CXBORDER)?
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre. |
#11
|
||||
|
||||
En su momento, hice varias pruebas, y finalmente deduje que la función GetSystemsMetrics siempre me devolvía (si no mal recuerdo) el valor 1, o un valor raro.
Probando con XP y W7 aparecían incongruencias que no podía controlar. Lo que entonces decidí fue que la opción que me funcionaba correctamente era Width - ClientWidth, tal y como explicaban algunos compañeros, pero ajustando los Constraints correspondientes posteriormente. El planteamiento inicial era erroneo. No debía partir de unos valores de altura y anchura de ventana, incluyendo el borde, y después ajustar esos valores dependiendo del S.O.. Lo que tenía que hace era fijar los valores de ancho y alto de mi ventana según el cliente, y después dejar que el S.O. correspondiente fijara el borde que él quisiera, incluso teniendo en cuenta los valores que el usuario hubiera podido haber cambiado en el propio S.O. para todas las demás ventanas. Lo que pasa es que en diseño, uno se fija más en los valores totales de un Form, que en los valores del Client, por lo menos en mi caso. Y eso me indujo al error cometido. Ahora lo que hago, es determinar los valores del Client, en ancho y alto, y después de que el S.O. haya creado la ventaja, fijo los valores máximos de constraints :
Espero que esta aclaración haya servido respecto del problema inicial.
__________________
Piensa siempre en positivo ! |
#12
|
||||
|
||||
Excelente, de eso se trata. Voy a probarlo.
Gracias.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Tratamiento de relleno de borde en Windows Vista/7 sobre Delphi 7 | Nasca | API de Windows | 3 | 26-06-2010 19:25:13 |
como mover un formulario sin borde | kurono | Varios | 4 | 30-04-2008 07:30:41 |
Como obtener el ancho de un WebControls.Image | selman | .NET | 0 | 23-02-2007 02:21:30 |
Obtener títulos de las ventanas | •–[XII]–• | Varios | 1 | 02-08-2004 10:23:20 |
¿Como obtener el titulo de las ventanas que se ban abriendo en windows? | jorch_yr | Varios | 2 | 15-01-2004 20:17:19 |
|