相關文章(zhāng)
欄目分(fēn)類 classification
易語言控件的(de)通(tōng)用(yòng)屬性方法和(hé)事件
一、控件的(de)通(tōng)用(yòng)“屬性”
控件的(de)通(tōng)用(yòng)屬性主要有:名稱、标題、禁止、可(kě)視、鼠标指針、字體、邊框、可(kě)停留焦點、左邊、頂邊、寬度、高(gāo)度、标記、備注等。
上述列出的(de)屬性中,隻有名稱、左邊、頂邊、寬度、高(gāo)度、标記、備注是每個(gè)控件都擁有的(de)屬性,其它屬性雖不是每個(gè)控件都有,但也(yě)非常常見,故也(yě)認爲它們是控件的(de)通(tōng)用(yòng)屬性。通(tōng)用(yòng)屬性中除了(le)名稱和(hé)标題外,一般不必刻意設置——易語言自動爲其取最常見的(de)值。
除了(le)通(tōng)用(yòng)屬性外,控件一般都還(hái)有自己的(de)特有屬性。
下(xià)面逐個(gè)講解控件的(de)通(tōng)用(yòng)“屬性”:
1、名稱
控件的(de)唯一标識。好比現實中人(rén)的(de)身份證。放到程序中控件必須有名稱——如果程序員(yuán)未特别命名,易語言自動爲它按序号命名(如:按鈕1、按鈕2……編輯框1、編輯框2……等)。要想在代碼中操作控件的(de)屬性方法和(hé)事件,就必須指定目的(de)控件的(de)名稱(如:按鈕1.标題)。
[注:如果程序較爲複雜(zá)——用(yòng)到的(de)控件較多(duō),最好自己爲控件命名。爲控件取一個(gè)有意義的(de)名稱是一個(gè)好的(de)習(xí)慣。我個(gè)人(rén)認爲,一個(gè)好的(de)名稱 = 功能 + 控件類型,如“确定按鈕”“取消按鈕”“密碼編輯框”等等。另外,切不可(kě)用(yòng)代碼改動控件的(de)名稱!]
2、标題
顯示于控件上的(de)文字。主要是給程序的(de)使用(yòng)者看的(de),通(tōng)常作爲某種提示。因控件的(de)不同,标題出現的(de)出現的(de)位置可(kě)能也(yě)不一樣。如:窗(chuāng)口、通(tōng)用(yòng)對(duì)話(huà)框等有标題欄的(de)控件,标題出現在标題欄中;而按鈕、标簽、單選框、選擇框、分(fēn)組框、菜單等沒有标題欄的(de)控件,标題出現在控件中央(或偏上下(xià)左右)。
3、禁止
控制控件可(kě)否被程序使用(yòng)者操作。它的(de)值隻能爲真或假,默認爲假,即不禁止。被禁止的(de)控件一般表現爲:上面的(de)文字(即标題)變爲灰色,單擊它沒有任何反應。
4、可(kě)視
控制控件可(kě)否被程序使用(yòng)者看到。它的(de)值隻能爲真或假,默認爲真,即可(kě)以被看到。
5、鼠标指針
當鼠标移動到控件上方時(shí),鼠标指針的(de)形狀。本屬性一般不必改動——易語言根據控件的(de)不同,會自動爲其取一個(gè)默認值(最常見的(de)),如:按鈕上爲,編輯框上爲等。
6、字體
标題文字的(de)字體:包括字體名稱、字體大(dà)小、加粗、傾斜、下(xià)劃線、删除線等。注意,字體顔色一般是不生效的(de),标題文字的(de)顔色由另外的(de)屬性(文本顔色)控制。
7、邊框
控制邊框的(de)樣式。邊框一般有:0.無邊框、1.凹入式、2.凸出式、3.淺凹入式、4.鏡框式、5.單線邊框式等幾種樣式。對(duì)标簽控件而言,它還(hái)有另外一個(gè)樣式:6.漸變鏡框式。而對(duì)于窗(chuāng)口來(lái)說,它的(de)樣式就完全不同:0.無邊框、1.普通(tōng)可(kě)調邊框、2.普通(tōng)固定邊框、3.窄标題可(kě)調邊框、4.窄标題固定邊框、5.鏡框式可(kě)調邊框、6.鏡框式固定邊框等。
8、可(kě)停留焦點
設置當用(yòng)戶使用(yòng) TAB 或光(guāng)标鍵在各單元之間移動焦點時(shí)是否允許在本單元上停留。它的(de)值隻能爲真或假,默認爲真。如果控件的(de)可(kě)停留焦點屬性爲真,則控件還(hái)有另外一個(gè)屬性(停留順序)控制焦點停留的(de)順序——即當按TAB或光(guāng)标鍵時(shí),窗(chuāng)口上各控件獲得(de)輸入焦點的(de)順序。(如果按鈕上有一個(gè)黑(hēi)色細點組成的(de)虛框,或者編輯框中有光(guāng)标在閃爍,表示它正在擁有輸入焦點。)
9、左邊、頂邊、寬度、高(gāo)度
左邊、頂邊分(fēn)别是控件左上角點的(de)橫縱坐(zuò)标,寬度、高(gāo)度就分(fēn)别是控件的(de)寬度和(hé)高(gāo)度。四者的(de)單位均爲象素。注意左邊、頂邊是相對(duì)于控件的(de)“父控件”而言的(de),比如我們在畫(huà)闆中“畫(huà)”一個(gè)按鈕,它的(de)左邊、頂邊就是相對(duì)于畫(huà)闆左上角的(de)坐(zuò)标——這(zhè)裏畫(huà)闆充當了(le)“父控件”(或稱容器控件)。易語言中可(kě)以充當父控件的(de)控件,除了(le)窗(chuāng)口和(hé)畫(huà)闆,還(hái)有選擇夾、分(fēn)組框、圖片框、外形框等。
(父控件和(hé)子控件的(de)關系:1、如果父控件被銷毀、禁止或者隐藏,其内部的(de)所有控件将會自動被銷毀、禁止或者隐藏;2、子控件始終被限制在父控件的(de)内部,其坐(zuò)标位置相對(duì)于父控件的(de)左上角;3、父控件内的(de)所有子控件之間存在層次關系,但是父控件與子控件之間不存在層次關系。)
(當任一可(kě)視控件被“畫(huà)”到或“粘貼”到某“容器控件”——可(kě)充當父控件的(de)控件——中時(shí),父子關系就自動形成。要解除控件的(de)父子關系,可(kě)将父控件中的(de)子控件删除或剪切掉。)
10、标記、備注
标記:記錄控件的(de)附加文本信息。備注:對(duì)控件的(de)備注信息,主要是程序員(yuán)自己使用(yòng)。二者的(de)不同在于,标記可(kě)以在程序中使用(yòng),而備注不可(kě)以——類似調用(yòng)“控件名.備注”是非法的(de)。
二者在實際編程中很少使用(yòng)。标記還(hái)偶爾用(yòng)到;備注,我敢說,99%的(de)易友是從來(lái)不用(yòng)的(de)。
二、控件的(de)通(tōng)用(yòng)“方法”
控件的(de)通(tōng)用(yòng)方法主要有:取窗(chuāng)口句柄()、銷毀()、獲取焦點()、可(kě)有焦點()、取用(yòng)戶區(qū)寬度()、取用(yòng)戶區(qū)高(gāo)度()、刷新()、移動()、調整層次()、彈出菜單()、發送信息()、投遞信息()、取标記單元()等。其中銷毀()、獲取焦點()、移動()、彈出菜單()等較爲常用(yòng)。此外還(hái)有五個(gè)關于“重畫(huà)”的(de)方法,很少用(yòng)到。相關例程
注:所謂“方法”,說白了(le)也(yě)是函數(子程序),隻不過“方法”是與特定控件相關聯的(de)。“方法”與普通(tōng)函數(如系統庫函數和(hé)自定義函數)在調用(yòng)的(de)語法上是不一樣的(de)——“方法”的(de)調用(yòng):控件名稱.方法名稱([參數...]),如 _啓動窗(chuāng)口.銷毀();普通(tōng)函數的(de)調用(yòng):函數名稱([參數...]),如 取系統時(shí)間()。
注:“方法”是“控件的(de)”方法,“方法”總是依附于某個(gè)控件的(de)。離開了(le)控件,“方法”根本無從談起。同樣的(de)道理(lǐ),“屬性”是“控件的(de)”屬性,“事件”是“控件的(de)”事件。屬性、方法、事件,都和(hé)控件密切相關。
下(xià)面逐個(gè)講解控件的(de)通(tōng)用(yòng)“方法”:
1、取窗(chuāng)口句柄()
功能:取控件的(de)“窗(chuāng)口句柄”,并以返回值的(de)形式返回。
語法:控件名稱.取窗(chuāng)口句柄()
應用(yòng)實例:1、窗(chuāng)口句柄 = _啓動窗(chuāng)口.取窗(chuāng)口句柄()
2、窗(chuāng)口句柄 = 編輯框1.取窗(chuāng)口句柄()
//分(fēn)别取得(de)“_啓動窗(chuāng)口”“編輯框1”的(de)窗(chuāng)口句柄,并存到整數型變量“窗(chuāng)口句柄”中。
[注:是 取“窗(chuāng)口句柄”,而不是取“窗(chuāng)口的(de)”句柄。“窗(chuāng)口句柄”是一個(gè)專有名詞,一般在API調用(yòng)時(shí)使用(yòng)。。取窗(chuāng)口句柄()不但能夠取“窗(chuāng)口”的(de)“窗(chuāng)口句柄”,也(yě)能取“控件”的(de)“窗(chuāng)口句柄”(窗(chuāng)口本身就是一個(gè)特殊的(de)控件。)][另注:隻有可(kě)視控件才有“窗(chuāng)口句柄”;非可(kě)視控件是沒有“窗(chuāng)口句柄”的(de),不能應用(yòng)取窗(chuāng)口句柄()方法——比如“窗(chuāng)口句柄 = 時(shí)鐘(zhōng)1.取窗(chuāng)口句柄()”是非法的(de)。]
2、銷毀()
功能:銷毀控件:使其從屏幕上消失,并在内存中徹底删除。
語法:控件名稱.銷毀()
應用(yòng)實例:1、_啓動窗(chuāng)口.銷毀()
2、按鈕1.銷毀()
//分(fēn)别銷毀“_啓動窗(chuāng)口”和(hé)“按鈕1”。第二種用(yòng)法少見,因爲普通(tōng)控件總是某個(gè)窗(chuāng)口的(de)子控件,當窗(chuāng)口被銷毀時(shí),子控件也(yě)被自動銷毀,所以一般不去專門銷毀普通(tōng)控件(隻要銷毀窗(chuāng)口就可(kě)以了(le))。
3、獲取焦點()
功能:使控件獲得(de)輸入焦點。
語法:控件名稱.獲取焦點()
應用(yòng)實例:1、編輯框1.獲取焦點()
//使“編輯框1”獲得(de)輸入焦點。這(zhè)一句編程中經常用(yòng)到。(如果編輯框中有光(guāng)标——通(tōng)常是閃爍的(de)黑(hēi)色豎線——則表示它已經獲取輸入焦點,否則表示還(hái)沒有獲取輸入焦點。)
4、可(kě)有焦點()
功能:判斷控件是否擁有輸入焦點,返回真或假。
語法:控件名稱.可(kě)有焦點()
應用(yòng)實例:1、x = 編輯框1.可(kě)有焦點()
//如果“編輯框1”當前擁有輸入焦點,x的(de)值爲真,否則爲假——x要事先定義爲邏輯型變量。
5、取用(yòng)戶區(qū)寬度()、取用(yòng)戶區(qū)高(gāo)度()
功能:取得(de)控件“用(yòng)戶區(qū)”的(de)寬度/高(gāo)度。
語法:控件名稱.取用(yòng)戶區(qū)寬度()/取用(yòng)戶區(qū)高(gāo)度()
應用(yòng)實例:1、寬 = _啓動窗(chuāng)口.取用(yòng)戶區(qū)寬度()
2、高(gāo) = _啓動窗(chuāng)口.取用(yòng)戶區(qū)高(gāo)度()
//分(fēn)别取得(de)“_啓動窗(chuāng)口”的(de)“用(yòng)戶區(qū)”寬度和(hé)高(gāo)度,并存到整數型變量“寬”和(hé)“高(gāo)”中。
[注:“用(yòng)戶區(qū)”——對(duì)窗(chuāng)口而言,用(yòng)戶區(qū)域爲窗(chuāng)口區(qū)域減去标題欄、菜單欄、邊框後的(de)區(qū)域;對(duì)普通(tōng)控件而言,用(yòng)戶區(qū)域等同于其窗(chuāng)口單元區(qū)域。]
6、刷新()
功能:重新顯示控件中的(de)内容。與“刷新”屏幕是一個(gè)道理(lǐ)。
語法:控件名稱.刷新()
應用(yòng)實例:1、_啓動窗(chuāng)口.刷新()
2、畫(huà)闆1.刷新()
//分(fēn)别刷新“_啓動窗(chuāng)口”和(hé)“畫(huà)闆1”。如果畫(huà)闆的(de)自動重畫(huà)屬性爲假(默認值),則經常刷新畫(huà)闆是必要的(de)。如果嫌麻煩,幹脆把畫(huà)闆的(de)自動重畫(huà)設爲真——隻是多(duō)占用(yòng)些系統資源而已。
7、移動()
功能:改變控件的(de)位置和(hé)尺寸。
語法:控件名稱.移動([左邊],[頂邊],[寬度],[高(gāo)度])
參數:分(fēn)别對(duì)應移動後控件的(de)左邊、頂邊、寬度和(hé)高(gāo)度。四個(gè)參數均可(kě)省略。
應用(yòng)實例:1、_啓動窗(chuāng)口.移動(0,0,100,200)
2、按鈕1.移動(,,100,50) 等效于 按鈕1.移動(-1,-1,100,50)
//把“_啓動窗(chuāng)口”移動到(0,0),且把其寬度和(hé)高(gāo)度改爲100和(hé)200;不移動“按鈕1”的(de)位置,隻把其寬度和(hé)高(gāo)度改爲100和(hé)50。(單位是象素。)
[注:移動()可(kě)同時(shí)設置控件的(de)四個(gè)屬性,如果省略某參數(或置爲-1)則不改變原來(lái)的(de)值。本“方法”的(de)執行效率,與“分(fēn)别爲各屬性賦值”相比,要高(gāo)出許多(duō)倍,特别是在循環中。推薦使用(yòng)。]
8、調整層次()
功能:調整控件所處層次。
語法:控件名稱.調整層次([欲調整到的(de)層次])
參數:整數型,可(kě)以爲以下(xià)常量之一: 1、#頂層; 2、#底層; 3、#最高(gāo)層; 4、#次高(gāo)層。如果被省略,默認爲“#頂層”。
應用(yòng)實例:1、_啓動窗(chuāng)口.調整層次(#最高(gāo)層) 或 _啓動窗(chuāng)口.調整層次(3)
2、按鈕1.調整層次(#頂層) 或 按鈕1.調整層次(1)
//把“”調整到最高(gāo)層;把“按鈕1”調整到頂層。
[注:做(zuò)個(gè)實驗,在窗(chuāng)口上畫(huà)一個(gè)“按鈕1”,再畫(huà)一個(gè)“按鈕2”,然後把“按鈕2”拖到“按鈕1”上,會發現“按鈕2”把“按鈕1”遮住了(le)!這(zhè)就說明(míng)了(le)兩者的(de)層次關系:“按鈕2”在“按鈕1”的(de)上方,高(gāo)一個(gè)層次。][注:#最高(gāo)層——機器中所有程序的(de)所有窗(chuāng)口的(de)最前面;#頂層——本程序内所有控件的(de)最前面。#底層與#頂層 相對(duì);#次高(gāo)層 位于#最高(gāo)層 下(xià)一層。][注:對(duì)于普通(tōng)控件,通(tōng)常調整到#頂層就可(kě)以了(le);對(duì)于窗(chuāng)口這(zhè)個(gè)特殊控件,有時(shí)需要調整到#最高(gāo)層——在所有窗(chuāng)口的(de)最前面。]
9、彈出菜單()
功能:彈出菜單(通(tōng)常是右鍵菜單)
語法:控件名稱.彈出菜單( 欲彈出的(de)菜單,[水(shuǐ)平顯示位置],[垂直顯示位置])
參數:第一個(gè)參數是欲彈出的(de)菜單;後兩個(gè)是菜單彈出後左上角的(de)橫縱坐(zuò)标,如省略将自動使用(yòng)當前鼠标位置。
應用(yòng)實例:1、彈出菜單(文件,,)
//在當前鼠标所在位置彈出“文件”菜單。這(zhè)種寫法最常見。這(zhè)行代碼通(tōng)常都放在某控件的(de)“鼠标右鍵被按下(xià)”或“鼠标右鍵被放開”事件處理(lǐ)子程序中。彈出菜單()前面通(tōng)常不必帶控件名稱。
10、發送信息()、投遞信息()
功能:将指定信息發送到控件。
語法:控件名稱.發送信息(信息值,參數1,參數2)
控件名稱.投遞信息(信息值,參數1,參數2)
參數:第一個(gè)參數是欲發送或投遞的(de)信息值;後兩個(gè)是輔助信息。
應用(yòng)實例:1、編輯框1.發送信息(769,0,0) //複制“編輯框1”中被選中的(de)文本。
2、編輯框1.發送信息(770,0,0) //把剪貼闆中的(de)文本粘貼到“編輯框1”。
[注:發送信息、投遞信息的(de)區(qū)别:前者并等待且取回信息反饋值;後者不等待直接返回。]
11、取标記單元()
功能:前窗(chuāng)口中具有指定标記數值文本的(de)單元(控件)。
語法:控件名稱.取标記單元(标記數值)
參數:整數型,欲尋找單元的(de)“标記”屬性的(de)數值形式。(“123”->123)
應用(yòng)實例:1、取标記單元(123)
//如果此前令“按鈕1”的(de)“标記”屬性爲“123”,則上述代碼的(de)返回值爲“按鈕1”。
三、控件的(de)通(tōng)用(yòng)“事件”
控件的(de)通(tōng)用(yòng)“事件”主要有:1、鼠标左鍵被按下(xià);2、鼠标左鍵被放開;3、被雙擊;4、鼠标右鍵被按下(xià);5、鼠标右鍵被放開;6、鼠标位置被移動;7、按下(xià)某鍵;8、放開某鍵;9、字符輸入;10、獲得(de)焦點;11、失去焦點。易語言中的(de)可(kě)視控件,都有上述事件。除了(le)這(zhè)些通(tōng)用(yòng)事件,控件一般都還(hái)有自己的(de)專有事件。
事件的(de)産生由易語言系統全權負責。當某一事件産生時(shí),系統将自動調用(yòng)該事件所對(duì)應的(de)“事件處理(lǐ)子程序”。編程者所要做(zuò)的(de),隻是根據需要選擇要響應的(de)事件,并在該事件的(de)“事件處理(lǐ)子程序”中輸入代碼即可(kě)。
每一個(gè)事件都有它的(de)産生時(shí)機。有的(de)事件其産生時(shí)機非常明(míng)顯,如鼠标左鍵被按下(xià)、鼠标左鍵被放開……等,就是在鼠标左鍵被按下(xià)或放開時(shí)産生;而有的(de)事件其産生時(shí)機就不太明(míng)顯,這(zhè)個(gè)到時(shí)我會分(fēn)别介紹。
在《易語言知識庫》中,除了(le)獲得(de)焦點和(hé)失去焦點,對(duì)其它事件的(de)解釋都有這(zhè)麽一句:“處理(lǐ)本事件的(de)子程序如果返回假,則取消本事件,不再将此事件傳遞到所屬對(duì)象上去;如果不返回值或返回真,則将此事件繼續傳遞到所屬對(duì)象上去。” 相信大(dà)家會比較迷惑,讓我們做(zuò)個(gè)試驗:在設計窗(chuāng)口中放一個(gè)編輯框控件,在“_編輯框1_鼠标右鍵被放開”中輸入: 鳴叫() 再加一行代碼:返回(假) 運行程序,在編輯框中按右鍵時(shí),隻會有喇叭或音(yīn)箱叫一聲,卻不再彈出快(kuài)捷菜單了(le)。(我們都知道,在編輯框中按下(xià)鼠标右鍵并放開時(shí),通(tōng)常會彈出一快(kuài)捷菜單。)分(fēn)析一下(xià)爲什(shén)麽會這(zhè)樣呢(ne)?因爲編輯框的(de)“鼠标右鍵被放開”事件被我們半路攔截了(le),編輯框根本沒有收到“鼠标右鍵被放開”事件,也(yě)就是說,被我們做(zuò)了(le)手腳,它還(hái)蒙在鼓裏呢(ne)^_^ (再考慮一下(xià),如果前面代碼隻寫鳴叫()而不加返回(假)呢(ne)?結果是,在編輯框中右鍵放開時(shí),先叫一聲再彈出菜單。不信您試一試!例程)
下(xià)面逐個(gè)講解控件的(de)通(tōng)用(yòng)“事件”:
1、鼠标左鍵被按下(xià)
事件的(de)産生時(shí)機:鼠标左鍵被按下(xià)時(shí)。
語法:邏輯型 _控件名稱_鼠标左鍵被按下(xià)(橫向位置,縱向位置,功能鍵狀态)
參數:前兩個(gè)參數指示當前鼠标相對(duì)控件左上角的(de)橫縱坐(zuò)标;最後一個(gè)參數“功能鍵狀态”描述事件産生時(shí)功能鍵(Ctrl,Shift,Alt)的(de)狀态,其值可(kě)能爲以下(xià)之一或之和(hé):1、#Ctrl鍵狀态; 2、#Shift鍵狀态; 4、#Alt鍵狀态。要判斷是否同時(shí)按下(xià)了(le)某個(gè)功能鍵,在此參數的(de)值與想要得(de)知的(de)功能鍵的(de)狀态常量值之間使用(yòng)“位與”命令進行比較。如果所得(de)的(de)結果不爲零,則表示同時(shí)按下(xià)了(le)此功能鍵。例程。
2、鼠标左鍵被放開
事件的(de)産生時(shí)機:鼠标左鍵被放開時(shí)。
語法/參數:同上
3、被雙擊
事件的(de)産生時(shí)機:被鼠标雙擊時(shí)。
語法/參數:同上
4、鼠标右鍵被按下(xià)
事件的(de)産生時(shí)機:鼠标右鍵被按下(xià)時(shí)。
語法/參數:同上
5、鼠标右鍵被放開
事件的(de)産生時(shí)機:鼠标右鍵被放開時(shí)。
語法/參數:同上
//通(tōng)過在此事件中,用(yòng)彈出菜單()“方法”彈出右鍵菜單。例程。
6、鼠标位置被移動
事件的(de)産生時(shí)機:鼠标位置被移動時(shí)。
語法/參數:同上
//當鼠标指針在控件上移動時(shí),将連續産生一系列本事件。例程。
7、按下(xià)某鍵
事件的(de)産生時(shí)機:用(yòng)戶按下(xià)鍵盤上的(de)任意鍵時(shí)。
語法:邏輯型 _控件名稱_按下(xià)某鍵(鍵代碼,功能鍵狀态)
參數:“鍵代碼”——被按下(xià)的(de)鍵的(de)ASCII碼,均已被定義爲常量,見常量表。
“功能鍵狀态”——見“鼠标左鍵被按下(xià)”事件中的(de)描述。
//常量表:見《易語言知識庫》或 系統支持庫。
8、放開某鍵
事件的(de)産生時(shí)機:用(yòng)戶放開鍵盤上的(de)任意鍵時(shí)。
語法:邏輯型 _控件名稱_按下(xià)某鍵(鍵代碼,功能鍵狀态)
參數:同上
9、字符輸入
事件的(de)産生時(shí)機:用(yòng)戶按下(xià)鍵盤上的(de)可(kě)打印字符鍵(包括回車、退格鍵)時(shí)。
語法:整數型 _控件名稱_字符輸入(字符代碼)
參數:“字符代碼”——被按下(xià)的(de)字符鍵的(de)ASCII碼,均已被定義爲常量,見常量表。
//本事件與按下(xià)某鍵、放開某鍵的(de)區(qū)别:前者隻接受可(kě)打印字符鍵;而後兩者可(kě)接受所有鍵。
//“在用(yòng)戶事件處理(lǐ)子程序中,将事件處理(lǐ)完畢後可(kě)返回一個(gè)字符代碼,用(yòng)于替換将繼續傳遞到所屬對(duì)象上字符鍵事件中的(de)字符代碼;如果返回 0 ,則取消此事件,不再将此事件傳遞到所屬對(duì)象上去;如果事件處理(lǐ)完畢後沒有返回值,則将本字符鍵事件繼續原樣傳遞到所屬對(duì)象上去。”——這(zhè)是《易語言知識庫》中的(de)原話(huà),不易理(lǐ)解。Liigo給大(dà)家舉個(gè)例子:扔一個(gè)香蕉給猴子,它會高(gāo)興的(de)大(dà)叫。但如果這(zhè)個(gè)香蕉在半空被程咬金攔截了(le)呢(ne),猴子還(hái)會高(gāo)興的(de)大(dà)叫嗎?顯然不會,而且它什(shén)麽反應也(yě)沒有,因爲它壓根兒(ér)就不知道有香蕉扔過來(lái)。有興趣的(de)請看例程。
10、獲得(de)焦點
事件的(de)産生時(shí)機:當控件獲得(de)輸入焦點時(shí)。
語法:_控件名稱_獲得(de)焦點()
//如果按鈕上有一個(gè)黑(hēi)色細點組成的(de)虛框,或者編輯框中有光(guāng)标在閃爍,表示它正在擁有輸入焦點。其它控件類似。一台機器上的(de)所有程序的(de)所有窗(chuāng)口中,同一時(shí)刻有且隻有一個(gè)控件擁有輸入焦點。
//本事件和(hé)下(xià)面失去焦點的(de)事件一樣,隻有“可(kě)停留焦點的(de)”控件才擁有,如:編輯框、畫(huà)闆、按鈕、選擇框、單選框、組合框、列表框、選擇列表框、橫向滾動條、縱向滾動條、滑塊條、日期框、月(yuè)曆、驅動器框、目錄框、文件框、顔色選擇器、超級鏈接框、調節器、表格、數據源、圖形按鈕等。
11、失去焦點
事件的(de)産生時(shí)機:當控件失去輸入焦點時(shí)。
語法:_控件名稱_失去焦點()
控件的(de)通(tōng)用(yòng)屬性主要有:名稱、标題、禁止、可(kě)視、鼠标指針、字體、邊框、可(kě)停留焦點、左邊、頂邊、寬度、高(gāo)度、标記、備注等。
上述列出的(de)屬性中,隻有名稱、左邊、頂邊、寬度、高(gāo)度、标記、備注是每個(gè)控件都擁有的(de)屬性,其它屬性雖不是每個(gè)控件都有,但也(yě)非常常見,故也(yě)認爲它們是控件的(de)通(tōng)用(yòng)屬性。通(tōng)用(yòng)屬性中除了(le)名稱和(hé)标題外,一般不必刻意設置——易語言自動爲其取最常見的(de)值。
除了(le)通(tōng)用(yòng)屬性外,控件一般都還(hái)有自己的(de)特有屬性。
下(xià)面逐個(gè)講解控件的(de)通(tōng)用(yòng)“屬性”:
1、名稱
控件的(de)唯一标識。好比現實中人(rén)的(de)身份證。放到程序中控件必須有名稱——如果程序員(yuán)未特别命名,易語言自動爲它按序号命名(如:按鈕1、按鈕2……編輯框1、編輯框2……等)。要想在代碼中操作控件的(de)屬性方法和(hé)事件,就必須指定目的(de)控件的(de)名稱(如:按鈕1.标題)。
[注:如果程序較爲複雜(zá)——用(yòng)到的(de)控件較多(duō),最好自己爲控件命名。爲控件取一個(gè)有意義的(de)名稱是一個(gè)好的(de)習(xí)慣。我個(gè)人(rén)認爲,一個(gè)好的(de)名稱 = 功能 + 控件類型,如“确定按鈕”“取消按鈕”“密碼編輯框”等等。另外,切不可(kě)用(yòng)代碼改動控件的(de)名稱!]
2、标題
顯示于控件上的(de)文字。主要是給程序的(de)使用(yòng)者看的(de),通(tōng)常作爲某種提示。因控件的(de)不同,标題出現的(de)出現的(de)位置可(kě)能也(yě)不一樣。如:窗(chuāng)口、通(tōng)用(yòng)對(duì)話(huà)框等有标題欄的(de)控件,标題出現在标題欄中;而按鈕、标簽、單選框、選擇框、分(fēn)組框、菜單等沒有标題欄的(de)控件,标題出現在控件中央(或偏上下(xià)左右)。
3、禁止
控制控件可(kě)否被程序使用(yòng)者操作。它的(de)值隻能爲真或假,默認爲假,即不禁止。被禁止的(de)控件一般表現爲:上面的(de)文字(即标題)變爲灰色,單擊它沒有任何反應。
4、可(kě)視
控制控件可(kě)否被程序使用(yòng)者看到。它的(de)值隻能爲真或假,默認爲真,即可(kě)以被看到。
5、鼠标指針
當鼠标移動到控件上方時(shí),鼠标指針的(de)形狀。本屬性一般不必改動——易語言根據控件的(de)不同,會自動爲其取一個(gè)默認值(最常見的(de)),如:按鈕上爲,編輯框上爲等。
6、字體
标題文字的(de)字體:包括字體名稱、字體大(dà)小、加粗、傾斜、下(xià)劃線、删除線等。注意,字體顔色一般是不生效的(de),标題文字的(de)顔色由另外的(de)屬性(文本顔色)控制。
7、邊框
控制邊框的(de)樣式。邊框一般有:0.無邊框、1.凹入式、2.凸出式、3.淺凹入式、4.鏡框式、5.單線邊框式等幾種樣式。對(duì)标簽控件而言,它還(hái)有另外一個(gè)樣式:6.漸變鏡框式。而對(duì)于窗(chuāng)口來(lái)說,它的(de)樣式就完全不同:0.無邊框、1.普通(tōng)可(kě)調邊框、2.普通(tōng)固定邊框、3.窄标題可(kě)調邊框、4.窄标題固定邊框、5.鏡框式可(kě)調邊框、6.鏡框式固定邊框等。
8、可(kě)停留焦點
設置當用(yòng)戶使用(yòng) TAB 或光(guāng)标鍵在各單元之間移動焦點時(shí)是否允許在本單元上停留。它的(de)值隻能爲真或假,默認爲真。如果控件的(de)可(kě)停留焦點屬性爲真,則控件還(hái)有另外一個(gè)屬性(停留順序)控制焦點停留的(de)順序——即當按TAB或光(guāng)标鍵時(shí),窗(chuāng)口上各控件獲得(de)輸入焦點的(de)順序。(如果按鈕上有一個(gè)黑(hēi)色細點組成的(de)虛框,或者編輯框中有光(guāng)标在閃爍,表示它正在擁有輸入焦點。)
9、左邊、頂邊、寬度、高(gāo)度
左邊、頂邊分(fēn)别是控件左上角點的(de)橫縱坐(zuò)标,寬度、高(gāo)度就分(fēn)别是控件的(de)寬度和(hé)高(gāo)度。四者的(de)單位均爲象素。注意左邊、頂邊是相對(duì)于控件的(de)“父控件”而言的(de),比如我們在畫(huà)闆中“畫(huà)”一個(gè)按鈕,它的(de)左邊、頂邊就是相對(duì)于畫(huà)闆左上角的(de)坐(zuò)标——這(zhè)裏畫(huà)闆充當了(le)“父控件”(或稱容器控件)。易語言中可(kě)以充當父控件的(de)控件,除了(le)窗(chuāng)口和(hé)畫(huà)闆,還(hái)有選擇夾、分(fēn)組框、圖片框、外形框等。
(父控件和(hé)子控件的(de)關系:1、如果父控件被銷毀、禁止或者隐藏,其内部的(de)所有控件将會自動被銷毀、禁止或者隐藏;2、子控件始終被限制在父控件的(de)内部,其坐(zuò)标位置相對(duì)于父控件的(de)左上角;3、父控件内的(de)所有子控件之間存在層次關系,但是父控件與子控件之間不存在層次關系。)
(當任一可(kě)視控件被“畫(huà)”到或“粘貼”到某“容器控件”——可(kě)充當父控件的(de)控件——中時(shí),父子關系就自動形成。要解除控件的(de)父子關系,可(kě)将父控件中的(de)子控件删除或剪切掉。)
10、标記、備注
标記:記錄控件的(de)附加文本信息。備注:對(duì)控件的(de)備注信息,主要是程序員(yuán)自己使用(yòng)。二者的(de)不同在于,标記可(kě)以在程序中使用(yòng),而備注不可(kě)以——類似調用(yòng)“控件名.備注”是非法的(de)。
二者在實際編程中很少使用(yòng)。标記還(hái)偶爾用(yòng)到;備注,我敢說,99%的(de)易友是從來(lái)不用(yòng)的(de)。
二、控件的(de)通(tōng)用(yòng)“方法”
控件的(de)通(tōng)用(yòng)方法主要有:取窗(chuāng)口句柄()、銷毀()、獲取焦點()、可(kě)有焦點()、取用(yòng)戶區(qū)寬度()、取用(yòng)戶區(qū)高(gāo)度()、刷新()、移動()、調整層次()、彈出菜單()、發送信息()、投遞信息()、取标記單元()等。其中銷毀()、獲取焦點()、移動()、彈出菜單()等較爲常用(yòng)。此外還(hái)有五個(gè)關于“重畫(huà)”的(de)方法,很少用(yòng)到。相關例程
注:所謂“方法”,說白了(le)也(yě)是函數(子程序),隻不過“方法”是與特定控件相關聯的(de)。“方法”與普通(tōng)函數(如系統庫函數和(hé)自定義函數)在調用(yòng)的(de)語法上是不一樣的(de)——“方法”的(de)調用(yòng):控件名稱.方法名稱([參數...]),如 _啓動窗(chuāng)口.銷毀();普通(tōng)函數的(de)調用(yòng):函數名稱([參數...]),如 取系統時(shí)間()。
注:“方法”是“控件的(de)”方法,“方法”總是依附于某個(gè)控件的(de)。離開了(le)控件,“方法”根本無從談起。同樣的(de)道理(lǐ),“屬性”是“控件的(de)”屬性,“事件”是“控件的(de)”事件。屬性、方法、事件,都和(hé)控件密切相關。
下(xià)面逐個(gè)講解控件的(de)通(tōng)用(yòng)“方法”:
1、取窗(chuāng)口句柄()
功能:取控件的(de)“窗(chuāng)口句柄”,并以返回值的(de)形式返回。
語法:控件名稱.取窗(chuāng)口句柄()
應用(yòng)實例:1、窗(chuāng)口句柄 = _啓動窗(chuāng)口.取窗(chuāng)口句柄()
2、窗(chuāng)口句柄 = 編輯框1.取窗(chuāng)口句柄()
//分(fēn)别取得(de)“_啓動窗(chuāng)口”“編輯框1”的(de)窗(chuāng)口句柄,并存到整數型變量“窗(chuāng)口句柄”中。
[注:是 取“窗(chuāng)口句柄”,而不是取“窗(chuāng)口的(de)”句柄。“窗(chuāng)口句柄”是一個(gè)專有名詞,一般在API調用(yòng)時(shí)使用(yòng)。。取窗(chuāng)口句柄()不但能夠取“窗(chuāng)口”的(de)“窗(chuāng)口句柄”,也(yě)能取“控件”的(de)“窗(chuāng)口句柄”(窗(chuāng)口本身就是一個(gè)特殊的(de)控件。)][另注:隻有可(kě)視控件才有“窗(chuāng)口句柄”;非可(kě)視控件是沒有“窗(chuāng)口句柄”的(de),不能應用(yòng)取窗(chuāng)口句柄()方法——比如“窗(chuāng)口句柄 = 時(shí)鐘(zhōng)1.取窗(chuāng)口句柄()”是非法的(de)。]
2、銷毀()
功能:銷毀控件:使其從屏幕上消失,并在内存中徹底删除。
語法:控件名稱.銷毀()
應用(yòng)實例:1、_啓動窗(chuāng)口.銷毀()
2、按鈕1.銷毀()
//分(fēn)别銷毀“_啓動窗(chuāng)口”和(hé)“按鈕1”。第二種用(yòng)法少見,因爲普通(tōng)控件總是某個(gè)窗(chuāng)口的(de)子控件,當窗(chuāng)口被銷毀時(shí),子控件也(yě)被自動銷毀,所以一般不去專門銷毀普通(tōng)控件(隻要銷毀窗(chuāng)口就可(kě)以了(le))。
3、獲取焦點()
功能:使控件獲得(de)輸入焦點。
語法:控件名稱.獲取焦點()
應用(yòng)實例:1、編輯框1.獲取焦點()
//使“編輯框1”獲得(de)輸入焦點。這(zhè)一句編程中經常用(yòng)到。(如果編輯框中有光(guāng)标——通(tōng)常是閃爍的(de)黑(hēi)色豎線——則表示它已經獲取輸入焦點,否則表示還(hái)沒有獲取輸入焦點。)
4、可(kě)有焦點()
功能:判斷控件是否擁有輸入焦點,返回真或假。
語法:控件名稱.可(kě)有焦點()
應用(yòng)實例:1、x = 編輯框1.可(kě)有焦點()
//如果“編輯框1”當前擁有輸入焦點,x的(de)值爲真,否則爲假——x要事先定義爲邏輯型變量。
5、取用(yòng)戶區(qū)寬度()、取用(yòng)戶區(qū)高(gāo)度()
功能:取得(de)控件“用(yòng)戶區(qū)”的(de)寬度/高(gāo)度。
語法:控件名稱.取用(yòng)戶區(qū)寬度()/取用(yòng)戶區(qū)高(gāo)度()
應用(yòng)實例:1、寬 = _啓動窗(chuāng)口.取用(yòng)戶區(qū)寬度()
2、高(gāo) = _啓動窗(chuāng)口.取用(yòng)戶區(qū)高(gāo)度()
//分(fēn)别取得(de)“_啓動窗(chuāng)口”的(de)“用(yòng)戶區(qū)”寬度和(hé)高(gāo)度,并存到整數型變量“寬”和(hé)“高(gāo)”中。
[注:“用(yòng)戶區(qū)”——對(duì)窗(chuāng)口而言,用(yòng)戶區(qū)域爲窗(chuāng)口區(qū)域減去标題欄、菜單欄、邊框後的(de)區(qū)域;對(duì)普通(tōng)控件而言,用(yòng)戶區(qū)域等同于其窗(chuāng)口單元區(qū)域。]
6、刷新()
功能:重新顯示控件中的(de)内容。與“刷新”屏幕是一個(gè)道理(lǐ)。
語法:控件名稱.刷新()
應用(yòng)實例:1、_啓動窗(chuāng)口.刷新()
2、畫(huà)闆1.刷新()
//分(fēn)别刷新“_啓動窗(chuāng)口”和(hé)“畫(huà)闆1”。如果畫(huà)闆的(de)自動重畫(huà)屬性爲假(默認值),則經常刷新畫(huà)闆是必要的(de)。如果嫌麻煩,幹脆把畫(huà)闆的(de)自動重畫(huà)設爲真——隻是多(duō)占用(yòng)些系統資源而已。
7、移動()
功能:改變控件的(de)位置和(hé)尺寸。
語法:控件名稱.移動([左邊],[頂邊],[寬度],[高(gāo)度])
參數:分(fēn)别對(duì)應移動後控件的(de)左邊、頂邊、寬度和(hé)高(gāo)度。四個(gè)參數均可(kě)省略。
應用(yòng)實例:1、_啓動窗(chuāng)口.移動(0,0,100,200)
2、按鈕1.移動(,,100,50) 等效于 按鈕1.移動(-1,-1,100,50)
//把“_啓動窗(chuāng)口”移動到(0,0),且把其寬度和(hé)高(gāo)度改爲100和(hé)200;不移動“按鈕1”的(de)位置,隻把其寬度和(hé)高(gāo)度改爲100和(hé)50。(單位是象素。)
[注:移動()可(kě)同時(shí)設置控件的(de)四個(gè)屬性,如果省略某參數(或置爲-1)則不改變原來(lái)的(de)值。本“方法”的(de)執行效率,與“分(fēn)别爲各屬性賦值”相比,要高(gāo)出許多(duō)倍,特别是在循環中。推薦使用(yòng)。]
8、調整層次()
功能:調整控件所處層次。
語法:控件名稱.調整層次([欲調整到的(de)層次])
參數:整數型,可(kě)以爲以下(xià)常量之一: 1、#頂層; 2、#底層; 3、#最高(gāo)層; 4、#次高(gāo)層。如果被省略,默認爲“#頂層”。
應用(yòng)實例:1、_啓動窗(chuāng)口.調整層次(#最高(gāo)層) 或 _啓動窗(chuāng)口.調整層次(3)
2、按鈕1.調整層次(#頂層) 或 按鈕1.調整層次(1)
//把“”調整到最高(gāo)層;把“按鈕1”調整到頂層。
[注:做(zuò)個(gè)實驗,在窗(chuāng)口上畫(huà)一個(gè)“按鈕1”,再畫(huà)一個(gè)“按鈕2”,然後把“按鈕2”拖到“按鈕1”上,會發現“按鈕2”把“按鈕1”遮住了(le)!這(zhè)就說明(míng)了(le)兩者的(de)層次關系:“按鈕2”在“按鈕1”的(de)上方,高(gāo)一個(gè)層次。][注:#最高(gāo)層——機器中所有程序的(de)所有窗(chuāng)口的(de)最前面;#頂層——本程序内所有控件的(de)最前面。#底層與#頂層 相對(duì);#次高(gāo)層 位于#最高(gāo)層 下(xià)一層。][注:對(duì)于普通(tōng)控件,通(tōng)常調整到#頂層就可(kě)以了(le);對(duì)于窗(chuāng)口這(zhè)個(gè)特殊控件,有時(shí)需要調整到#最高(gāo)層——在所有窗(chuāng)口的(de)最前面。]
9、彈出菜單()
功能:彈出菜單(通(tōng)常是右鍵菜單)
語法:控件名稱.彈出菜單( 欲彈出的(de)菜單,[水(shuǐ)平顯示位置],[垂直顯示位置])
參數:第一個(gè)參數是欲彈出的(de)菜單;後兩個(gè)是菜單彈出後左上角的(de)橫縱坐(zuò)标,如省略将自動使用(yòng)當前鼠标位置。
應用(yòng)實例:1、彈出菜單(文件,,)
//在當前鼠标所在位置彈出“文件”菜單。這(zhè)種寫法最常見。這(zhè)行代碼通(tōng)常都放在某控件的(de)“鼠标右鍵被按下(xià)”或“鼠标右鍵被放開”事件處理(lǐ)子程序中。彈出菜單()前面通(tōng)常不必帶控件名稱。
10、發送信息()、投遞信息()
功能:将指定信息發送到控件。
語法:控件名稱.發送信息(信息值,參數1,參數2)
控件名稱.投遞信息(信息值,參數1,參數2)
參數:第一個(gè)參數是欲發送或投遞的(de)信息值;後兩個(gè)是輔助信息。
應用(yòng)實例:1、編輯框1.發送信息(769,0,0) //複制“編輯框1”中被選中的(de)文本。
2、編輯框1.發送信息(770,0,0) //把剪貼闆中的(de)文本粘貼到“編輯框1”。
[注:發送信息、投遞信息的(de)區(qū)别:前者并等待且取回信息反饋值;後者不等待直接返回。]
11、取标記單元()
功能:前窗(chuāng)口中具有指定标記數值文本的(de)單元(控件)。
語法:控件名稱.取标記單元(标記數值)
參數:整數型,欲尋找單元的(de)“标記”屬性的(de)數值形式。(“123”->123)
應用(yòng)實例:1、取标記單元(123)
//如果此前令“按鈕1”的(de)“标記”屬性爲“123”,則上述代碼的(de)返回值爲“按鈕1”。
三、控件的(de)通(tōng)用(yòng)“事件”
控件的(de)通(tōng)用(yòng)“事件”主要有:1、鼠标左鍵被按下(xià);2、鼠标左鍵被放開;3、被雙擊;4、鼠标右鍵被按下(xià);5、鼠标右鍵被放開;6、鼠标位置被移動;7、按下(xià)某鍵;8、放開某鍵;9、字符輸入;10、獲得(de)焦點;11、失去焦點。易語言中的(de)可(kě)視控件,都有上述事件。除了(le)這(zhè)些通(tōng)用(yòng)事件,控件一般都還(hái)有自己的(de)專有事件。
事件的(de)産生由易語言系統全權負責。當某一事件産生時(shí),系統将自動調用(yòng)該事件所對(duì)應的(de)“事件處理(lǐ)子程序”。編程者所要做(zuò)的(de),隻是根據需要選擇要響應的(de)事件,并在該事件的(de)“事件處理(lǐ)子程序”中輸入代碼即可(kě)。
每一個(gè)事件都有它的(de)産生時(shí)機。有的(de)事件其産生時(shí)機非常明(míng)顯,如鼠标左鍵被按下(xià)、鼠标左鍵被放開……等,就是在鼠标左鍵被按下(xià)或放開時(shí)産生;而有的(de)事件其産生時(shí)機就不太明(míng)顯,這(zhè)個(gè)到時(shí)我會分(fēn)别介紹。
在《易語言知識庫》中,除了(le)獲得(de)焦點和(hé)失去焦點,對(duì)其它事件的(de)解釋都有這(zhè)麽一句:“處理(lǐ)本事件的(de)子程序如果返回假,則取消本事件,不再将此事件傳遞到所屬對(duì)象上去;如果不返回值或返回真,則将此事件繼續傳遞到所屬對(duì)象上去。” 相信大(dà)家會比較迷惑,讓我們做(zuò)個(gè)試驗:在設計窗(chuāng)口中放一個(gè)編輯框控件,在“_編輯框1_鼠标右鍵被放開”中輸入: 鳴叫() 再加一行代碼:返回(假) 運行程序,在編輯框中按右鍵時(shí),隻會有喇叭或音(yīn)箱叫一聲,卻不再彈出快(kuài)捷菜單了(le)。(我們都知道,在編輯框中按下(xià)鼠标右鍵并放開時(shí),通(tōng)常會彈出一快(kuài)捷菜單。)分(fēn)析一下(xià)爲什(shén)麽會這(zhè)樣呢(ne)?因爲編輯框的(de)“鼠标右鍵被放開”事件被我們半路攔截了(le),編輯框根本沒有收到“鼠标右鍵被放開”事件,也(yě)就是說,被我們做(zuò)了(le)手腳,它還(hái)蒙在鼓裏呢(ne)^_^ (再考慮一下(xià),如果前面代碼隻寫鳴叫()而不加返回(假)呢(ne)?結果是,在編輯框中右鍵放開時(shí),先叫一聲再彈出菜單。不信您試一試!例程)
下(xià)面逐個(gè)講解控件的(de)通(tōng)用(yòng)“事件”:
1、鼠标左鍵被按下(xià)
事件的(de)産生時(shí)機:鼠标左鍵被按下(xià)時(shí)。
語法:邏輯型 _控件名稱_鼠标左鍵被按下(xià)(橫向位置,縱向位置,功能鍵狀态)
參數:前兩個(gè)參數指示當前鼠标相對(duì)控件左上角的(de)橫縱坐(zuò)标;最後一個(gè)參數“功能鍵狀态”描述事件産生時(shí)功能鍵(Ctrl,Shift,Alt)的(de)狀态,其值可(kě)能爲以下(xià)之一或之和(hé):1、#Ctrl鍵狀态; 2、#Shift鍵狀态; 4、#Alt鍵狀态。要判斷是否同時(shí)按下(xià)了(le)某個(gè)功能鍵,在此參數的(de)值與想要得(de)知的(de)功能鍵的(de)狀态常量值之間使用(yòng)“位與”命令進行比較。如果所得(de)的(de)結果不爲零,則表示同時(shí)按下(xià)了(le)此功能鍵。例程。
2、鼠标左鍵被放開
事件的(de)産生時(shí)機:鼠标左鍵被放開時(shí)。
語法/參數:同上
3、被雙擊
事件的(de)産生時(shí)機:被鼠标雙擊時(shí)。
語法/參數:同上
4、鼠标右鍵被按下(xià)
事件的(de)産生時(shí)機:鼠标右鍵被按下(xià)時(shí)。
語法/參數:同上
5、鼠标右鍵被放開
事件的(de)産生時(shí)機:鼠标右鍵被放開時(shí)。
語法/參數:同上
//通(tōng)過在此事件中,用(yòng)彈出菜單()“方法”彈出右鍵菜單。例程。
6、鼠标位置被移動
事件的(de)産生時(shí)機:鼠标位置被移動時(shí)。
語法/參數:同上
//當鼠标指針在控件上移動時(shí),将連續産生一系列本事件。例程。
7、按下(xià)某鍵
事件的(de)産生時(shí)機:用(yòng)戶按下(xià)鍵盤上的(de)任意鍵時(shí)。
語法:邏輯型 _控件名稱_按下(xià)某鍵(鍵代碼,功能鍵狀态)
參數:“鍵代碼”——被按下(xià)的(de)鍵的(de)ASCII碼,均已被定義爲常量,見常量表。
“功能鍵狀态”——見“鼠标左鍵被按下(xià)”事件中的(de)描述。
//常量表:見《易語言知識庫》或 系統支持庫。
8、放開某鍵
事件的(de)産生時(shí)機:用(yòng)戶放開鍵盤上的(de)任意鍵時(shí)。
語法:邏輯型 _控件名稱_按下(xià)某鍵(鍵代碼,功能鍵狀态)
參數:同上
9、字符輸入
事件的(de)産生時(shí)機:用(yòng)戶按下(xià)鍵盤上的(de)可(kě)打印字符鍵(包括回車、退格鍵)時(shí)。
語法:整數型 _控件名稱_字符輸入(字符代碼)
參數:“字符代碼”——被按下(xià)的(de)字符鍵的(de)ASCII碼,均已被定義爲常量,見常量表。
//本事件與按下(xià)某鍵、放開某鍵的(de)區(qū)别:前者隻接受可(kě)打印字符鍵;而後兩者可(kě)接受所有鍵。
//“在用(yòng)戶事件處理(lǐ)子程序中,将事件處理(lǐ)完畢後可(kě)返回一個(gè)字符代碼,用(yòng)于替換将繼續傳遞到所屬對(duì)象上字符鍵事件中的(de)字符代碼;如果返回 0 ,則取消此事件,不再将此事件傳遞到所屬對(duì)象上去;如果事件處理(lǐ)完畢後沒有返回值,則将本字符鍵事件繼續原樣傳遞到所屬對(duì)象上去。”——這(zhè)是《易語言知識庫》中的(de)原話(huà),不易理(lǐ)解。Liigo給大(dà)家舉個(gè)例子:扔一個(gè)香蕉給猴子,它會高(gāo)興的(de)大(dà)叫。但如果這(zhè)個(gè)香蕉在半空被程咬金攔截了(le)呢(ne),猴子還(hái)會高(gāo)興的(de)大(dà)叫嗎?顯然不會,而且它什(shén)麽反應也(yě)沒有,因爲它壓根兒(ér)就不知道有香蕉扔過來(lái)。有興趣的(de)請看例程。
10、獲得(de)焦點
事件的(de)産生時(shí)機:當控件獲得(de)輸入焦點時(shí)。
語法:_控件名稱_獲得(de)焦點()
//如果按鈕上有一個(gè)黑(hēi)色細點組成的(de)虛框,或者編輯框中有光(guāng)标在閃爍,表示它正在擁有輸入焦點。其它控件類似。一台機器上的(de)所有程序的(de)所有窗(chuāng)口中,同一時(shí)刻有且隻有一個(gè)控件擁有輸入焦點。
//本事件和(hé)下(xià)面失去焦點的(de)事件一樣,隻有“可(kě)停留焦點的(de)”控件才擁有,如:編輯框、畫(huà)闆、按鈕、選擇框、單選框、組合框、列表框、選擇列表框、橫向滾動條、縱向滾動條、滑塊條、日期框、月(yuè)曆、驅動器框、目錄框、文件框、顔色選擇器、超級鏈接框、調節器、表格、數據源、圖形按鈕等。
11、失去焦點
事件的(de)産生時(shí)機:當控件失去輸入焦點時(shí)。
語法:_控件名稱_失去焦點()
上一篇:沒有了(le) [返回列表]
下(xià)一篇:關于10種編程技術将成爲主流趨勢
說點什(shén)麽吧
- 全部評論(0)
還(hái)沒有評論,快(kuài)來(lái)搶沙發吧!