// Nachrichten an untergeordnete Komponenten werden "mitgehört"
// und darauf reagiert. Im Beispiel geht es um die Farbänderung eines TPanel.
// Getestet mit D4 unter XP
type
TForm1 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
OldProc: TWndMethod;
procedure NewProc(var M: TMessage);
procedure Anzeige;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Anzeige;
begin
label1.caption := 'Farbe = ' + ColorToString(Panel1.Color);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
OldProc := Panel1.WindowProc;
Panel1.WindowProc := NewProc;
anzeige;
end;
procedure TForm1.NewProc(var M: TMessage);
begin
OldProc(M);
if M.Msg = CM_COLORCHANGED then anzeige;
end;
// Beispiel
procedure TForm1.Button1Click(Sender: TObject);
begin
Panel1.Color := clRed;
application.processmessages;
sleep(1250);
Panel1.Color := clWindow;
application.processmessages;
sleep(1250);
Panel1.Color := $80FF;
application.processmessages;
sleep(1250);
Panel1.Color := $8000FF;
application.processmessages;
sleep(1250);
Panel1.Color := clBtnFace;
end;