描述:虚拟屏幕(桌面)可以包含多个物理显示器。
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;

最新文章

  1. css3 transition animation nick
  2. 计算sql语句的查询时间
  3. [No000073]C#直接删除指定目录下的所有文件及文件夹(保留目录)
  4. javascript运算符——逻辑运算符
  5. USB Type-C 接口有什么优点?
  6. SVG文档的注意事项
  7. 有两个地方,用到了javabean对象和属性字符串值之间的转换
  8. SharePoint 2013 开发——发布SharePoint应用程序
  9. HDU 5344 MZL's xor (水题)
  10. PD code与name联动(取消)设置
  11. MVC文件上传-使用jQuery.FileUpload和Backload组件实现文件上传
  12. vijosP1159 岳麓山上打水
  13. android隐式intent使用场景解析
  14. javascript - 工作笔记 (事件四)
  15. HDU 3277 Marriage Match III(二分+最大流)
  16. python 实现登录程序
  17. IBM RAD 快捷键
  18. Django+xadmin打造在线教育平台(五)
  19. MySQL-代码自动补全工具
  20. thymeleaf : input/select/radio回显

热门文章

  1. linux根分区扩容
  2. Android 2D游戏引擎AndEngine配置环境
  3. ajax的参数
  4. jsp错误解决办法
  5. 找模式串[XDU1032]
  6. OI再见
  7. Storm Grouping —— 流分组策略
  8. POJ 2763 (树链剖分+边修改+边查询)
  9. C# 使用 GetOleDbSchemaTable 检索架构信息(表、列、主键等)
  10. SSH配置动态数据源