Jump to content


Photo

Problemas al cambiar color de fondo de un form MDI


  • Please log in to reply
8 replies to this topic

#1 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 posts
  • LocationPinar del Río, Cuba

Posted 09 May 2009 - 11:54 AM

Hola a todos
Tengo una aplicación estilo MDI, y en dependencia de un evento quiero cambiarle el color de fondo del formulario padre o principal.

  Color:=clSilver;
  Repaint;

Pero de esta forma no hace el cambio de color. Si miniminizo o le cambio el tamaño al form, si le cambia el color.
Es como si el Repaint no estuviera funcionando.

Que tengo que hacer para que cuando ocurra el evento, se cambie el color de fondo?
  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 09 May 2009 - 12:37 PM

Hola _Jose_, ¿podrí­as facilitarnos el código completo donde cambias el color?, ¿en qué evento o momento realizas el cambio?.

Saludos.
  • 0

#3 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 posts
  • LocationPinar del Río, Cuba

Posted 11 May 2009 - 06:23 AM

El cambio lo hago mediante una opcion del Menú, que tambien tiene su equivalente en la barra de herramientas, pero es el mismo evento.



delphi
  1. Color:=clSilver;
  2. Repaint;
  3. ...
  4. // Otros cambios de activacion o desactivacion de opciones del menu y barra de herramientas



Probe abriendo un formulario y hacer el cambio desde un boton de ese formulario, pero cuando lo cierro solo se ve cambiado el lugar donde estaba el formulario, el resto del fondo sigue igual


  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 11 May 2009 - 11:21 AM

Hola _Jose_, ¿por qué no mejor colocas un Panel y así­ le cambias el color y te olvidas del problema del repintado?:



delphi
  1. procedure TForm1.Azul1Click(Sender: TObject);
  2. begin
  3. Panel1.Color := clBlue;
  4. end;



Saludos.
  • 0

#5 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 posts
  • LocationPinar del Río, Cuba

Posted 11 May 2009 - 11:46 AM

Probe como me dices, pero las ventanas hijas me salen detras del Panel
  • 0

#6 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 11 May 2009 - 01:30 PM

Probe como me dices, pero las ventanas hijas me salen detras del Panel


Ok, intenta poner este pequeño código en el evento OnCreate (También puede ser en el OnShow) del Formulario MDI Padre:



delphi
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. begin
  3. Panel1.Parent := Form1;
  4. end;



Y nos comentas como te fue.

Saludos.
  • 0

#7 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 11 May 2009 - 01:59 PM

Bueno, veo que no funciona, quita el panel y coloca éste código en un Item del menú:



delphi
  1. procedure TForm1.Azul1Click(Sender: TObject);
  2. begin
  3. Form1.Visible := False;
  4. Form1.Color := clBlue;
  5. Form1.Visible := True;
  6. Refresh;
  7. end;



Así­ me funcionó perfecto. :D

Saludos.
  • 0

#8 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 posts
  • LocationPinar del Río, Cuba

Posted 11 May 2009 - 02:37 PM

Muchas Gracias enecumene

Así­ me funciono Ok  :D
  • 0

#9 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 posts
  • LocationPinar del Río, Cuba

Posted 12 May 2009 - 10:03 AM

Una solucion mejor



delphi
  1. var
  2.   R: TRect;
  3.  
  4. begin
  5.   Color := clBlue;
  6.   R := ClientRect;
  7.   Windows.InvalidateRect(ClientHandle, @R, true);
  8. end;



Esta acción obliga el repintado de la ventana cliente
  • 0




IP.Board spam blocked by CleanTalk.