在易語言簡單編程常用到的那些事
工具/原料
電腦
易語言
常用語句
這是我們學易語言首先會接觸的一類語句。比如:標籤1.標題 = “祖國,您好!” ,這句代碼的意思是:標籤1的標題是:“祖國,你好!”——即將標籤1的標題屬性值定為“祖國,你好!”(所謂賦值也)。我們所見的給變量賦值就是用此類語句。賦值語句常見有以下兩類: ...⑴、將某一對象的某種屬性值賦給另一對象。
比如:標籤1.標題=編輯框5.內容。意思即是“標籤1的標題跟編輯框5中的內容一樣”。比如我們在編輯框5中輸入“易語言使英語盲也學會了編程”,那麼在相關事件(比如單擊按鈕)的驅動下,標籤1的標題也相應顯示為“易語言使英語盲也學會了編程”。 ...⑵、將某一類型的屬性值賦予某個對象。
比如:標籤1.標題=“祖國,你好!”,將“祖國,你好!”賦給標籤1的標題。 所賦予的屬性值可以是各種類型的,比如:窗口1.可視=真,這個“真”是一個邏輯型數值。如果是文本型數值要用雙引號,比如剛才的例子:標籤1.標題=“祖國,你好!”即是。 又如,我們會發現這類句子:標籤2.標題 = 到文本 (取小時 (取現行時間 ())) + “:” + 到文本 (取分鐘 (取現行時間 ())) + “:” + 到文本 (取秒 (取現行時間 ()))。因為標籤類對象只接受文本型數據,所以要把時間型數據轉化為文本型,否則測試時會提示:“所接受的數據類型與傳遞給它的數據類型不一致”。
有時我們會發現此類句子:容器1=容器1+10,這個語句的意思是:“將容器1加10之後,再將新值傳回給容器1”。 從這裡可以看出,這裡的“=”號跟數學中的“=”號在含義上是不同的,在數學中不可能出現b=b+2之類的表達式,而在易語言中這種表達式卻是允許的,而且是經常運用的。 另外,我們又會看到這類句子:編輯框1.高度=取用戶區高度 ()。“=”號的右邊表示操控程序的命令,也即是說有時可以將系統命令、執行條件、項目、常量、子程序、函數、資源乃至其他對象的方法等,都可以當作是屬性值賦給對象。“編輯框1.高度=取用戶區高度 ()”可以理解為取得“取用戶區高度 ()”的返回值(運算結果),然後將此值賦給編輯框1。 預告:以下我們將會繼續介紹方法型語句、命令型語句、流程控制型語句、運算型語句、函數型語句等。 由於我也是菜鳥,所以分類可能不太嚴密。請高手幫我看看上面有哪些地方說錯了,我自己是不太清楚的。
【賦值型語句。(也可稱屬性型語句)(特徵:有一個“=”號將左右兩邊連起來)】
①、註釋型語句。
易語言的註釋型語句的格式是:
※ 註釋語句
註釋語句不能執行程序,只是用來解釋上一行代碼的意思。易語言是把註釋代碼隱藏起來的。顯示某行代碼的註釋語句的方法是:選中某行代碼,如果在該行代碼前出現“+”號,說明該行代碼有註解,點擊該“+”號可以打開該行代碼的註解,點擊“-”可以重新隱藏註解。
上述註釋型語句是易程序中固有的,我們也可以自己添加註釋型語句。方法:直接改動某一備註或用右鍵選“修改備註”。
除了上述的備註方法外,在下方的“提示夾”裡有對該行代碼更詳細的解釋。 我們也可以把下面的草稿型語句作為備註。 ②、草稿型語句。
易語言的草稿型語句的格式是:
※草稿:程序代碼 草稿型語句也不能被程序執行,有兩種情況會出現草稿型語句:①、沒有轉為正式語句,在代碼前會有“※草稿:”字樣,轉化為可以運行的正式代碼的方法:雙擊該行代碼使之變灰,然後按回車鍵(即Enter鍵)。②、該行代碼有錯誤,不能轉化為正式語句。處理:修改錯誤。 ③、測試型語句。(等等再解釋)
【非運行語句。 非運行語句包括以上幾種。】
我們如果看過《控件的屬性、事件和方法》,就會理解方法是一個具體對象能夠執行的動作。有的方法會有參數表,有的方法則不用參數,“參數”大概相當於調用這個方法的各種相關數據,包括相關對象屬性值、系統命令、執行條件、項目、常量、子程序、函數乃至其他對象的方法等,都是可以調用的參數。不同的方法有不同的參數,一種方法可以有多種類型的參數。執行、調用一個對象的方法的一般格式如下:
對象名.方法名(參數1,參數2,...)。
例如需要在一個名為“購物籃”的列表框裡添加一個叫“蘋果”的列表項目,其語句如下: 購物籃.加入項目(蘋果)。
上面這句話的意思可以理解為:“將購物籃的加入項目(方法)定為蘋果”。在這個例句中,“加入項目”是“購物籃”的方法,“蘋果”是其參數。其中調用列表框的“加入項目”方法的句式是:
列表框.加入項目 (欲加入項目的文本,[與欲加入項目相關的數值]) 同時我們又會發現另一類句式,比如“銷燬()”,這個句式跟命令型句式很象,但其實它是下面這個句式的省略表達:窗口單元.銷燬 ()。也即是說調用當前窗口單元的方法句式可省略前面的對象名前綴,它仍然是一種方法型語句。再舉另一例子,“窗口單元.彈出菜單 (欲彈出的菜單,[水平顯示位置],[垂直顯示位置])”可以省略表達成“彈出菜單 (欲彈出的菜單,[水平顯示位置],[垂直顯示位置])”。
欲查看某類窗口單元具有哪些方法、這些方法的詳細解釋以及有哪些可用參數等,請到易語言設計界面的支持庫夾中的“數據類型”分枝中尋找。譬如:想了解畫板的所有方法,可以到“數據類型 -> 畫板”下查看。 下面列舉幾個調用對象方法的例子,以便讓各位菜鳥舉一反三:
①、在程序中使用常量時其名稱前必須加上“#”符號,所以如果調用的參數中有常量,就在常量前面加上“#”符號,比如:
列表框1.調整層次 (#底層)
②、調用系統命令作為參數。例句:
畫板1.滾動寫行 (數值到人民幣 (100, 假)) 。
這句的意思是,調用“畫板1”的“滾動寫行”方法。而其欲寫出的數據(參數)是“數值到人民幣 (100, 假)”(這句的語法請看幫助),這是一種數值轉換命令語句。
③、調用相關對象的屬性值作為方法的參數。
例句:
列表框.加入項目 (編輯框1.內容,)
【方法型語句。】
命令型語句跟方法型語句差不多,看看下面兩者的對比就知道它們的差別了——方法型語句:對象名稱.方法名稱(參數,......),而命令型語句的基本格式是:
命令名稱 (參數,......)
“命令”的意思也跟“方法”差不多,都是一種程序運行動作指令,只不過“方法”是某個具體對象所具有的能供調用的指令,而“命令”則是整個易語言系統固有的、可以供任何程序任何對象調用的指令,所以命令名稱前面沒有前綴的對象名。
有時候命令的參數不是必需的(即“可選的”),比如:取隨機數 ([欲取隨機數的最小值],[欲取隨機數的最大值]),“[]”表示該參數不是必需的。如果是這種情況,該參數可為空,比如:取隨機數 ()。
那麼,我們怎樣調用命令呢(怎樣編輯命令代碼)?怎樣查找易語言系統提供的命令呢?也是有兩種方法:①、請到易語言設計界面的支持庫夾中的“數據類型”分枝中尋找。譬如:想了解文件讀寫的“插入文本”命令,可以到“核心支持庫-> 文件讀寫->插入文本”查看。點擊該命令名稱可以快速地在代碼編輯區插入該命令的代碼;②、選“幫助→易語言知識庫→目錄→參考手冊首頁→系統核心支持庫”,我們會發現那裡列舉了易語言提供的所有命令類別,可以選中某類命令類別來查看。
通過查找,我們會發現易語言提供以下幾種類型的命令可供調用:
①、調用核心支持庫命令,包括以下幾大類型:
流程控制 算術運算 邏輯比較 位運算 容器操作 數組操作 環境存取 拼音處理
文本操作 字節集操作 數值轉換 時間操作
磁盤操作 文件讀寫 系統處理 媒體播放
程序調試 其他 數據庫 網絡通信
比如“取現行時間 ()”是屬於時間操作命令,而“數值到人民幣 (100, 假)”是一種數值轉換命令。
②、調用其他程序(包括窗口程序集、子程序等)、函數、API函數等的命令。有時候我們會發現某個命令在核心支持庫裡找不到,那可能是調用以上的東西,比如在某一個例子中有一個“添加用戶()”的命令,這個命令在系統命令列表裡找不到,我們再看下面有一個子程序叫“添加用戶”,原來該命令是調用“添加用戶”子程序。
下面再列舉一些常見的命令以便舉一反三: ①、載入窗口命令。我們想通過一個窗口啟動其他窗口,可用此命令,其句式是:
載入 (欲載入的窗口,[父窗口],是否採用對話框方式)
它的意思請查看有關說明。
②、運行命令。使本程序或其他程序運行,其句式為:
運行 (欲運行的命令行,是否等待程序運行完畢,[被運行程序窗口顯示方式])。 示例:運行(程序1,,假)。
③、信息框命令 。有時我們想使系統反饋指令,比如彈出相關提示,但又找不到有“信息框”這個控件(窗口單元),原來易語言是通過命令調用信息框的(類似的還有輸入框命令),其格式是:
信息框 (提示信息,按鈕,[窗口標題])。
④、關閉命令。這是一種數據庫操作命令,當指定數據庫操作完畢後,關閉已經被打開的指定數據庫,以便清空數據變量,節約系統資源,其句式是: 關閉 ([數據庫別名或名稱])
⑤、結束命令。本命令結束當前易程序的運行,參數為空(無返回值),其格式是: 結束 ()
【命令型語句。】
學過其他編程語言的朋友初次用易語言一般會不太適應,因為代碼都是用中文表示的,呵呵。其實易語言的語法規則跟其他編程語言是差不多的,可能他們比較不習慣的是聲明型語句是用表格來表達。 比如VB中聲明變量的句式是“dim 變量名 as 變量類型”之類,而易語言是用表格聲明容器來表示,表格所要填寫的內容包括容器名(變量名)、容器類型(變量類型)等項目。用表格能更直觀地瞭解、查找或插入所要聲明的東西,例如變量、子程序、常數、dll函數、聲音或圖片資源等。 如果我們把易語言的表格型代碼複製粘貼到記事簿等文件中,會發現表格型代碼轉化為文字型代碼,比如對子程序的聲明會變成類似下面的語句:
子程序:_按鈕1_被單擊
返回值類型:字節型
下面來列舉一下聲明型語句的幾種類型和聲明方法:
㈠、建立(聲明)容器(變量)。需要聲明(定義)的項目包括容器名、容器類型、是靜態容器還是非靜態容器、數組、備註等。
建立容器的方法:⑴、局部容器—在子程序下面按下“Ctrl + L” 加入一個空容器。
⑵、窗口程序集容器—在窗口程序集下面按回車鍵。
⑶、全局容器—在工作夾裡選“程序→全局容器”,或在菜單裡選“插入→新全局容器”。 ㈡、建立子程序。聲明項目包括子程序名、返回值類型、參數名等。
建立子程序的三種方法:
⑴、在菜單裡選“插入→新子程序”,
⑵、或者按“Ctrl + N”插入一個新子程序,
⑶、也可以選定需要對其事件進行編程的控件對象(如按鈕1)然後在屬性夾裡選取相關事件(如“被單擊”),會同時在代碼編輯區插入“按鈕1.被單擊”之類的子程序。
㈢、建立dll命令(api函數)。
跟其他編程語言一樣,易語言本身提供的系統命令是有限的,但在易應用程序中可以直接調用系統外部動態連接庫(即 Dll 庫)中的命令。
在VB裡聲明api函數的語句類似於下面的句子:
Declare Function ClipCursor& Lib "user32" (lpRect As RECT)
這句話翻譯成中文是: 聲明函數:ClipCursor 函數所在庫:user32(函數參數名:lpRect 參數類型:RECT)
那麼在易語言裡,聲明dll命令也包括api函數名、函數所在庫、函數參數名和參數類型等項目。
建立dll命令來調用api函數的兩種方法:
⑴、在工作夾裡選“程序→dll命令”。
⑵、菜單裡選“插入→新dll命令”。
㈣、其他的表格型語句還包括建立程序集、建立新數據類型、建立常量、建立聲音或圖片資源等。一般來說用表格來插入以上這些東西的方法有兩種:
⑴、在工作夾裡選“程序→”。
⑵、菜單裡選“插入→”。
【表格型語句(聲明型語句)。】
常見問題
什麼叫做賦值
1:把一個常量定義給一個變量吧,就像方程式中的 令X=10
2:“屬性”即事物的性質,“屬性值”即事物性質的具體表現,比如“顏色”是事物的性質(即“屬性”),而“紅色”是“顏色”這個屬性中的一種屬性值,我們知道,“紅色”是系統中的一種常量值,它的顏色屬性值是“255”,也可以表達為“#紅色”。確定事物的具體性質即是確定事物的屬性值(賦值),比如給你女朋友送一套紅色的衣服,那麼你女朋友這件衣服的屬性值是“紅色”。衣服.顏色=紅色 ,即將衣服的顏色的屬性值定(賦)為紅色,這個行為就叫“賦值”,是“賦予屬性值”的簡稱。 或者可以這樣理解:用代碼來設置對象的屬性,就稱為“賦值”。
3:其實就是把一個東西放進一個空的箱子裡的過程。
什麼叫“返回值”
要先從對象的方法或系統的命令的含義著手理解。所謂對象的方法或系統的命令可以理解為對所提供的相關數據(即參數:提供給系統處理的一種變量)進行的處理(運算)。
不同的方法或命令有不同的處理方式,比如“載入 (窗口1,,假)”,是對“窗口1”這個已賦值參數用載入的方式進行處理,又如“相加 (被加數,加數)”是對“被加數”和“加數”兩個數據用相加的運算方式處理。
有處理結果或運算結果(即能返回一個值)的系統命令我們就稱為函數。“返回”即“處理”,“返回值”即對函數參數的處理結果。
系統命令也可以稱為系統函數,因為它有返回值。比如信息框函數的返回值有以下幾個常量值: 0、#確認鈕; 1、#取消鈕; 2、#放棄鈕; 3、#重試鈕; 4、#忽略鈕; 5、#是鈕; 6、#否鈕 比如當我們按下“確認鈕”時,信息框函數值為0;若按下“取消鈕”,信息框函數值為1......依此類推。
談談返回值
Y=f(X1,X2,...Xn)表達了一個函數關係,如果將X1,X2,...Xn看作參數,f看作過程或算法,那麼Y就是結果或是返回值。任何一個過程都有它的結果,函數、子程序、以及事件都是一個過程,理論上都有其返回值,而返回值又是另一個過程的判據。 最有意思的是返回值的傳送常常困擾著我們,前不久有個易友提出如何控制小數點問題,是西風幫助解決了,最近我也遇到了類似的問題,最後歸納起來:都是返回值問題。即使已有一知半解,還常常被其擊倒。
問題如下:道具:一個窗口,一個編輯框,一個按鈕
子程序:_編輯框1_按下某鍵
返回值類型:邏輯型
局部容器:容器1 數據類型:整數型
如果真 (鍵代碼 = 32)
編輯框1.內容 = “”
編輯框1.可視 = 假
計次循環首 (1280, 容器1)
編輯框1.加入文本 (“:” + 到文本 (容器1) + “:” + #換行符)
計次循環尾 ()
編輯框1.可視 = 真
編輯框1.獲取焦點 ()
編輯框1.起始選擇位置 = 3
如果真結束
想讓光標處於:1:之後,可怎麼運行,光標都在第四個位置,以為是BUG來了,其實不然,易語言的BUG不是那麼容易被你發現的。究竟是怎麼回事,換另一種方法試試:改由_啟動窗口_按下某鍵,後面的一切照舊,問題沒有了,這就說明不是BUG。仔細地思考忽然想到鍵代碼=32不是空格鍵嗎,空格鍵下按後光標是一定要向右走一步的(一個半角字符的位置),就是說光標原來已在“:1:”後,又由於空格鍵操作的原因,向右多移了一個字符的位置。那為什麼編輯框_按下某鍵會有這個結果呢,是因為空格鍵操作的結果傳遞給窗口沒有什麼影響,而傳遞給編輯框(當然是獲得了焦點的編輯框)就大不一樣了。簡而言之就是空格鍵的操作結果影響了光標的移動,要知道,事件驅動的結果只有返回給編輯框,光標才會做出響應,如果不讓其返回問題不就解決了嗎!於是就在程序的最後加上一句“返回(假)”。
再如:用鼠標點擊編輯框後,選中編輯框中所有的文本,程序如下
子程序:_編輯框1_鼠標左鍵被按下
返回值類型:邏輯型
參數:橫向位置 數據類型:整數型
參數:縱向位置 數據類型:整數型
參數:功能鍵狀態 數據類型:整數型
編輯框1.被選擇字符數 = -1
編輯框1.起始選擇位置 = 0
返回 (假)
如果不返回假就怎麼也不會選中框內的所有字符,因為本來是執行了選中所有字符的命令的,但鼠標左鍵按下後,編輯框又獲得了焦點,就使選中後的光珊又被去掉了,變成了光標在閃動的結果,而返回假就去掉了這後一步的動作,實現了選中所有字符的目標。
由此回想起小數點問題也是某鍵按下的驅動事件,當你判斷出前面已經有小數點存在的時候,小數點鍵碼再次按下時返回為假就可以了。影響的過程總是先有事件後有響應,事件之後切斷消息的傳遞就可以了。
在面向對象的程序結構中,總是一個事件連接著另一個事件,每一個事件都會有一個結果,這個結果有時也會產生負作用,當你利用一個事件的某一方面時,卻忽略了另一個方面,最終受另一個方面的困擾,你應經常要想到這個事件會產生什麼後果,對你的預定目標有沒有影響,多一個想法也許會給你帶來福音!
注意事項
以上內容僅供參考