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

Lazarus中TScreen类使用介绍的更多相关文章

  1. android中画图类的介绍Path

    Paint类相关属性: /** * Paint类介绍 * * Paint即画笔,在绘图过程中起到了极其重要的作用,画笔主要保存了颜色, * 样式等绘制信息,指定了如何绘制文本和图形,画笔对象有很多设置 ...

  2. C#中MemoryStream类的介绍

    MemoryStream位于System.IO命名空间,为系统内存提供流式的读写操作.常作为其他流数据交换时的中间对象操作. 1.MemoryStream类封装一个字节数组,在构造实例时可以使用一个字 ...

  3. JavaScript中class类的介绍

    class的概念 一.我们为什么要用到class类? 因为通过class类来创建对象,使得开发者不必写重复的代码,以达到代码复用的目的.它基于的逻辑是,两个或多个对象的结构功能类似,可以抽象出一个模板 ...

  4. java中Runtime类详细介绍

    Runtime类描述了虚拟机一些信息.该类采用了单例设计模式,可以通过静态方法 getRuntime()获取Runtime类实例.下面演示了获取虚拟机的内存信息: package Main; publ ...

  5. Mybatis中实体类属性与数据库列表间映射方法介绍

               这篇文章主要介绍了Mybatis中实体类属性与数据列表间映射方法介绍,一共四种方法方法,供大家参考.         Mybatis不像Hibernate中那么自动化,通过@Co ...

  6. java中ReentrantLock类的详细介绍(详解)

    博主如果看到请联系小白,小白记不清地址了 简介 ReentrantLock是一个可重入且独占式的锁,它具有与使用synchronized监视器锁相同的基本行为和语义,但与synchronized关键字 ...

  7. opencv中mat类介绍

    The class Mat represents an n-dimensional dense numerical single-channel or multi-channel array. It ...

  8. java中Timer类的详细介绍(详解)

    一.概念 定时计划任务功能在Java中主要使用的就是Timer对象,它在内部使用多线程的方式进行处理,所以它和多线程技术还是有非常大的关联的.在JDK中Timer类主要负责计划任务的功能,也就是在指定 ...

  9. Objective-C中的类目,延展,协议

    Objective-C中的类目(Category),延展(Extension),协议(Protocol)这些名词看起来挺牛的,瞬间感觉OC好高大上.在其他OOP语言中就没见过这些名词,刚看到这三个名词 ...

随机推荐

  1. ServletContext与ServletConfig的详解及区别

    转自http://hi.baidu.com/huaxuelili/item/1704a03dbb5cd7f22784f4c6 一.ServletContext详解ServletContext是serv ...

  2. Digital Image Processing 学习笔记2

    第二章 2.1视觉感知要素 2.1.1 人眼的结构 眼睛由角膜与巩膜外壳.脉络膜和视网膜包围,晶状体由通信的纤维细胞层组成,并由附在睫状体上的纤维悬挂:视网膜上分布两类光感受器(锥状体和杆状体),他们 ...

  3. 使用 Docker 建立 Mysql 集群

    软件环境介绍操作系统:Ubuntu server 64bit 14.04.1Docker 版本 1.6.2数据库:Mariadb 10.10 (Mariadb 是 MySQL 之父在 MySQL 被 ...

  4. Linux下配置java的环境变量,So Easy!!

    首先,在cd /usr ,mkdir java. 将java安装包放到/usr/java,并解压. 验证java. $ java -version 如果提示有如下安装包包含它,但是没有安装.是环境变量 ...

  5. 【HTML5】Video + DOM

    效果图: <!DOCTYPE html> <html> <body> <div style="text-align:center;"> ...

  6. Win7-64bit系统下安装mysql的ODBC驱动

    安装过mysql数据库后,有些软件在调用mysql数据库时不会直接调用,需要安装mysql数据库的ODBC驱动,再来调用.这里就介绍下,如何在win7系统下安装mysql的ODBC驱动. Win7系统 ...

  7. 浅析C#中的Attribute(转)

    最近用到了,所以静下心来找些资料看了一下,终于把这东西搞清楚了. 一.什么是Attribute 先看下面的三段代码: 1.自定义Attribute类:VersionAttribute [Attribu ...

  8. C#可以做什么

    C#可以做什么 学以致用.这也是大家学习C#的目标.当我们充分了解C#广阔的应用,才会激发我们最大的学习热情.下面将介绍一下C#的常见应用场景本文选自明明白白学C#大学霸. 0.2.1  开发普通软件 ...

  9. LightOJ1005 Rooks(DP/排列组合)

    题目是在n*n的棋盘上放k个车使其不互相攻击的方案数. 首先可以明确的是n*n最多只能合法地放n个车,即每一行都指派一个列去放车. dp[i][j]表示棋盘前i行总共放了j个车的方案数 dp[0][0 ...

  10. SecureCrt脚本(二)二级对象之Dialog

    Crt自动化 测试 SecureCrt脚本 JS脚本   1.引言 2.Dialog属性和方法 2.1.属性 2.2.方法 2.2.1.FileOpenDialog 2.2.2.MessageBox ...