Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   obtener color de FontDialog1 (https://www.clubdelphi.com/foros/showthread.php?t=21713)

jorodgar 25-05-2005 18:13:05

obtener color de FontDialog1
 
La idea es conseguir el codigo de color, si está en negrita, si está en cursiva y el tamaño de la letra de un FontDialog1. Solo consigo el nombre de la fuente con la orden edit1.text:=RichEdit1.SelAttributes.Name.
Alguna idea ? Gracias

procedure TForm1.SelectFont(Sender :TObject);
begin
FontDialog1.Font.Assign(RichEdit1.SelAttributes);

if (FontDialog1.Execute) then
RichEdit1.SelAttributes.Assign( FontDialog1.Font );

edit1.text:= RichEdit1.SelAttributes.Name;
RichEdit1.SetFocus;
end;

jorodgar 25-05-2005 19:13:55

Ahora ya tan sólo me falta saber el color
 
Código Delphi [-]
procedure TForm1.SelectFont(Sender :TObject);
 begin
   FontDialog1.Font.Assign(RichEdit1.SelAttributes);
 
   if (FontDialog1.Execute) then
   begin
    // RichEdit1.SelAttributes.Assign( FontDialog1.Font ); // Cogeria todas las propiedades
    // Determina que propiedades coger del FontDialog
     RichEdit1.SelAttributes.Color:=FontDialog1.Font.Color;
     RichEdit1.SelAttributes.Name:=FontDialog1.Font.Name;
     RichEdit1.SelAttributes.Size:=FontDialog1.font.Size;
     RichEdit1.SelAttributes.Style:=FontDialog1.Font.Style;
   end;
 
  edit1.text:= RichEdit1.SelAttributes.Name;
  edit2.Text:=intTostr(FontDialog1.font.Size);
  if (fsBold in RichEdit1.SelAttributes.Style) then edit3.text:='negrita';
  if (fsItalic in RichEdit1.SelAttributes.Style) then edit3.text:='cursiva';
  if (fsUnderline in RichEdit1.SelAttributes.Style) then edit3.text:='subrayado';
 
  RichEdit1.SetFocus;
 end;

marcoszorrilla 25-05-2005 19:24:02

El color es un número:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntTostr(RichEdit1.Font.Color));
end;

Un Saludo.

jorodgar 25-05-2005 20:00:14

Otra solucion
 
Gracias marcos por tu aportación. Al final lo conseguí sacar con un codigo mucho mas largo, luego lo modicaré usando tu instrucción. Por si alguno le interesa otra forma de hacerlo menos optima es la siguiente :

procedure TForm1.SelectFont(Sender :TObject);
var
color,font:string;
size:integer;
negrita,cursiva,subrayado:boolean;

begin
FontDialog1.Font.Assign(RichEdit1.SelAttributes);

if (FontDialog1.Execute) then
begin
// RichEdit1.SelAttributes.Assign( FontDialog1.Font ); // Cogeria todas las propiedades
// Determina que propiedades coger del FontDialog
RichEdit1.SelAttributes.Color:=FontDialog1.Font.Color;
RichEdit1.SelAttributes.Name:=FontDialog1.Font.Name;
RichEdit1.SelAttributes.Size:=FontDialog1.font.Size;
RichEdit1.SelAttributes.Style:=FontDialog1.Font.Style;
end;

font:= RichEdit1.SelAttributes.Name;
size:=RichEdit1.SelAttributes.Size;
if (fsBold in RichEdit1.SelAttributes.Style) then negrita:=true;
if (fsItalic in RichEdit1.SelAttributes.Style) then cursiva:=true;
if (fsUnderline in RichEdit1.SelAttributes.Style) then subrayado:=true;

case RichEdit1.SelAttributes.Color of
clAqua : color:='clAgua';
clblack : color:='clBlack';
clBlue : color:='clBlue';
clCream : color:='clCream';
clDkGray : color:='clDkGray';
clFuchsia : color:='clFuchsia';
clGreen : color:='clGreen';
clLime : color:='clLime';
clLtGray : color:='clLtGray';
clMaroon : color:='clMaroon';
clMedGray : color:='clMedGray';
clMoneyGreen : color:='clMoneyGreen';
clNavy : color:='clNavy';
clOlive : color:='clOlive';
clPurple : color:='clPurple';
clRed : color:='clRed';
clSkyBlue : color:='clSkyBlue';
clTeal : color:='clTeal';
clWhite : color:='clWhite';
clYellow : color:='clYellow';
else color:='clBlack';
end;
RichEdit1.SetFocus;
end;

jachguate 25-05-2005 20:16:46

Si lo que queres es encontrar la descripción textual de un color, la unidad Graphics tiene la función ColorToString que básicamente hace lo que vos estas haciendo aqui, pero de forma mas óptima.

Hasta luego.

;)

roman 25-05-2005 20:29:30

Y como para algo ha de querer guardar el nombre del color supongo que también le interesará la función inversa StringToColor.

// Saludos

jorodgar 25-05-2005 20:36:55

Muchas gracias. Funciones que me las apunto a pesar de que con el número de color me vale. :)

dicatek 20-07-2006 21:29:18

Ola!

Esot creando una opción para que mediante un FontDialog se me cargue el nombre de la fuente y el tamaño en dos TEdits. Tengo ya todo el sistema hecho, pero la paleta que se me abre (FontDialog) hay muchas más opciones (Subrayado, Tachado, Color...) que no me interesan para nada.

Mi pregunta es si puedo editar el FontDialog para que sólo muestre el nombre y tamaño de letra

Muchas gracias!

marcoszorrilla 20-07-2006 22:47:14

Pon la propiedad fdNoStyleSel, que está en options a Falso y no se mostrará nada más que las opciones que pides.

Un Saludo.


La franja horaria es GMT +2. Ahora son las 00:42:56.

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