Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Diseño menu no cambia en tiempo ejecución (https://www.clubdelphi.com/foros/showthread.php?t=64343)

Rockin 27-03-2009 16:01:36

Diseño menu no cambia en tiempo ejecución
 
Muy buenas a todos, tengo un pequeño problema al crear un menu en tiempo de ejecución. Os explico brevemente el funcionamiento.
Cuando un usuario se loga comprueba en la BD que tipo de menú tiene asignado. Este menú ha sido diseñado previamente con otra aplicación, la cual guarda en una BD el aspecto del menu, los items y las acciones.

Cuando se crea el menu, tanto los items y las acciones me las crea perfectamente, pero sin embargo el aspecto del menú no cambia nada.

Uso el componente BarMenu de BlueCave, http://www.bluecave.net/products/barmenus/.

Os adjunto el codigo de como cambio el aspecto del menú, por si hay algo que estoy olvidando.

Saludos y gracias.

Código Delphi [-]
mnuPrincipal:= TBCBarMainMenu.create(Self);
      with mnuPrincipal do
      begin
      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);
      end;
frmPrincipal.Menu:= mnuPrincipal;

nuk3zito 29-03-2009 03:15:17

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;

Rockin 29-03-2009 21:30:29

Mañana en cuanto llegue a la oficina lo pruebo y te digo algo.
Gracias de antemano.

Rockin 30-03-2009 10:13:24

Funciona perfectamente, muchas gracias.

Saludos.

nuk3zito 30-03-2009 18:01:54

Que bien!

Oye, por cierto, entré a la pagina de esos componentes y veo que no han actualizado desde hace un buen. Como quiera, esos menús siguen estando muy muy bonitos.

Saludos.


La franja horaria es GMT +2. Ahora son las 06:28:16.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi