⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unifontsubst_mainform.pas

📁 source code for the Marco Cantu s book Delphi 2009 Handbook
💻 PAS
字号:
unit UniFontSubst_MainForm;

interface

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

type
  TFormUniFontSubst = class(TForm)
    btnPaintOnce: TButton;
    btnStartTimer: TButton;
    btnStopTimer: TButton;
    Timer1: TTimer;
    procedure btnPaintOnceClick(Sender: TObject);
    procedure btnStartTimerClick(Sender: TObject);
    procedure btnStopTimerClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    procedure PaintFonts;
  end;

var
  FormUniFontSubst: TFormUniFontSubst;

implementation

{$R *.dfm}

uses
  Character;

procedure TFormUniFontSubst.btnPaintOnceClick(Sender: TObject);
begin
  PaintFonts;
end;

const
  numberOfChars = 16;

procedure TFormUniFontSubst.btnStartTimerClick(Sender: TObject);
begin
  Timer1.Enabled := True;
end;

procedure TFormUniFontSubst.btnStopTimerClick(Sender: TObject);
begin
  Timer1.Enabled := False;
end;

procedure TFormUniFontSubst.PaintFonts;
var
  str1: string;
  nPoint: Word;
  I: Integer;
  aRect: TRect;
begin
  nPoint := 32 + random (1024*64 - 32 - numberOfChars);
  if (nPoint >= $D800 - numberOfChars) and (nPoint <= $DFFF) then
  begin
    // retry and skip
    PaintFonts;
    Exit;
  end;

  str1 := ConvertFromUtf32(UCS4Char (nPoint));
  for I := 1 to numberOfChars do
    str1 := str1 + ConvertFromUtf32(UCS4Char (nPoint + I));
  // now paint
  Canvas.Font.Name := 'Times New Roman';
  aRect := Rect(10, 60, 250, 100);
  DrawText(Canvas.Handle, PChar (str1), Length (str1), aRect, DT_LEFT or DT_SINGLELINE or DT_EXPANDTABS or DT_NOPREFIX);
  TextOut (Canvas.Handle, 260, 60, PChar (str1), Length (str1));
  aRect := Rect(510, 60, 750, 100);
  ExtTextOut (Canvas.Handle, 510, 60, 0, aRect, PChar (str1), Length (str1), nil);

  Canvas.Font.Name := 'Tahoma';
  aRect := Rect(10, 110, 300, 150);
  DrawText(Canvas.Handle, PChar (str1), Length (str1), aRect, DT_LEFT or DT_SINGLELINE or DT_EXPANDTABS or DT_NOPREFIX);
  TextOut (Canvas.Handle, 260, 110, PChar (str1), Length (str1));
  aRect := Rect(510, 110, 900, 150);
  ExtTextOut (Canvas.Handle, 510, 110, 0, aRect, PChar (str1), Length (str1), nil);

  Canvas.Font.Name := 'Arial';
  aRect := Rect(10, 160, 300, 200);
  DrawText(Canvas.Handle, PChar (str1), Length (str1), aRect, DT_LEFT or DT_SINGLELINE or DT_EXPANDTABS or DT_NOPREFIX);
  TextOut (Canvas.Handle, 260, 160, PChar (str1), Length (str1));
  aRect := Rect(510, 160, 750, 200);
  ExtTextOut (Canvas.Handle, 510, 160, 0, aRect, PChar (str1), Length (str1), nil);
end;

procedure TFormUniFontSubst.Timer1Timer(Sender: TObject);
begin
  PaintFonts;
end;

initialization
  Randomize;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -