描述:虚拟屏幕(桌面)可以包含多个物理显示器。
Screen对象是鼠标指针、字体、窗体。 对于Delphi兼容的(不可见)DataModules也被列出了。
同时也追踪当前活动窗体窗体、控件和指针。
Screen 对象
Screen 对象是 TScreen 类的一个变量, 它声明在 Forms 单元
1.获取系统支持的字体列表
{通过 Screen 对象, 只此一句话即可获取字体列表}
Memo1.Lines := Screen.Fonts;
2.获取屏幕逻辑宽度和高度(分辨率)
var
w,h: Integer;
begin
w := Screen.Width;
h := Screen.Height;
Text := Format('当前屏幕的分辨率是: %d*%d', [w,h]);
end;
3.自建Screen对象
var
MyScreen: TScreen;
begin
MyScreen := TScreen.Create(nil); {建立}
ShowMessage(IntToStr(MyScreen.Width)); {显示: 1024; 我的屏幕分辨率是 1024*768}
MyScreen.Free; {释放}
MyScreen := nil; {连根拔掉}
4.程序中的窗体个数和窗体调用
procedure TForm1.Button3Click(Sender: TObject);
var
num: Integer;
begin
num := Screen.FormCount; {当前程序中窗体的个数}
ShowMessage(IntToStr(num)); {2}
Screen.Forms[1].ShowModal; {显示第二个窗体}
{上面这句相当于}
//Form2.ShowModal;
end;
5.更换全局指针图标
//更换窗体或某个控件的光标可以不通过 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;
6.随机切换鼠标指针
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled:=true;
Timer1.Interval := 250;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Self.Cursor := TCursor(-Random(22));
end;
7.判断当前焦点在哪个控件上
Text := Screen.ActiveControl.ClassName;
8.判断当前焦点在哪个窗体上
Text := Screen.ActiveForm.ClassName;
9.截取屏幕
需要先uses 两个单元:LCLIntf, LCLType
procedure TForm1.Button7Click(Sender: TObject);
var
bit: TBitmap;
DC: HDC;
cvs: TCanvas;
begin
bit := TBitmap.Create;
bit.SetSize(Screen.Width, Screen.Height);
DC := GetDC(0);
cvs := TCanvas.Create;
cvs.Handle := DC;
bit.Canvas.CopyRect(Screen.DesktopRect, cvs, Screen.DesktopRect);
bit.SaveToFile('/Users/tianya/Screen.bmp');
ReleaseDC(0, DC);
cvs.Free;
bit.Free;
end;