TScreen表示应用程序运行时屏幕的状态。
类关系 TObject->TPersistent->TComponent
TScreen引进具有表示下列各种情况的属性
什么窗体和数据模块已经被应用程序实例化。
激活窗体以及在窗体内激活的控件。
屏幕的尺寸大小和分辨率。
可以获得的应用程序使用的光标和字体。
有一个TScreen类型的全局变量Screen,已被C++Builder的应用程序创建实例。使用Screen可以获得在一个应用程序中有关屏幕当前状态的信息。
属性列表
Active Control 确定屏幕上的当前有输入焦点的控件
ActiveCustomForm 指定当前有焦点的TCustom-Form的子类
Cursor 从全局控制鼠标的光标图像
Cursors 列出应用程序可用的光标
CustomFormCount 确定屏幕上显示的窗体或属性页的数量
CustomForms 列出在应用程序中当前显示的所有窗体和属性页
DeataModuleCount 指定在应用程序中创建实例的数据模块的数量
DataModules 列出当前在应用程序中创建实例的所有数据模块
DefaultIme 指出当创建TScreen对象时,哪一个输入方法编辑器(IME)是激活的
DefaultKbLayout 当应用程序开始运行时,指定激活的键盘布局的Windows句柄
Fonts 列出屏幕支持的所有字体的名称
FormCount 指定显示在屏幕上的窗体数量
Forms 列出当前应用程序中所显示的所有窗体
Height 以像素为单位指定屏幕的垂直尺寸大小
IconFont 指定显示在文件选择支话框中图标的标签上的字体
Imes 列出系统中所安装的所有输入方法编辑器
PixelsPerInch 指定在垂直方向上组成一个逻辑英寸的屏幕像素数
Width 以像素为单位指定屏幕的水平方向尺寸
方法列表
~TScreen 删除TScreen的一个实例
TScreen 创建TScreen的一个实例
事件列表
OnActiveControlChange 当输入焦点改变到一个新窗口类控件时立即发生该事件
OnActiveFormChange 当一新窗体变为激活状态后,事件发生
属性
TScreen::ActiveControl
__property Controls::TWinControl* ActiveControl = {read=FActiveControl};
确定屏幕上当前有输入焦点的控件。
读取ActiveControl, 可以知道在当前激活窗体中哪一个窗中控件可以接收来自键盘的输入。ActiveControl,是只读属性,要想改变ActiveControl,须使用包含有输入焦点的控件的窗体的SetFocusedControl方法。
当焦点从一个控制切换到另一控制后,屏幕就接收一个OnActiveControl事件。
TScreen::ActiveCustomForm
__property TCustomForm* ActiveCustomForm = {read=FActiveCustomForm};
指定当前有焦点的TcustomForm的子类。
读取ActiveForm,可以知道哪个窗体或属性页有输入焦点。如果处于激活状态的自定义窗体为TForm对象,ActiveComForm与ActiveForm是相同的。
TScreen::ActiveForm
__property TForm* ActiveForm = {read=FActiveForm};
指出当前有焦点有窗体。
读取Activeform,可以知道在应用程序中哪个窗体有输入焦点。当应用程序当前不是激活状态时,ActiveForm就是当应用程序再次被激活时将要拥有焦点的窗体。
ActiveForm,是只读属性,要想改变ActiveForm,须使用应该接受焦点窗体的SetFocus的方法。如果调用非激活窗体的SetFocusedControl 来设置位于其上的控件的焦点,ActiveForm也将发生改变。
在焦点从一个窗体切换支另一个窗体后,屏幕就接收到一个OnActiveFhange事件。
TScreen::Cursor
__property Controls::Tcursor = {read=FCursor,write=SetCursor,nodefault};
从全局控制鼠标的光标图像。
设置Cursor可以重设与单个控件对象有关的光标图象。当 Cursor为 crDrfault时,由单个对象来确定光标的图像。给该属性赋任意其他值可为属于应用程序的所有窗口设置鼠标光标图像。全局的鼠标光标图像可以一直使用,直到屏幕的 Cursor属性又被改回 crDrfault。
可以把光标设为Cursors 属性中的任意有效光标值,既可以是内带的光标值勤之一,也可以是加入到Cursors属性中的自定义光标。
TScreen::Cursors
__property HICON Cursors[int Index] = read=GetCursors,write=SetCursors};
列出应用程序可用的光标。
利用Cursor 可以访问一个为应用和谐可或应用程序内的控件使用的特定的光标。Tscreen包括一些内带光标,这些光标可以用符号的光标常数来索引。与内带光标常数相关联的图像可以通过设置Cursors属性来改变。
下面为一些光标常数,以及其在Cursors属性数组中的位置。*********
___________________________________________________________________
光标常数 值 图像
___________________________________________________________________
crDefault 0 取决于ActiveControl,(默认值)形状由对象决定
crNone -1 无光标
crArrow -2 箭头
crCross -3 十字线(crosshair指针)
crIBeam -4 I型
crSize -5 尺寸线(指向东、南、西、北四方向的箭头)
crSizeNESW -6 右上-左下尺寸线(指向东北和西南议程的双箭头)
crSizeNS -7 垂直尺寸线(指向南和北的双箭头)
crSizeNWSE -8 左上-右下尺寸线(指向东南和西北方向的双箭头)
crSizeWE -9 水平尺寸线(指向东和西两个方向的双箭头)
crUpArrow -10 向上的箭头
crHourGlass -11 沙漏(表示等待状态)
crDrag -12
crNoDrop -13 不允许放下
crHSplit -14
crVSplit -15
crMulitDrag -16
crSQLWait -17
crNo -18
crAppStart -19
crHelp -20
crHanldPoint -21
可以自定义光标可以加入到Cursors属性中,供应用程序及其任意控件使用。要在应用中加入一个自定义光标需按以下步骤进行:
(1)用资源编辑器创建一个光标资源。
(2)给光标常数定义一个常量,并且不要与书籍光标常数冲突。
(3)使用Windows API函数LoadCursor来获得一个新光标的句柄。
(4)用新宣称的光标常数来索引,把Cursors属性设置为由LiadCursor得到的句柄。
当完成一个自定义光标时,不要调用Windows APL函数DestroyCursor来删除它,C++
Builder会自动进行的。
TScreen::CustomFormCount
__property int CustomFormCount = {read=GetCustomFormCount,nodefault};
确定屏幕显示的窗体或属性页的数量。
读取 CustomFormCount , 可以获得在屏幕上当前显示的窗体或属性页的数量 。并可以用CustomFormCount和 CustomForms一起使用,可以遍历应用中的所有窗体和属性页。
TScreen::CustomForms
__property TCustomForm* CustomForms[int Index]={read=GetCustomForms};
列出在应用程序中当前显示的所有窗体和属性页。
利用customForms通过索引来访问窗体或属性页。索引值的范围在零(第一幅自定义窗体)和CustomFormCount-1之间 CustomFomCount 和CustomForms一起使用,可以遍历应用中的所有窗体和属性页。
TScreen::DataModuleCount
__property int DataModuleCount = {erad=GetDataModuleCount,nodefault};
指定在应用程序中创建实例的数据模块的数量。
读取DataModuleCount,可以知道在 DataModules 属性中数据模块的数量。当应用需要遍历所有数据模块时,可以把DataModules 和DataModuleCount一起使用。
TScreen::DataModules
__property TDataModule* DataModules[int Index] = {read=GetDataModule};
列出当前在应用程序中创建实例的所有数据模块。
使用DataModules可以通过索引来访问创建了实例的数据模块。Index的范围在零(第一个数据模块)和DataModules-1之间。当应用需要遍历所有数据模块时,可以把DataModules和DataModulesCount一起使用。
TScreen::DefaultIme
__property System::Ansistring DefaultIme = {read=FDefaultIme};
指出当创建TScreen对象时,哪一个输入方法编辑器(IME)是激活的。
在支持亚洲语言字符的应用程序中,当应用程序开始时,读取DefaultIme可以确定激活的IME。
对于亚洲语言字符来说,IME是一个前端输入处理器。IME挂接了所有的键盘输入,在转化窗口中将其转化成亚洲字符,然后把这些转化后的字符或字符串送到C++Builder 应用程序中。在一个系统中可能安装了多个IME,但它们在用户界面,转化字典和输入方法方面都是不同的。
单个控件可以重设默认的IME,当控制指定了一个不同的用于信息输入到该控件的IME时,当控件拥有焦点时,处理键盘输入的IME将改变。当控制失去焦点时,DefaultIme作为系统IME被恢复。
TScreen::DefaultKbLayout
__property HKL DefaultKbLayout = {read=FDefaultKbLayout,nodefault};
当应用程序开始运行时,指定激活的键盘布局的Windows句柄。
使用DefaultKbLayout 可以进行要求键盘布局的句柄的WindowsAPI调用。例如,当一个应用改变了键盘布局以匹配另一个国家的设置,为了恢复初始的布局,把DefaultKbLayout值作为Windows 的ActivateKeyboardLayout函数的一个参数。
对于亚洲键盘,键盘布局确定了输入方法编辑器(IME)及默认语言。在使用IME工作的WindowsAPI调用中使用DefaultKbLayout。DefaultKbLayou就是由DefaultIme属性命名的IME的键盘布局句柄。
TScreen::Fonts
__property Classes::TStrings* Fonts = {read=FFonts};
列出屏幕支持的所有字体的名称。
读取Fonts,可以知道当前所安装的屏幕字体。应用程序可以使用Fonts来确保其不使用一个没有被装在用户系统中的字体。当应用程序使用TFont对象来使用一个没有安装的字体时,Windows会用另一个字体来代替,这可能不满足应用程序的字体需要。
Fonts是屏幕字体的列表,没有给出打印机的字体。
TScreen::FormCount
__propety int FormCount = {read=GetFormCount,nodefault};
指定显示在屏幕上的窗体数量。
读取FormCount可以知道当前显示在屏幕上的窗体数量,这些窗体可由Forms属性来访问。通过Forms和FormCount一起使用来遍历应用程序中的所有窗体。
列出当前应用程序中所显示的所有窗体。
使用Forms通过索引访问一个窗体,Index的范围在零(第一幅窗体)和FormsCount-1之间。通过Forms和FormCount一起使用来遍历应用程序中的所有窗体。
TScreen::Height
__property int Height = {read=GetHieght,nodefault};
以像素为单位指定屏幕的垂直尺寸大小。
读取Height可以以像素为单位获得用户的屏幕尺寸。然后设置屏幕上对象的尺寸或位置,以确保对象适合屏幕大小,而不显得拥挤不堪。
TScreen::IconFont
__property Graphics::TFont* IconFont = {read=FIconFont,write=FIconFont};
指定显示在文件选择对话框中图标的标签上的字体。
IconFont 存储了Windows95图标字体的设置。其字体用于标识Windows桌面上和文件选择对话框上的图标。
TScreen::Imes
__propertyClasses::TStrings* Imes = {read=FImes};
列出系统中所安装的所有输入方法编辑器(IME)
读取Imes可以获得在Windows注册表中列出的所有IME列表。对于亚洲语言字符,IME是一个前端输入处理器。IME挂接了所有键盘输入,在转换窗口中把其转换成亚洲字符,然后再把这些转换后的字符或字符串送到C++Builder应用程序中。 在用户界面,转换字典和输入方法方面,各个IME都是不同的。
单个控制拥有焦点时,可以要求一个专用的IME来处理键盘输入。要指定一个IME,控件把其ImeName属性设置为Imes中的字符串之一。
IME中每一个IME名称都有一个相关联的键盘布局句柄。键盘布局句柄是Windows句柄,其标识了主语言及用于处理键盘输入的IME。在WindowsAPI调用中要使用这个句柄。要获得某特定的IME的键盘布局句柄,可以使用下面的代码:
TScreen::PixelsPerInch
__property int PixelsPerInch = {read= FPixelsPerInch,nodefault};
指定在垂直方向上组成一个逻辑英寸的屏幕像素数。
读取PixelsPerlnch可以使像素度量和逻辑英寸度量之间相互转化。对于垂直方向的度量,PixelsPerlnch是唯一精确的。对于水平方向的量度,大多数屏幕都具有不同的比例因子。当C++Builder调用时,PixelsPerlnch值是从Windows中设置的。
TScreen::Width
__property int Width = {read=GetWidth,nodefault};
以像素为单位指定屏幕的水平方向尺寸。
读取Width可获得以像素为单位的用户屏幕的尺寸,然后就可以设置屏幕上的对象的尺寸或位置,以确保对象能满足屏幕大小,而不会显得拥挤不堪。
方法
TScreen::~TScreen
__fastcall virtual ~TScreen(void);
删除TScreen的一个实例。
不要删除在C++Builder应用程序中自动创建的全局对象Screen,因为许多C++Builder对象都使用Screen。
~TScreen释放与DataModules,Forms,Fonts,IconFont和Imes属性相关的内存,并释放由Cursors属性使用的光标。
TScreen::TScreen
__fastcall virtual TScreen(Classes::TComponent* Aowner);
创建TScreen的一个实例
一般而言,不要创建单个的TScreen实例。在一个TScreen类型的全局变量Screen,为了被C++Builder应用程序使用已经被创建实例。Screen的属性对于整个应用程序来说是全局的。
TSreen为TSresen对象分配内存,并且具有以下作用:
用内置光标填充Cursors属性。
用可用的屏幕字体设置fonts属性。
用所有注册的输入法编辑器( IMEs)填充 Lmes 属性,并产设置 Defaultlme 和DefaultKbLayout属性。
为当前屏幕分辨率设置PixelsPerInch属性。
创建IcinFont,Forms和DataModuIES属性的帮助的程序对象.
TScreen::OnActiveControlChange
__property Classes::TNotifyEvent OnActiveControlChange = {read=FOnActiveControlChange,write=FOnActiveControlChange};
当输入焦点改变到一个新窗口类控件时立即发生该事件。
当输入 焦点改变到一个新控制件,写一个OnActiveCintroIChange事件处理程序可以执行特定的行动。可以在激活的窗体内部改变焦点,或者穿越几个窗体到一个新窗体,新窗体变为激活窗体。当焦点从一个控制移到另一个控制时,可能发生下述事件 :
当新的焦点控制是另一窗体时,焦点就移动到这个新窗体。
焦点移到新的激活控件中。
当激活的窗体改变时,发生OnActiveFormChange事件..。
发生OnActiveControIChange事件。
TScreen::OnActiveFormChange
__property Classes::TNotifyEvent OnActiveFormChange = {read=FOnActiveFormChange,write=FOnActiveFormChange};
在多窗体应用程序中,当一新窗体变为激活状态后,立即发生OnActiveFormChange事件。
当一新窗体变成激活的时,写OnActiveFormChange事件处理程序可以执行特定和等到。当一个应用程序的活动窗体改变时,而不是窗体激活时,OnActiveFormChange发生。