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?
Problemas al cambiar color de fondo de un form MDI
Comenzado por
JoAnCa
, may 09 2009 11:54
8 respuestas en este tema
#1
Escrito 09 mayo 2009 - 11:54
#2
Escrito 09 mayo 2009 - 12:37
Hola _Jose_, ¿podrías facilitarnos el código completo donde cambias el color?, ¿en qué evento o momento realizas el cambio?.
Saludos.
Saludos.
#3
Escrito 11 mayo 2009 - 06:23
El cambio lo hago mediante una opcion del Menú, que tambien tiene su equivalente en la barra de herramientas, pero es el mismo evento.
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
delphi
Color:=clSilver; Repaint; ... // 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
#4
Escrito 11 mayo 2009 - 11:21
Hola _Jose_, ¿por qué no mejor colocas un Panel y así le cambias el color y te olvidas del problema del repintado?:
Saludos.
delphi
procedure TForm1.Azul1Click(Sender: TObject); begin Panel1.Color := clBlue; end;
Saludos.
#5
Escrito 11 mayo 2009 - 11:46
Probe como me dices, pero las ventanas hijas me salen detras del Panel
#6
Escrito 11 mayo 2009 - 01:30
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
procedure TForm1.FormCreate(Sender: TObject); begin Panel1.Parent := Form1; end;
Y nos comentas como te fue.
Saludos.
#7
Escrito 11 mayo 2009 - 01:59
Bueno, veo que no funciona, quita el panel y coloca éste código en un Item del menú:
Así me funcionó perfecto.
Saludos.
delphi
procedure TForm1.Azul1Click(Sender: TObject); begin Form1.Visible := False; Form1.Color := clBlue; Form1.Visible := True; Refresh; end;
Así me funcionó perfecto.
Saludos.
#8
Escrito 11 mayo 2009 - 02:37
Muchas Gracias enecumene
Así me funciono Ok
Así me funciono Ok
#9
Escrito 12 mayo 2009 - 10:03
Una solucion mejor
Esta acción obliga el repintado de la ventana cliente
delphi
var R: TRect; begin Color := clBlue; R := ClientRect; Windows.InvalidateRect(ClientHandle, @R, true); end;
Esta acción obliga el repintado de la ventana cliente