全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1333
推到 Plurk!
推到 Facebook!

TScreen教學

 
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-26 12:39:28 IP:61.218.xxx.xxx 未訂閱
TScreen    作者不詳 http://www.ccrun.com        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發生。 聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]---
系統時間:2024-05-03 14:36:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!