Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > TFont. Шрифты в Delphi.


Автор: THandle 24.4.2008, 16:45
                                                           TFont. Шрифты в Delphi.



Автор: http://vingrad.ru/@Arch1S
Главный редактор: http://vingrad.ru/@THandle

С помощью этого замечательного класса TFont мы можем выводить шрифт на форму.

    
Код

property Color: TColor;



Цвет шрифта.


Код

property Name : TFontName;



Имя шрифта. MS Sans Serif - это по умолчанию.

    
Код

property Charset: TFontCharset;



Набор символов. Для русских это свойство Default_Charset или Russian_Charset.


Код

property Height: Integer;



Высота шрифта. 


Код

property Size: Integer;



Высота шрифта в пунктах(1/72 дюйма).


Код

property Style: TFontStyle;



Стиль шрифта. fsBold - жирный, fsItalic - курсив, fsUnderline - подчеркнутый, fsStrikeOut - перечеркнутый. 

Для класса также есть один полезный метод:

    
Код

procedure Assign(Source: TPersistent);



С помощью этого метода значения свойств шрифтового объекта Source присваиваются свойствам текущего шрифта. Метод можно использовать также шрифта принтера.



Пример:

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    PaintBox1: TPaintBox;
    FontDialog1: TFontDialog;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  laststr : string;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  with PaintBox1.Canvas, Font do
    begin
      TextOut(20, 20, 'MS Sans Serif, Size=10');
      Size := 10;
      TextOut(20, 40, 'MS Sans Serif, Size=20');
      Size := 20;
      Name := 'Courier';
      Style := [fsBold];
      TextOut(20, 70, 'Courier, Size=20');
      Name := 'Times New Roman';
      Style := [fsItalic,fsUnderLine,fsBold];
      TextOut(20, 110, 'Times Nes Roman, жирный, курсив, подчерк.');
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  lcolor : TColor;
begin
  if Edit1.Text <> '' then
    begin
      lcolor := PaintBox1.Canvas.Font.Color;
      PaintBox1.Canvas.Font.Color := clBtnFace;
      PaintBox1.Canvas.TextOut(10, 150, laststr);
      PaintBox1.Canvas.Font.Color := lcolor;
      PaintBox1.Canvas.TextOut(10, 150, Edit1.Text);
      laststr := Edit1.Text;
      Edit1.Clear;
    end;
  Edit1.SetFocus;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 if FontDialog1.Execute then
    PaintBox1.Font.Assign(FontDialog1.Font);
end;

end.



Некоторые пояснения к программе. Мы воспользовались шрифтом канвы компонента PaintBox1. Для изменения стиля шрифта свойству Style можно присвоить fsXXXX - типа TFontStyle. Этот тип определен как множество из элементов перечисленного типа. Вывод текста реализует метод TextOut канвы, которые передаются координаты левого верхнего угла надписи и текст.



От редактора:  ответственность за статью лежит не на мне. Все претензии к автору. smile 

Автор: Arch1S 24.4.2008, 16:51
THandle, спасибо за человеческое оформление, и конечно за идею

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)