zoukankan      html  css  js  c++  java
  • Lazarus中TScreen类使用介绍

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

  • 相关阅读:
    Java实现对zip和rar文件的解压缩
    executssql 函数的每一句代码的意思
    ConnectString ()函数的介绍
    ADODB——RecordSet对象
    Mrc.EOF
    论数据库
    uniGUI之新窗口uniForm(19)
    uniGUI之学习方法(18)
    uniGUI之换肤(17)
    uniGUI之多页面框架(16)
  • 原文地址:https://www.cnblogs.com/China3S/p/3290327.html
Copyright © 2011-2022 走看看