DELPHI MANIA
www.delphimania.com.ar
 
 
 
  Delphi Mania  >> Trucos >> Fuentes
 
   
   
   
   
 
   
   
   
   
   
     
     
     
     
     
     
     
 
Pregunta: ¿Cómo puedo mostrar las Fuentes en su propio formato en un comboBox?
 
Grupo: Fuentes Versiones    : D1 D2 D3 D4 D5 D6
Fecha: 07/11/01 Enviado por : Delphimania
Ejemplo D6: Fuentes en combo.zip  

Respuesta:

      Mostrar las Fuentes escritas con su propio formato es sencillo. Delphi posee dos variables de donde puedes obtener facilmente las Fuentes. Estas variables son Screen y Printer, que tienen  una propiedad  Fonts que  almacena los nombres de las Fuentes disponibles. La primera hace referencia a aquellas Fuentes que pueden ser utilizadas en pantalla, y la segunda a las que pueden ser utilizadas en impresoras. Si bien la mayoría de las Fuentes están disponibles para ambos dispositivos, hay algunas que solo están en uno y no en el otro, y viceversa. La propiedad Fonts pertenece a la Clase TStrings, asi que para acceder al string en la posición n debemos escribir Fonts.Items[n], mientras que para obtener la cantidad de elementos que contiene debemos escribir: Fonts.Count. Para mostrar las Fuentes necesitamos un ComboBox, al que debemos modificar la propiedad Style a csOwnerDrawFixed o csOwnerDrawVariable a través del inspector de objetos o antes de graficar el control en tiempo de ejecución. Por ejemplo:

procedure TForm1.FormCreate(Sender: TObject);
begin
  comboBox1.Items := Screen.Fonts;    //Fuentes de pantalla o
  comboBox1.Items := Printer.Fonts;   //Fuentes de impresora.
  comboBox1.Style := csOwnerDrawFixed;//Agregar uses Printer
end;

 

       Como la propiedad Style tiene el valor csOwnerDrawFixed, el comboBox va a generar el evento OnDrawItem para que nosOtros dibujemos cada casilla que requiera ser dibujada, tanto en la lista desplegable como en el editor. Entonces debemos escribir en el evento OnDrawItem el siguiente código::

procedure TForm1.comboBox1DrawItem(Control: TWinControl;     Index: Integer; Rect: TRect; State: TOwnerDrawState);
var s: String;
begin
  //Seleccion de fuente para escribir su nombre 
  s := ComboBox1.Items[Index];
  comboBox1.Canvas.Font.Name := s;
  With ComboBox1.Canvas Do
  Begin

    //Ajuste de tamaño en rect. donde dibuja nombre de fuente     //con centrado Vertical
    Font.Size := - ComboBox1.ItemHeight + 6;
    TextRect(Rect, 5,
            (Rect.Bottom+Rect.Top-TextHeight(s))Div 2, s);
  end;
end;

 
 
 
 
   
DELPHI MANIA  
 
Las marcas que aparecen en esta pagina pertenecen a sus respectivas empresas
Todos los derechos reservados - Copyrigth 2001 ©