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 17-12-2009
Nasca Nasca is offline
Miembro
 
Registrado: abr 2007
Ubicación: Almería (España)
Posts: 249
Poder: 18
Nasca Va por buen camino
Tratamiento de relleno de borde en Windows Vista/7 sobre Delphi 7

Tengo un problema con el coñazo relleno de borde que incorporó Windows Vista y hereda el 7. El border padding creo que se llama en inglés.

Trabajo con formularios con ajuste dinámico y parte del mismo se queda fuera de visualización cuando el relleno está a su valor por defecto: 4

Dado que por ahora el sistema mas extendido en el mundo de la empresa es XP no me parece correcto desarrollar dejando tanto espacio adicional libre en los formularios.

Ya sé que a partir de Delphi 2007 este tema se soluciona por el propio IDE, lo que sucede es que por ahora no me puedo plantear el cambio de versión de Delphi. Quiero resolverlo sin salir de Delphi 7, que aparte de por esto ahora mismo me resuelve todas mis necesidades.

He investigado varias opciones pero no he conseguido ninguna solución que no pase por modificar ese valor de relleno en el propio Windows.

Una primera solución podría pasar por modificar el tamaño del formulario de forma previa a su visualización. Dado que la mayoría de mis formularios se crean de forma dinámica sería una opción viable. Sin embargo no he conseguido modificar el alto y ancho sin que se lance el proceso de auto-ajuste de los controles al nuevo tamaño, por lo que siguen saliéndose del área de visualización. No sé si es posible desactivar provisionalmente este mecanismo sin necesidad de recorrer todos los componentes del formulario.
Incluso si sería posible modificar el recurso del formulario de forma previa a su lanzamiento. En el IDE este mecanismo se desactiva si editas directamente en modo texto el formulario, pero ni idea de cómo podría hacerse en ejecución.

Otra opción que se me ocurre sería gestionar el dibujado de la ventana sobre estos sistemas. Es esta entrada se recopila alguna información al respecto pero no he conseguido hacerlo funcionar:
Removing Vista Aero Border

¿Alguno se ha enfrentado a este problema y lo ha solucionado? O ha necesitado tirar de mecanismos similares o alternativos a los planteados en otro tipo de problemas que se puedan aplicar aquí.

Gracias.
Responder Con Cita
  #2  
Antiguo 25-06-2010
Nasca Nasca is offline
Miembro
 
Registrado: abr 2007
Ubicación: Almería (España)
Posts: 249
Poder: 18
Nasca Va por buen camino
Al final he conseguido la forma de hacerlo. La clave está en redefinir el procedure Loaded del formulario.

Bendito "La cara oculta de Delphi 6" todavía me sigue aportando buenas soluciones e ideas. Tengo que volverlo a releer cuando tenga tiempo.
Responder Con Cita
  #3  
Antiguo 26-06-2010
Avatar de Lord Delfos
Lord Delfos Lord Delfos is offline
Miembro
 
Registrado: ene 2008
Ubicación: Tandil, Argentina
Posts: 558
Poder: 17
Lord Delfos Va por buen camino
Amigo Nasca, ¿me podrías decir cuál fue la solución? Yo no me he topado con el problema todavía pero sería interesante estar preparado....

De paso queda registrado para otros que vengan buscando la solución al mismo problema.

Saludetes.
Responder Con Cita
  #4  
Antiguo 26-06-2010
Nasca Nasca is offline
Miembro
 
Registrado: abr 2007
Ubicación: Almería (España)
Posts: 249
Poder: 18
Nasca Va por buen camino
Todavía no lo ha implementado pero para que se hagan una idea, un poco de código a nivel de formulario:

Código Delphi [-]
protected
   procedure Loaded; override;

procedure TfEditarRegistro.Loaded;
begin
  inherited Loaded;
  Self.Height := Self.Height + 30;
  Self.Width := Self.Width + 30;
end;

Este casi mágico procedimiento permite modificar las propiedades de los formularios guardados como recursos antes de que empiecen a tenerse en cuenta. Por ello no se activan los ajustes dinámicos de los controles cuando cambiamos las dimensiones del formulario.

Espero que les sea de utilidad, me ha costado encontrar esta solución.
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
Compartir archivos entre Windows Vista sobre VirtualBox y Windows XP como host mlara Windows 2 27-03-2009 09:27:28
¿Como saber que mi programa esta corriendo sobre Windows Vista? xander API de Windows 3 22-09-2007 00:25:40
Más sobre Windows Vista gluglu Noticias 26 03-02-2007 15:48:30
Duda sobre entorno Delphi para Windows Vista geru_deusto Varios 9 12-01-2007 13:07:12
Pregunta sobre windows vista lookmydoom Windows 1 13-07-2006 09:27:15


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


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