604
社区成员




void __fastcall TColorPanel::SetPanelBeginColor(TColor Value)
{
if(m_clPnlColorBegin != Value)
{
m_clPnlColorBegin = Value;
Perform(CM_COLORCHANGED, 0, 0);
}
}
procedure TControl.SetColor(Value: TColor);
begin
if FColor <> Value then
begin
FColor := Value;
FParentColor := False;
Perform(CM_COLORCHANGED, 0, 0);
end;
end;
procedure TControl.CMColorChanged(var Message: TMessage);
begin
Invalidate;
end;
Perform(CM_COLORCHANGED, 0, 0);
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(CM_COLORCHANGED,TMessage ,WMDoColorChanged);
END_MESSAGE_MAP(TCustomControl)
//处理CM_COLORCHANGED事件
MESSAGE void __fastcall WMDoColorChanged(TMessage &Msg)
{
Repaint(); //重绘自己(不是必须)
Broadcast(&Msg);//这里是关键,吧消息广播出去
};
TMessage msg;
msg.Msg = CM_COLORCHANGED;
msg.WParam = 0;
msg.LParam = 0;
Broadcast(&msg);