Buenas tardes amigo....
Hace algunos años llegué a utilizar ese componente y me ví con el mismo problema. La solución es utilizar los métodos "BeginUpdate" y "EndUpdate" para que los cambios se vean reflejados en tiempo de ejecución.
Lo que no estoy 100% seguro es el nombre de esos métodos (puede que hayan cambiado, ya no dispongo de código fuente disponible para confirmarlo) pero suponiendo que así se llaman, a tu código solo le falta quedar como sigue:
Código Delphi
[-]
mnuPrincipal:= TBCBarMainMenu.create(Self);
with mnuPrincipal do
begin
BeginUpdate();
MenuStyle:= msWindowsXP;
Bar.Side:= sLeft;
Bar.BarCaption.Visible:= True;
Bar.BarCaption.Direction:= dDownToUp;
Bar.BarCaption.Caption:= ModDatos1.CDSComun5.fieldbyname('caption').AsString;
Bar.GradientStart:= StringtoColor(ModDatos1.CDSComun5.fieldbyname('color1').AsString);
Bar.GradientEnd:= StringtoColor(ModDatos1.CDSComun5.fieldbyname('color2').AsString);
Bar.GradientStyle:= gsHorizontal;
Separators.SeparatorStyle:= ssShortLine;
Separators.GradientStart:= StringtoColor(ModDatos1.CDSComun5.fieldbyname('color1').AsString);;
Separators.GradientEnd:= StringtoColor(ModDatos1.CDSComun5.fieldbyname('color2').AsString);
EndUpdate();
end;
frmPrincipal.Menu:= mnuPrincipal;