Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 15-11-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.070
Poder: 32
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, estuve investigando un poco y note que para cambiar el tipo de fuente en un TMenu es necesario interceptar el evento OnDrawItem de los MenuItems, por ejemplo asi:

Código Delphi [-]
procedure TForm1.Prueba11DrawItem(Sender: TObject; ACanvas: TCanvas;
  ARect: TRect; Selected: Boolean);
begin
  ACanvas.Font.Name := 'Comic Sans MS';
  ACanvas.TextRect(ARect, ARect.Left, ARect.Top, StringReplace(TMenuItem(Sender).Caption,'&', '', []));
end; 
  // Para que este evento se "dispare" es necesario tener la propiedad
  // OwnerDraw del TMainMenu en True...

Pero como lo que queremos es cambiarlo en todos los items de menu del TMainMenu, pues podemos recorrer todos los Items de menu asignandole a este evento uno que nosotros creamos "manualmente", asi por ejemplo:

Código Delphi [-]
//Este es el metodo que creamos "manualmente", muy parecido al OnDrawItem 
//original, para poderlo asignar mas adelante
procedure TForm1.AplicarEstoAlDibujar(Sender: TObject; ACanvas: TCanvas;
  ARect: TRect; Selected: Boolean);
begin
  ACanvas.Font.Name := 'Comic Sans MS';
  ACanvas.TextRect(ARect, ARect.Left, ARect.Top, StringReplace(TMenuItem(Sender).Caption,'&', '', []));
end; 


//Con el siguiente metodo recorremos todos los Items del Menu y le
//asignamos al evento OnDrawItem del Item en curso el metodo anterior

procedure TForm1.CambiarFontMenus(vMenu :TMenuItem; Indice :Integer = 0);
var
  i :Integer;
begin
  if vMenu.MenuIndex <> -1 then
  begin
    vMenu.OnDrawItem := AplicarEstoAlDibujar; //<-- Aqui lo asignamos
  end;

  if vMenu.Count > 0 then
  for i := 0 to vMenu.Count -1 do
  begin
    CambiarFontMenus(vMenu.Items[i]); //<- Aplicamos una retroalimentación
  end;
end;


//El siguiente metodo es un ejemplo de llamar al metodo anterior...
procedure TForm1.FormCreate(Sender: TObject);
begin
  CambiarFontMenus(Self.Menu.Items);
end;

Espero que todo este asunto te sirva de algo .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 15-11-2007 a las 19:36:29. Razón: Mejorar un poco el primer metodo...
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cambiar el estilo de fuente de un edit creus Varios 2 21-10-2006 20:34:47
cambiar Color de la fuente de un Tdbedit nenufer OOP 8 26-05-2006 16:30:52
Cambiar el color de la fuente chipsoni Varios 2 24-04-2006 13:52:12
Cambiar fuente dentro de DBgrid zugazua2001 Gráficos 2 14-06-2005 22:13:33
cambiar fuente en TTreeView nicocer Varios 3 06-09-2004 02:46:04


La franja horaria es GMT +2. Ahora son las 15:26:48.


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