Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-02-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 19
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por gluglu Ver Mensaje
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.
No se si sera lo que estas necesitando , pero puedes mirar las propiedades BorderWidth y BorderStyle del formulario ,en especial la segunda ya que te permite cambiar el estilo del borde..
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.
Responder Con Cita
  #2  
Antiguo 02-02-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
API GetWindowRect

Ejemplo Fácil en un formulario simple con un botón: Encontrar el Alto y el Ancho de nuestro formulario:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  WR: TRect;
  Ancho: integer;
  Alto: integer;
begin
  Windows.GetWindowRect(Handle, WR);
  Ancho:= WR.Right - WR.Left;
  Alto:= WR.Bottom - WR.Top;
end;

Saludos.
Responder Con Cita
  #3  
Antiguo 02-02-2010
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,
yo uso Height - ClientHeight, Width-ClientWidth. Saludos.
Responder Con Cita
  #4  
Antiguo 02-02-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is online now
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
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.
Responder Con Cita
  #5  
Antiguo 02-02-2010
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: 19.437
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
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.
Responder Con Cita
  #6  
Antiguo 03-02-2010
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 23
gluglu Va por buen camino
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 !
Responder Con Cita
  #7  
Antiguo 15-12-2010
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 24
mlara Va por buen camino
Cita:
Empezado por gluglu Ver Mensaje
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.
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.
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

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


La franja horaria es GMT +2. Ahora son las 19:40:52.


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