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;