TScreen 类 - 获取字体列表
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = 
class(TForm)
    Memo1: TMemo;
    
procedure FormCreate(Sender: TObject);
  
end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1
.FormCreate(Sender: TObject);
begin
  Memo1
.ScrollBars := ssBoth;
  Memo1
.Align := alLeft;
  Memo1
.Clear;
  
{通过 Screen 对象, 只此一句话即可获取字体列表}
  Memo1
.Lines := Screen
.Fonts;
end;
end.
  
 TScreen 类 - 屏幕的逻辑宽度与高度
var
  w,h: Integer;
begin
  w := Screen
.Width;
  h := Screen
.Height;
  Text := Format(
'当前屏幕的分辨率是: %d*%d', [w,h]);
end;
 TScreen 类 - 关于 Screen 对象
Screen 对象是 TScreen 类的一个变量, 它声明在 Forms 单元的第 1323 行(Delphi 2007); 并且 TScreen 类也来自 Forms 单元.也就是说, 只要 uses 了 Forms 单元, Screen 对象就可以使用了.我们自己建立一个 TScreen 类的对象可以吗? 当然可以!
var
  MyScreen: TScreen;
begin
  MyScreen := TScreen
.Create(
nil); 
{建立}
  ShowMessage(IntToStr(MyScreen
.Width)); 
{显示: 1024; 我的屏幕分辨率是 1024*768}
  MyScreen
.Free;                   
{释放}
  MyScreen := 
nil;                 
{连根拔掉}
end;
 TScreen 类 - 程序中窗体的个数
//一个包含两个窗体的例子, 这是工程中的内容:
program Project1;
uses
  Forms,
  Unit1 
in 'Unit1.pas' {Form1},
  Unit2 
in 'Unit2.pas' {Form2};
{$R *.res}
begin
  Application
.Initialize;
  Application
.MainFormOnTaskbar := True;
  Application
.CreateForm(TForm1, Form1);
  Application
.CreateForm(TForm2, Form2);
  Application
.Run;
end.
  
//
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = 
class(TForm)
    Button1: TButton;
    
procedure Button1Click(Sender: TObject);
  
end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
uses Unit2;
procedure TForm1
.Button1Click(Sender: TObject);
var
  num: Integer;
begin
  num := Screen
.FormCount;    
{当前程序中窗体的个数}
  ShowMessage(IntToStr(num)); 
{2}
  Screen
.Forms[
1].ShowModal;  
{显示第二个窗体}
  {上面这句相当于}
  //Form2.ShowModal;
end;
end.
 TScreen 类 - 通过 Screen 更换光标
//更换窗体或某个控件的光标可以不通过 Screen 对象, 譬如:
begin
  Self
.Cursor := crAppStart;
  Panel1
.Cursor := crHandPoint;
{光标可选值:
  crDefault     = TCursor(0);
  crNone        = TCursor(-1);
  crArrow       = TCursor(-2);
  crCross       = TCursor(-3);
  crIBeam       = TCursor(-4);
  crSize        = TCursor(-22);
  crSizeNESW    = TCursor(-6);
  crSizeNS      = TCursor(-7);
  crSizeNWSE    = TCursor(-8);
  crSizeWE      = TCursor(-9);
  crUpArrow     = TCursor(-10);
  crHourGlass   = TCursor(-11);
  crDrag        = TCursor(-12);
  crNoDrop      = TCursor(-13);
  crHSplit      = TCursor(-14);
  crVSplit      = TCursor(-15);
  crMultiDrag   = TCursor(-16);
  crSQLWait     = TCursor(-17);
  crNo          = TCursor(-18);
  crAppStart    = TCursor(-19);
  crHelp        = TCursor(-20);
  crHandPoint   = TCursor(-21);
  crSizeAll     = TCursor(-22);
}
//其中 crDefault 是默认光标
end;
  
//使用 Screen 更换光标, 是给本程序的全局更换光标, 譬如:
begin
  Screen
.Cursor := crSize;
end;
  
//如果让控件有不同的光标, Screen.Cursor 必须是默认值, 也就是:
Screen
.Cursor := crDefault;
 TScreen 类 - 判断当前焦点在哪个控件/窗口上
procedure TForm1
.Timer1Timer(Sender: TObject);
begin
  Text := Screen
.ActiveControl
.ClassName;
end;
{多放几个控件, 按 Tab 测试; 但并不是所有控件都有焦点}
//标题显示当前窗体的类名
procedure TForm1
.Timer1Timer(Sender: TObject);
begin
  Text := Screen
.ActiveForm
.ClassName;
end;
 TScreen 类 - 获取当前输入法与输入法列表
//获取输入法列表
begin
  Memo1
.Lines := Screen
.Imes;
end;
  
//获取当前输入法
var
  kl: HKL;
  i: Integer;
begin
  kl := GetKeyboardLayout(
0);
  
for i := 
0 to Screen
.Imes
.Count - 
1 do
    if HKL(Screen
.Imes
.Objects[i]) = kl 
then
      ShowMessage(Screen
.Imes
.Strings[i]); 
{显示当前输入法}
end;