PDA

Ver la Versión Completa : obtener color de FontDialog1


jorodgar
25-05-2005, 18:13:05
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
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:

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntTostr(RichEdit1.Font.Color));
end;



Un Saludo.

jorodgar
25-05-2005, 20:00:14
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.