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
Started by
JoAnCa
, May 09 2009 11:54 AM
8 replies to this topic
#1
Posted 09 May 2009 - 11:54 AM
#2
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.
Saludos.
#3
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.
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
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?:
Saludos.
delphi
procedure TForm1.Azul1Click(Sender: TObject); begin Panel1.Color := clBlue; end;
Saludos.
#5
Posted 11 May 2009 - 11:46 AM
Probe como me dices, pero las ventanas hijas me salen detras del Panel
#6
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
procedure TForm1.FormCreate(Sender: TObject); begin Panel1.Parent := Form1; end;
Y nos comentas como te fue.
Saludos.
#7
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ú:
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
Posted 11 May 2009 - 02:37 PM
Muchas Gracias enecumene
Así me funciono Ok
Así me funciono Ok
#9
Posted 12 May 2009 - 10:03 AM
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