Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Problemas por causa del componente TXPManifest (https://www.clubdelphi.com/foros/showthread.php?t=61977)

rgstuamigo 28-11-2008 19:52:09

Problemas por causa del componente TXPManifest
 
Hola amigos,tengo una aplicacion con mucho pero muchos formularios donde tengo paneles ,GroupBox,etc , que tienen diferentes colores; el problema es que puse en el Form Principal un componente TXPManifest para ver que efecto tiene en tiempo de ejecusion y es como dice roman en este hilo lo mismo que hace con ese pequeño truquito, mi problema es que cuando corre mi aplicasion y veo mis formularios estos han cambiado de color especial mente los GroupBox,paneles,etc, me sale todo feo,trate de solucionarlo quitando el componente TXPManifest de mi formulario pero igual sigue saliendome asi, recalco esto solo ocurre en tiempo de ejecusion, ya que mirando los formularios en tiempo de diseño me sale todo bien con sus colores respectivos.
Como puedo hacer para quitar ese efecto de mi aplicacion y que quede todo normal, pues son muchos formularios y no quisiera hacer todo de nuevo:o.
Saludos......

Héctor Randolph 28-11-2008 20:09:44

Es muy probable que tu código está llamando a la unidad XPMan, aún eliminando el componente XPManifest esta unidad agrega el siguiente archivo al proyecto y por eso quedan activados los temas XP.

Código Delphi [-]
  {$R WindowsXP.RES}

Simplemente elimina XPMan de los uses y listo.

Saludos

jorge82 28-11-2008 20:11:26

Elimina de tu clausula uses la unidad XPMan

Edito: Ups!, se me adelanto Héctor Randolph

rgstuamigo 28-11-2008 20:17:24

Efectivamente
 
Efectivamente amigo Héctor Randolph ....eso era:eek::D...
Gracias tambien a ti jorge82....por responder.
Pero me queda una dudita..¿Por que ocurre eso? ¿Hay forma de poner este componente pero que no me cambie los colores?¿O no se puede?:confused:.
Saluditos....:)

jorge82 28-11-2008 20:18:55

El comportamiento de algunos componentes cuando esta habilitado el tema de Windows (con un XPManifest), al parecer es debido a que al momento de crearse (en el constructor), se asigna como color de fondo, el color de su Parent, o sea si tenemos un TPanel sobre un formulario y la asignamos un color al Panel, en tiempo de ejecución ese color desaparace y en su lugar cambia el color al color del fondo de su Parent, en este caso el formulario.

Este comportamiento lo he podido evitar agregando lo siguiente en el OnCreate del formulario:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  Panel1.ControlStyle := Panel1.ControlStyle - [csParentBackground];
end;

Y bueno, esto no solo sirve para los paneles, hay mas componentes que se crean de esa manera (desconozco porque) cuando hay un XPManifest.

Espero sea de utilidad.

rgstuamigo 28-11-2008 20:26:36

Si solucionaste de esa manera quiere decir que podriamos hacer un proceso que recorra todos los formularios y haga lo mismo que tu haces con todos los componentes para que no ocurra esto. Lo malo es que no se como hacerlo...Nesesito sugerenciaS.:)
SALUDOS...

Caro 28-11-2008 20:39:39

Hola, yo lo he solucionado desde diseño, poniendo la propiadad ParentBackGround a False, en el caso de los Panels, ya viene con False, pero si lo pones en True y luego en false nuevamente te aceptara el color que le pongas sin tomar en cuenta el color del Parent, esto en Delphi7.

Saluditos

rgstuamigo 28-11-2008 20:46:12

Gracias Caro muy buen truco......Funcionaaa :):D...

jorge82 29-11-2008 00:14:10

Cita:

Empezado por Caro (Mensaje 328657)
Hola, yo lo he solucionado desde diseño, poniendo la propiadad ParentBackGround a False, en el caso de los Panels, ya viene con False, pero si lo pones en True y luego en false nuevamente te aceptara el color que le pongas sin tomar en cuenta el color del Parent, esto en Delphi7.

Saluditos

Cierto amiga Caro, no me había dado cuenta de ese comportamiento, de esa manera se 'obliga' a que la propiedad ParentBackground se guarde en el archivo .dfm, lo cual no sucede por default.

Gracias.


La franja horaria es GMT +2. Ahora son las 14:10:25.

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