Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-11-2007
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Poder: 21
VRO Va por buen camino
Cambiar fuente del menu

Hola, ¿hay alguna manera de cambiar las fuentes que se usan en los menus? ¿y en todo el programa?.

Gracias por adelantado.
Responder Con Cita
  #2  
Antiguo 14-11-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por VRO Ver Mensaje
Hola, ¿hay alguna manera de cambiar las fuentes que se usan en los menus? ¿y en todo el programa?.

Gracias por adelantado.
Si, hay manera de hacerlo, pero antes de decir cualquier cosa respondeme lo siguiente... ¿Realmente te refieres a todo en el programa, Osea Menus, Botones, Paneles, Titulos, etc, etc... o solo a algunos controles en especifico?
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 15-11-2007
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Poder: 21
VRO Va por buen camino
Cambiar fuente

Correcto, me estoy refiriendo a cambiar la fuente de cualquier control para todo el programa.

Gracias por responder
Responder Con Cita
  #4  
Antiguo 15-11-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Hay dos posibilidades, tu decides cual es mejor para vos .

1) Bueno, para ser sincero no encontre una clase donde Font sea una propiedad común, en un principio creí que sería TWinControl pero pensandolo un poco mas y al ver que no tenia esa propiedad entendí que no tendria mucho sentido, quizá porque hay WinControls que no necesitan un Font (Como por ejemplo el TScrollBar)... en todo caso podriamos "engañar" un poco esto y hacerle creer a todos por unos instantes que solo estamos trabajando con Edits... despues de todo los demas tambien son descendientes de TControl y podemos hacer un Cast entre ellos, asi:

Código Delphi [-]
procedure CambiarFont(Forma :TForm; Fuente :String);
var
  i :Integer;
begin
  for i := 0 to Forma.ControlCount -1  do
  begin
    TEdit(Forma.Controls[i]).Font.Name := Fuente;
  end;
end;

Donde Forma es el formulario al que queremos aplicar dicho algortimo y fuente es el nombre de la fuente que queremos ver...


2) Todo lo anterior no seria necesario si tenemos todos los controles con su propiedad ParentFont en True y luego simplemente cambiamos el Font del formulario con una funcion tan sencilla como la siguiente:

Código Delphi [-]
procedure CambiarFont(Forma :TForm; Fuente :String);
begin
  Forma.Font.Name := Fuente;
end;

Automaticamente todos los controles que esten sobre él cambiaran su tipo de letra.

Espero que esto 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/
Responder Con Cita
  #5  
Antiguo 15-11-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
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
  #6  
Antiguo 15-11-2007
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Poder: 21
VRO Va por buen camino
Wink Cambiar fuente

Muchas gracias por tus respuesta jhonny, voy a probarlas
Responder Con Cita
Respuesta



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 19:19:31.


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
Copyright 1996-2007 Club Delphi