第一篇:VB學習札記
VB學習札記
在大二上學期學習過VB.NET,但由于將近1年時間沒有接觸,本學期剛開學時vb水平已經退化到沒學過的水平了。所以,必須要利用前3周來復習已經學過的知識,一邊做練習一邊鞏固。
首先,我找到以前的VB書以及筆記本,大致的看了一遍,了解到所學知識的大致框架。之后,開始著手做第一題的練習題。題目中涉及到的VB語句就翻書再細致的去看。順便把這一類型的語句復習一遍。
按照這樣的流程,花了兩個多禮拜,陸續把VB復習的差不多了。而且作業也完成的差不多了。
我總結了一下我學習VB的方法:
首先,要保持良好的學習心態
1、要有自信,自強,積極主動學習.2、不要畏懼困難,克服畏難情緒,樹立學好程序設計的信心
之后,我覺得要有良好的學習習慣
然后,我覺得學習程序設計要注重理解一些重要的概念.VB程序設計本身并不復雜,翻開一本程序設計學習的書籍,看到的無非就是變量,函數,條件語句,循環語句等概念.但要真正能進行程序設計,需要深入理解這些概念.因此,在 程序入門階段還是應該重視概念的學習.我覺得務必要自己動手編寫程序。遇到問題時,自己去琢磨,進行試驗。再不行的時候,會找同學來幫忙。一起討論檢查語句中的錯誤。
程序設計入門階段要經常自己動手抄寫或編寫一些小程序,親自動手進行程序設計是創造性思維應用的體現,是培養邏輯思維的好方法.因此一定要多動手編寫程序,而且要從小程序開發開始,逐漸提高寫程序的能力.程序設計課是高強度的腦力勞動,不是聽會的,也不是看會的,而是練會的。只有自己動手,編寫一些程序,才會有成就感,進而對課程產生興趣,學起來才比較從容。
同時,也閱讀、借簽別人設計的好程序。我也會參與討論同學遇到的問題。我發現在大家一起討論,發現問題并最終解決問題時,學到的或許比自己單獨一個做學到的更多。多看別人設計好的程序代碼,包括教材上的例題程序.在讀懂別人程序后,要想他為什么這么設計能不能將程序修改完成更多的功能 則可以學到別人優秀的東西,幫助自己 提高自身水平.最后,我發現上機調試程序的時候應認真把實驗題在用紙上做一做(包括窗體界面設計,事件代碼的編寫等)每次上機后應總結,把沒有搞清楚的問題記錄下來,請教老師或同學.平時應多抽課余時間多上機調試程序,同時時常注意系統的提示信息,遇到問題多問幾次為什么。
第二篇:VB學習心得體會
VB學習心得體會
這學期選修了VB這門學科,想從學習中對計算機有更深刻的認知,也對我大學中的2級考試奠定基礎。那么談談這學期的學習中對vb的認知和心體會。
通過學習vb我基本學會了編輯一些小程序,掌握了一些基本的知識,得到了以下一些收獲:
1.富業余生活。曾經業余時間到處游手好閑的身影不見了,以前沒事我肯定一動不動的坐在電腦面前擺弄電腦。是啊,想想以前,真是一無是處,一會找人砍大山,一會找人打游戲,一會就傻傻的坐在小板登上兩眼無光,似是厭倦了紅塵。現在有了VB,它給了我無窮的快樂,讓我樂此不疲。
2、多了一門技術。VB是一門計算機編程語言,也算是一項知識含量較高的東西。采用的是可視化程序設計。學習的這段時間,我明白了萬事開頭難,剛剛開始,遇到些困難沒關系,慢慢來。我們每學一點,就趕快把它用到實際的程序中去,自己多學多用多實踐,水平才能不斷提高,這就是“學以致用”。只有這樣我才呢學有所成
3、鍛煉意志。編程可不是一項輕松的活,尤其是一個人開發制作軟件時,那工作量就多了。沒有一定的坐功、細心程度及耐性那是絕對做不到的。有時,把程序做完了需要調試運行,但是就是不能達到自已設計的效果和目的,那你得戴上放大鏡找啊找啊,也許就是因為一個符號或一個字母,你就得花上個幾個小時,半天,甚至更長。只要有一顆永不退縮的心,我相信你一定能找到問題所在,最后一定能見到你開心的笑容,也一定能找到成功者的感覺。
通過這個學期的學習,對了VB這種高級語言有了初步的認知,對一些小的程序有了初步的設計方案,能根據要求設計出想要的程序,鍛煉了自己的創造性思維,是培養邏輯思維的好方法,同時我經常看同學設計好的程序代碼,然后想想別人為什么這么計就能達到效果,我的設計能不能完成更多的功能,這樣優秀了自己,幫助了自己,提高了自身水平,同樣,也欣賞了別人,對別人是贊美,對自己是幫助,總而言之,這學期的VB課程讓我收了很多。
第三篇:VB指導學習
2005-7-24
VB指導學習
1、if語句的另一種寫法:
if num=10 then print num
當then后面(同一行)有執行語句時,if語句不能加end if
如有end if,則then后(同一行)不能有語句
2、兩條語句放在同一行時用“:”分割
如:print num:print num+13、語句分多行寫用“ _”連接,注意“空格&下劃線”
如:print num _
+14、除法:a/bab
C++:“/”是除法,a、b都是int,則結果是int,如果其中一個是float,則結果float“”是轉義字符。
VB:“/”是除法,有小數。“”取整(小數點后舍)
5、case語句用法:
private sub form1_click()
dim a
select case a
case 1to4,7to9,11,13<5
print a
case else
msgbox”不在范圍內”
end select
end sub6、VB中假是”0”,真是”-1”
C++中假是“0”,真是“1”
7、private sub form_click()
for I=2to4 step-1讀完完整的一句之后,如發現問題,則跳過此句執行下一句。print I
next
print I本程序只執行此句一次
end sub8、倒序輸出字符串
取字符函數mid(string,2,3)表示從string字符串中第二位開始,一共取三位如:mid(abcdefg,2,3),則結果為 bcd
lift(abcd,2)=ab
right(abcd,2)=cds
例:private sub command1_click()
dim x as integer,str_len as integer
dim str as string
for x=str_len to 1 step –1
text1.text=text1.text + dim(str,x,1)
next
end sub
form1窗體里有兩個文本框和一個按鈕
9、循環for I=1to5
??
next(I)(next后最好不要加i)
10、聲明變量:dim a,b as integer則a是變體,b是int
dim a as integer,b as integer則a,b都是int11、webbrowser 網頁
添加部件 ms internet controls 控件
private sub form_click()
webbrowser1.navigate app.path & “a心理測試.html”app.path表示當前目錄end sub
private sub form1.resize()
wenbrowser1.height=form1.scaleheight-10“-10”可不寫
webbrower1.width=form1.scalewidth-10如不加scale,則會覆蓋一點邊
12、有退出按鈕的窗體,點擊退出時詢問,點擊窗體右上角X則不詢問,怎么辦?Private sub form_unload(canel as integer??)
If msgbox(”是否退出?”,vbokcancel,”詢問”)=vbok=true=false
Cancel=true-?取消關閉
End if
End sub13、”關于”窗體
添加“關于”對話框
14、使用“選項卡”省地方
添加控件“ms tabbed dialog control 6.0”
如添加控件“ms windows common control 6.0”->”tabstrip”也可以作,但不好用。
15、幫助文件 msdn是世界最大的幫助文件,CHM格式的幫助文件
html help workshop
1.目錄-> 節點&頁面-> 編譯
2.new-> project-> ok-> 下一步-> 保存路徑&名稱-> 下一步-> 勾中 html
files(.htm)-> 點擊Add-> 下一步-> 完成3.搜索proj-> 屬性 compiler-> 勾中compiler-> ok
4.作節點 頁面 關鍵字
project(工程)->contents(目錄)->index(索引)->ok->保存節 鑰匙增加關鍵字contents(目錄)->是否創建->ok->保存->點左第二個文件夾則屬性換成書圖標
16、用VB調用幫助文件
設工程屬性的“幫助文件名”后,按“f1”彈出幫助
設一個“幫助菜單”,在菜單click事件中加入sendkeys“{F1}”,模擬用戶按鍵盤還可以模擬alt + f4 , 但不可以模擬 control + alt + del(重啟),17、MDI無子窗體時,幫助無作用,調用ADI/ATI
把目錄的成app.path,把此文件拷貝到其它位置仍可使用
18、shell 只能調用.exe文件hh.exe是windows 自帶的幫助打開“幫助文件”的exe文件shell”hh.exe 幫助文件的路徑及文件名”
19、private sub a_click()
sendkeys”{f1}”
shell”hh.exe d:qiaosl??.chm”,vbnormal focus
end sub
private sub form_load()
ap.help file=app.path &”??.chm”
20、1.工程屬性設“幫助菜單名”
2.App.helpfile= ??
3.Sendkeys”{f1}”
4.shell(“hh.exe??”)
1&2作用是:按F1出幫助,便用2好一些,3是模擬按鍵盤F1,4可完全單獨使用,3&4用在按鍵或菜單。
Api例子
下午
21、設置象素:窗體的lemode屬性1-twip->緹,pixel->象素
22、動態生成控件必須用控件組
23、缺省事件是雙擊控件時自動出現的事件
缺省屬性可省略:text1.text=”a”可寫成text1=”a”,可省略“.text”
24、cotfouse->事件
25、模式&非模式窗體:
26、參數傳遞:默認按引用傳遞,Byval是按值傳遞
subs(byval x as single,y as single)則x按值,y按引用,VB中真為-127、第十章,error
語法錯誤:
運行時錯誤:一般不出錯,特定時出錯,考慮不周全,如除數為0
邏輯錯誤:不報錯,寫的不對,如循環次數不對。
錯誤處理代碼
1. 創建捕獲錯誤代碼
2. 處理此錯誤
3. 繼續執行
on error goto 1標號(數字&字母都可以)
exit sub
1:
msgbox(“除數不為0”)
text1.text=””
text1.setfouse
end sub
resume(next/line)回到出錯行,或出錯行的下一行,或指定位置
on error resume next忽略錯誤/延遲最好少用,延遲后改不了
F8是單步運行
28、對象 –> err.屬性&方法 number(錯誤編號)
29、dbpath=commondialog.filename
if dbpath=””
end
con.open
else resume
showopen30、C++復習題:
簡單
1. 用戶接收一個數,調用一個函數,輸出該數的立方
2. 寫一個函數min(int a[]),求主程序中傳來的數組中最小值
難度適中
3. 民主投票方法選班長,候選人編號A、B、C、D每位同學只能選一人作班長,輸入每張選票的候選人編號A~D,輸入0終止,調用函數process()輸出每人得票數及當選人
4. 接收用戶輸入的數,直到有5個奇數,顯示此5個奇數,調用max()函數顯示此5個奇數中最大數
高難度
5. 字符串變量A、B,B是A中的一部分,將B摳出A,再輸出
超難度
6. 賣票,車站一共15,每站上(剩下站數)個人,然后剩下每站依次下一個人,問應
設幾個座位,賣出多少張票
7. 發牌:按順序發隨機牌(使用隨機數)
第四篇:vb學習綜合資料
VB教程:序言-不再游戲
我們需要什么
我們需要什么?當我們在一個精彩的游戲世界中游歷了一番之后,或是驚嘆于某一工具軟件的小巧精致之余,多少總會產生些許編程的沖動。編程嗎,在以前如果你對電腦還是一個門外漢,那實在是一件可望而不可及的事情。如果運用基于DOS下的編程語言,譬如C、Qbasic、Pascal等等,真不知何年何月才能有所成就。
編程是需要天賦的,你必須在大腦中對整個程序有一個清晰的輪廓,一個高效的流程,這并不是每個人都能做到的,你必須思之慎之,這也使編程變成一件最枯燥無味的事情。但在第四代計算機語言(可視化編程)出現后,可以確切的說它開發了人們的更多天賦,并不局限于那些頭腦異常清晰的人,每一個人都可以發現自己也可以編出一些從前不敢問津的程序,想象力的充分發揮才是第四代語言的精粹。
Visual Basic(以下簡稱VB)可以說是可視化語言的先驅了,而且它也是可視化程度最高的一個,從幾年前VB誕生之日起到現在,它已經經歷了五個版本,而且現在微軟正在緊張的進行著VB6.0的研制、測試,這么高的更新率,不外乎說明兩個問題:用戶對VB的熱衷,微軟對VB的重視。不可否認微軟對市場的預測能力是極為高明的,而它強大的技術、財力支持也使它在許多以前未進入的領域,在不長的時間內有成為最有力的競爭對手,如IE之于瀏覽器領域,《帝國時代》之于游戲都是最好的例證。對于VB現在也有一個很強的競爭對手――Delphi,有人把它稱作VB殺手,這顯然有偏激之處,VB的確有它的不足之處,但Delphi又何嘗不是呢,而且以微軟對VB的傾心,VB的功能必然會越來越強大。
VB的誕生
VB的出現可以說是Microsoft Windows的日漸成熟的必然產物。Microsoft Windows為程序員和最終用戶提供了一個共同的人機界面。對用戶,Windows提供了一個圖形鼠標的操作環境,該環境對所有的應用程序都一樣;對于程序員,Windows提供了一組預定義工具----稱之為Microsoft Windows 的軟件開發工具箱(SDK),該工具能使程序員建立一個與Windows界面相同的應用程序,而且,程序員不必關心最終用戶的硬件配置情況。在這一開發環境中,程序員唯一困難的是Microsoft SDK提供了六百多個函數和與其一致的事件驅動(event-driven)編程技術。兩種新方法的交叉使眾多的程序員重新陷入困境,程序員不僅要掌握程序驅動編程技術和六百多個函數的功能,而且還得用C語言描述這些問題。因此一般情況下,程序員首先要掌握C程序設計技術,而后再開始學習SDK。這樣的條件下就要求在Microsoft多任務環境下出現一種操作方便,使用簡單的新工具----Visual Basic由此誕生。
何為可視
英文Visual的意思是“視覺的”,“可視的Baisc”這個名字可能抽象了點,但實際上它卻是最直觀的編程方法,之所以叫做“可視”,你只要看到VB的界面就會明白,實際上你無需編程,就可以完成許多步驟。在VB中引入了控件的概念,在Windows中控件的身影無處不在,各種各樣的按鈕、文本框、無線鈕,都是控件的種類,VB把這些控件模式化,并且每個控件都有若干屬性用來控制控件的外觀,工作方法。這樣你就可以象在畫板上一樣,隨意點幾下鼠標,一個按鈕就完成了,這些在以前的編程語言下是要經過相當復雜的工作的。
我的希望:
我在學習VB的過程中也曾遇到了許多困難,而且用的參考書大都來自譯文,畢竟美國人和中國人的表達方式有所不同。這也造成了理解上的困難,所以我想為什么我不能寫一個給中國人看到VB教程呢,于是我這么做了。也曾經在雜志上發表過幾篇用VB制作小程序的文章,但受雜志的限制(篇幅、內容等等)(我得聽小編的),總沒有一個機會系統的介紹一下VB,造成了小小的遺憾。不過,我自己的主頁建好后,終于這個愿望可以實現了,利用HTML可以方便的把文字與圖片結合起來,不失為一個教學良所,也希望能夠得到大家的支持。希望“VB教程”能給你我一個互相學習的機會,如果你能從中獲益那將是我最大的快樂,那時你一定會發現編程比游戲有趣得多。:)
VB教程:第一章-Hello World!
沒學過編程的人常常會問,編程難不難,這個問題很難回答。難,的確很難,要編一個好的程序尤其是這樣,并且有些程序還要用到一些其他專業的知識,比如說一個圖形處理程序,就要對圖像的格式有所了解,甚至一些美術知識;但編程也很容易,就拿VB來說,編一個自娛自樂的小工具還是一件相當愜意的事情呢,當然它沒法完全代替人工,譬如說完成你的家庭作業、向學校發射導彈??
作為第四代計算機語言,VB的特點是顯而易見的。因為是“可視的”所以我們不妨先看看VB的界面(圖1_1)(我用的是VB4.0 32位版),很容易可以看到,屏幕上有五個窗口,(1)是菜單欄;(2)是工具箱(Tools Box),里面是VB所需的控件;(3)是VB程序要設計的窗體(Form);(4)控件及窗體的屬性(Properties),在VB中每一個控件都有其自己的屬性,比如文本框有Text屬性,而任何一個控件都有一個自己唯一的名字,這使得我們無需編程就可以完成部分編程的工作;(5)是VB的文件控制窗口,VB的每一個程序稱為一個項目(Project),一個項目文件里往往包括以下兩種文件,窗體(Form)文件和模塊(Bas)文件,當然還有Class文件,這些文件組成一個完整的程序,而項目文件(Vbp)則用來描述程序所包含的內容。
實際上,我一直認為學習的最好方法就是實際操作一下,好,下面我們就來看一個最簡單的程序,和所有的編程教科書一樣,我們把第一個程序稱為“Hello,world!”。
首先,我們先來熟悉一下窗體。如果你用過Win95附件所帶的畫圖板的話,那么你一定會很快熟悉VB的窗體設計方法,用鼠標單擊一下工具箱中的任何一個控件,然后在窗體上任意拖動鼠標,你就會得到一個所需的控件;當然還有其他的方法得到控件,你可以在工具箱上雙擊得到一個控件;或是按住Ctrl鍵,再單擊所需控件,重復第一次的步驟,你會發現,不用再回去點擊工具箱了,點右鍵可以恢復鼠標指針,這樣對于重復畫同一個控件尤其有用。
對于我們的第一個小程序,知道這些就已經足夠了。現在你可以在我們的窗體上畫如下控件一個圖片框(Picture Box),用來顯示圖畫,每一個控件建立的時候,系統都會給它設一個默認的名字(Name),這個PictureBox的名字就叫做Picture1,為了方便起見,我們以后的控件都使用缺省的名稱。選定Picture1,在左邊的屬性窗口中找到Picture屬性,單擊會出現,點擊為Picture1選一個圖像文件,VB支持的圖像文件有BitMap、WMF、ICO三種,微軟為用戶提供了一套圖標文件,存放在VB目錄的Icons目錄下,選擇Iconsmiscface01.ico文件,這樣圖標就被裝入了Picture1。再選擇Pictrue1的Autosize屬性,設為1-True,則會發現Picture1以變成和圖像一樣大了;把BorderStyle定為0-None,去掉圖片邊框。用同樣的方法再添加兩個圖片框:Picture2(Picture:face02.ico),Picture3(Picture:face03.ico)。
圖片框完成了,第二步,建立三個無線鈕(Option Button),由于它象收音機的無線電按鈕而得名),把它們的標簽名屬性(Caption)分別定為“悲哀”,“高興”,“沒治了”,放置成圖1_2的樣子。
最后我們還需要三個文本框(Text Box),分別把它們的Text屬性設為””(空字符串),程序的最后界面如圖1_3,這樣按下菜單窗口的運行按鈕,運行一下程序,還可以吧,不過現在程序還無法工作,就算是VB也不能免俗,還必須輸入代碼才能使程序運作。
VB是一門典型的面向對象編程的語言,它的整個程序都是由事件驅動的。那么,什么是事件呢?其實,我們的生活中充滿了各式各樣的事件,比如說“闖紅燈”這個事件的發生會導致被警察追殺、走路撞到電線桿時會痛。上面的例子雖然有些滑稽,但它可以清楚的解釋事件的含義,就象你馬上就能體會到的在什么地方單擊鼠標時會發生什么,按下鍵盤時會發生什么,這就是事件,而事件就是這么容易。
要進入VB的代碼設計區,只需在需要的控件或窗體上雙擊鼠標即可得到這樣的窗口。如圖1_4,每一個VB程序都由若干小程序組成,這使得用VB編程更加容易,這些小程序,分為“過程”(Procedure)和“函數”(Function),二者都可以傳遞參數,所不同的是函數有一個返回值,而過程沒有,僅此而已。
雙擊窗體的任何一個部分,將出現一個空的過程:“Form_Load()”,這是一個非常重要的過程,它所驅動的事件就是該窗體被加載的事件,打個比方,就象計算機啟動時的批處理程序(Autoexec.bat)。這個程序里我們要對控件進行一些設置。我們剛才也曾對控件進行設置,但那是在程序設置中進行的,有時我們也需要在程序中改變某些控件的屬性,通過程序代碼。VB中規定,一個控件屬性的訪問方法:名稱.屬性,于是我們對本程序的控件進行如下設置:
Private Sub Form_Load()
Picture1.Visible = False Picture2.Visible = False Picture3.Visible = False Text1.Visible = False Text2.Visible = False Text3.Visible = False
End Sub
Private表示此過程是局部的,Sub表示子過程的開始,與之相對的是End Sub表示過程的結束,Visible屬性表示控件的可見性,這個屬性的值有兩個True和False。
注意:
VB里對大小寫是不加區分的,而且,已定義的名稱,以后再用到時,系統會自動把它變成相應的大寫或小寫。
小知識:
1.VB里的對變量及常量的規矩。
變量一般為Abc的格式,常量為ABC,另外這些變量和常量名不得同VB內的關鍵字相同,也不可以使用一些特殊符號,這些我們將在以后介紹,注意在學習中養成好習慣,使程序便于自己和別人的瀏覽。
2.程序書寫的竅門:
不要真的一句一句把程序打完,利用快捷鍵:拷貝Ctrl+C,剪切Ctrl+T,粘貼Ctrl+P。
按下F5,運行一下程序,現在發現只剩下無線鈕了。如圖1_5。
Private Sub Form_Load()
Picture1.Visible = False Picture2.Visible = False Picture3.Visible = False Text1.Visible = False Text2.Visible = False Text3.Visible = False Option4.Left =-2000 Option4.Value = True
End Sub
Left屬性表示控件離窗體左邊框的距離,設置為-2000,則在窗體內不會看到這個控件,并使之Value=True。再運行程序,一切如愿,如圖1_6.注意:為什么不用Option4.Visible=False?
因為,一旦設置無線鈕為不可見,那么再使它的Value為真是沒有意義的,不信自己試試。
下面我們可以繼續進行了。在剛才的代碼窗口里,將Object選擇為Option1,Proc選擇為Click,即得到一個Option1_Click的過程。代碼如下:
Private Sub Option1_Click()
Picture1.Visible = True Picture2.Visible = False Picture3.Visible = False Text1.Visible = True Text2.Visible = False Text3.Visible = False Text1.Text = “再見,殘酷的世界。”
End Sub
相同的建立Option2_Click和Option2_Click:
Private Sub Option2_Click()
Picture2.Visible = True Picture1.Visible = False Picture3.Visible = False Text2.Visible = True Text1.Visible = False Text3.Visible = False Text2.Text = “今天心情不錯。”
End Sub
Private Sub Option3_Click()
Picture3.Visible = True Picture2.Visible = False Picture1.Visible = False Text3.Visible = True Text2.Visible = False Text1.Visible = False Text3.Text = “Hello,World。”
End Sub
好,我們的開山之作完成了!按下F5,玩一下吧。這個程序雖然簡單,但也用到了許多基本知識,你開始感興趣了嗎?^_^
VB教程:第二章-事件、屬性及數據類型
以后兩章可能會比較枯燥,但不可否認也很重要,所以為了學好VB,我們一定要打好基礎才行。
一、事件
通過上一章的例子,你可能對“面向對象的編程”已經有了一定了解,它是由事件驅動的,對于不同的對象,所能感應到的事件也會不同,譬如說當你把鼠標移進某一區域時就會觸發MouseMove事件,這很直觀,也容易理解,但也有些事件比較抽象,下面我來對一般的事件進行一下解釋。
窗體和圖象框類事件
Paint事件:當某一對象在屏幕中被移動,改變尺寸或清除后,程序會自動調用Paint事件。注意:當對象的AutoDraw屬性為True(-1)時,程序不會調用Paint事件。
Resize事件:當對象的大小改變時觸發Resize事件。
Load事件:僅適用于窗體對象,當窗體被裝載時運行。
Unload事件:僅適用于窗體對象,當窗體被卸載時運行。
2.當前光標(Focus)事件
GotFocus事件:當光標聚焦于該對象時發生事件。
LostFocus事件:當光標離開該對象時發生事件。
注意:Focus英文為“焦點”、“聚焦”之意,最直觀的例子是,比如有兩個窗體,互相有一部分遮蓋,當你點下面的窗體時,它就會全部顯示出來,這時它處在被激活的狀態,并且標題條變成藍色,這就是GotFocus事件,而相反,另外一個窗體被遮蓋,并且標題條變灰,稱為LostFocus事件。上面所說的“光標”并非指鼠標指針。
3.鼠標操作事件
Click事件:鼠標單擊對象。
DbClick事件:鼠標雙擊事件。
MouseDown、MouseUp屬性:按下/放開鼠標鍵事件。
MouseMove事件:鼠標移動事件。
DragDrop事件:拖放事件,相當于MouseDown、MouseMove和MouseUp的組合。
DragOver事件:鼠標在拖放過程中就會產生DragOver事件。
4.鍵盤操作屬性
KeyDown、KeyUp事件:按鍵的按下/放開事件。
KeyPress事件:按鍵事件。
5.改變控制項事件
Change事件:當對象的內容發生改變時,觸發Change事件。最典型的例子是文本框(TextBox)。
DropDown事件:下彈事件,僅用于組合框(ComboBox)對象。
PathChange事件:路徑改變事件,僅用于文件列表框(FileBox)對象。
6.其他事件
Timer事件:僅用于計時器,每隔一段時間被觸發一次。
二、屬性
每個對象都有它的屬性,并且“Name”屬性是共有的,有了“Name”屬性才可以在程序中進行調用。對于屬性,可以在窗體的布局操作中完成,也可以在程序運行中改變,這取決你的需要,但有些屬性是只讀的,它只能在控件布局時改變。我將在以后的實例中具體介紹各個屬性的作用。
三、數據類型
學過編程的人都知道大多數的計算機語言都規定了各自的數據類型,VB也不例外。其實,在一個最簡單的程序中數據類型是可以不作規定的,也就是說,變量可以使用各種類型,但是在一個復雜的程序里,這樣做就很危險,因為很可能給同一個變量賦予了不同的類型,而導致程序出錯。所以,為了程序的嚴謹和便于查看,正確的定義數據類型是必要的。定義數據的另一個原因是,不同的數據占用不同的內存數量,譬如整型(Interger)數據占2字節,而長整型數據占4個字節,定義合適的數據類型,不管你相信不相信,它可以節省內存!
VB常用的數據類型有:整型(Integer,表示-32768至32767之間的整數)、長整型(Long,表示-2,147,483,648至2,147,483,647之間的整數)、實型(Single,表示-3.37E+38至3.37E+38之間的實數)、雙精度實型(Double,表示-1.67E+308至1.67E+308之間的實數),字符(String,每個字符占一字節,可以儲存0~65,535個字符),布爾(Boolean,只有兩個值True/-1,或False/0)。
數據類型的定義方法:
定義變量最簡單的方法是用“Dim”關鍵字,它的語法:
Dim 【變量名】As 【數據類型】
如:Dim Index As Integer
也可以在一行中定義多個變量,如:
Dim Index As Integer , Dim Number As Long
把多個變量定義成同一類型可以寫成:
Dim Index , Number As Integer
有時為了簡便,也以符號進行簡單的定義,作用是和上面一樣的。整型可以用“%”代替,長整型可以用“&”代替,實型可以用“!”,雙精度實型可以用“#”定義,如剛才的第一個例子可以寫成:
Dim Index% 等價于 Dim Index As Integer
對于常量的定義用Const定義,如:Const COLOR=255。
為了在程序中便于查閱,我們對變量和常量的寫法進行規定,變量一般用小寫方式,常量則全部大寫。
注意:使用常量的好處,對于程序中經常出現的數值,應設常量等于它,這樣一是書寫方便,其二,如果要改變該數值,只需改變定義常量的語句值,而不需改變每個語句,提高了效率。
數組的定義類似于變量定義,所不同的是數組需要指定數組中的元素個數,例如:
Dim IntegerArray(99)As Integer
這個數組中包含100個元素,腳標從0到99。
也可以指定腳標的起始值,例如:
Dim IntegerArray(2 to 10)As Integer
這個數組含有九個元素,腳標從2到10。
還可以定義多維數組:
Dim ThreeD(4,2 to 5,3 to 6)As Integer
上例定義了一個三維數組(4×4×4)。
記錄的定義
記錄定義是把控制權交給用戶的方法,它讓用戶可以定義自己的數據類型,它使用關鍵字“Type”,方法是:
Type 【數據類型標識符】
<域名> As <數據類型> <域名> As <數據類型> <域名> As <數據類型> ??????????
End Type
例如,定義一個地址數據:
Type Address
Street As String ZipCode As String Phone As String
End Type
這個地址數據里包括三個屬性,街區、郵政編碼和電話,可以把某數據定義成此類型:
Dim MyHome As Address
要調用或改變“MyHome”的值時,類似于對對象的屬性的操作:
變量名.域名=“??”
為了簡化書寫重復的部分,可以用關鍵字“With”:
With MyHome
.Street=”阜成路”.ZipCode=”100037”.Phone=”12345678”
End With
VB教程:第三章-VB語言
一、VB與Basic
VB之所以叫做“Visual Basic”就是因為它使用了Basic語言作為代碼,所以它們之間有著千絲萬縷的關系,如果學過Basic的話,看到VB的程序結構會感到很親切。但VB作為新生物,也超越了Basic的限制,有了許多自己的特點:
VB建立了一種新的變量類型――貨幣型變量,通過使用僅帶有二位小數的貨幣變量,就能避免因使用實型變量而帶來的數值積累誤差問題。
VB在調用函數(Function)時,必須在函數名后跟一對括號。
VB對白蘭地使用范圍重新做了規范,在Basic里把隱含變量都當作全局變量,而在VB里對隱含變量都當作局部變量。
VB里的說明語句(Declare),僅支持動態鏈結庫(DLL)的子程序和無變量函數。
使用數組,必須事先用Dim或Redim進行定義。
二、注釋語句
在使用注釋語句之前必須先了解注釋的作用,注釋不僅僅是對程序的解釋,有時它對于程序的調試也非常有用,譬如說可以利用注釋屏蔽一條語句以觀察變化,發現問題和錯誤。以后注釋語句將是我們在編程里最經常用到的語句之一。
在VB里,注釋語句有兩種,一種是用“Rem”關鍵字,這跟DOS里的批處理文件的用法一樣,還有一種是利用單引號“’”,例如:
‘Dim a As String 與
Rem Dim a As String 的作用是一致的。
三、長語句的分行
在比較早的版本中,因為沒有象C等語言用“;”隔開語句與語句,VB的語句是必須寫在一行里的,不過后來版本的VB里如許用分行符“_”把一個長語句分成若干行來存放。
四、條件語句
如果你學過任何一種編程的話,都會知道在程序里控制其流程的有兩種語句,條件與循環,VB自然也不例外,其實不管哪種語言,條件和循環的樣子都差不多,只不過各有各的規矩罷了。
在條件語句里,我們先來學習“If??Then??”語句。
它的一般語法是:
If <條件> Then
<語句> <語句> ???
End If
與C 語言不同,VB的條件語句更符合英語的語法,如果Then后面所跟的語句只有一條,可以寫成: If <條件> Then <語句>
而不用End If。
有時我們還會用到
If <條件> Then
<語句> Else
<語句>
End If
更可以在Else里在嵌套If語句,如:
If <條件> Then
<語句> Else If
<語句> Else
<語句>
End If
所有這些可以用一個表格表示:
條件1
True False
語
句 條件2
True False
語 句 條件3
True False
?
?
?
………………………
條件N
True False
語句N 語句N+1
用了過多的Else后你會感到很不方便,而且程序結構也不清晰,所以大多數的語言還有Select語句幫助解決這個問題。
VB里的Select語句的格式是這樣的:
Select Case <變量名>
Case <情況1>
……
Case <情況2>
……
Case <情況3>
……
……
…… Case Else
……
End Select
例如:
Select Case a%
Case 1
Print “a=1” Case 2
Print “a=2” Case Else
Print “a does not equal to 1 or 2.”
End Select
五、循環語句
循環結構是計算機語言里一種重要的結構,它的應用廣泛,最簡單的例子是累加器的作用,還可以用于窮舉法,更直觀的例子是把某件事重復指定的次數,這樣就不用把要重復的語句輸入多次,而通過循環結構完成,非常方便。
C語言里有一個“for”循環語句,VB里也有“For”關鍵字,作用也差不多,只是VB的“For”語句更容易理解。它的格式是:
For <循環變量>=<初賦值> To <終值> [Step <步長>] ?? ??
Next <循環變量>
在默認情況下,Step被設為“1”,可以省略,Step也可以設為負值,例如:
Dim a=0
For I=1 To 10
a=a+I
Next I
這是一個最簡單的累加器的例子,把1到10累加在一起,然后賦值給“a”這樣的效果和上面是一樣的,只不過是倒著加罷了,請看:
Dim a=0
For I=10 To 1 Step –1
a=a+I
Next I
While語句也是一個很常用的循環語句,它的形式很多。
Do While ?? Loop語句
While ?? Wend 語句
Do …… Loop While
While后面都跟邏輯條件判斷,“Do While ?? Loop語句”和“While ?? Wend 語句”作用相似,都是先判斷While后面的條件是否為“真”,如果為“真”則執行里面的語句,如果為“假”,則退出循環,循環直至條件為“假”終止。“Do ?? Loop While ”與前兩者的區別在于,它不管條件的真假,都會先執行“Do”后面的語句,也就是說,它至少執行語句一次。
與While用法相似的還有Until語句,它是直至條件為真則終止循環,句式把While上述三個語句的While換成Until即可,但是因為容易記混,所以我建議只用While即可。Until <條件>可以相當于While Not <條件>。
For循環和Whlie循環應當根據適當的環境使用,它們有時也可替換。
六、運算操作
數學運算
+:加法運算,也適合于字符串的之間的合并運算。
-:加法運算。
*:乘法運算。
/:除法運算。
:整除運算。
Mod:求余運算。例如:a Mod b表示a被b整除以后的余數。
^:冪運算。A^B表示以A為底的B次方。
關系運算
關系運算也稱比較運算,它表示不等式的真或假,VB共提供六種運算符,分別是=(等于),>(大于),<(小于),>=(大于等于),<=(小于等于)和<>(不等于)。
邏輯運算
邏輯運算是對真或假的運算,我將列表說明:
A B Not A 非
And 與 Or 或 Xor 異或
Eqv 相等
Imp 蘊含
T T F T T F T T
T F F F T T F F
F T T F T T F T
F F T F F F T T
T――True F――False
七、數據與定義
本標題的內容已經在上一章向大家詳述過,在這里就不再重復。
八、函數與過程
函數與過程有許多相似的地方,它們之間最大也是最本質的區別就在于,函數有一個返回值,而過程只是執行一系列動作,所以可以簡單的把函數理解成為一個變量,而VB中的每個事件都是一個過程,比如Command1_Click()就是一個過程。
因為在程序設計中經常會有重復的地方,所以把它做成一個函數或一個過程,在使用時進行調用,可以節省大量的輸入代碼的時間,而且使用函數和過程也便于程序的結構化和修改查看。函數和過程都可以有參數,也可以沒有參數。
關于函數和過程我將在以后的章中配合實例講解,請您繼續留意VB教程。
VB教程:第四章-按鈕
從本章開始我們將正式進入VB的編程世界,但這還僅僅是個開端,要編出功能強大的軟件,還要學很多東西,那就要看以后的VB高級教程了,我也得努力學啊!
按鈕是我們在Windows操作見到最多的控件,它們有著各種各樣的功能:“確認”、“取消”、“下一步”等等,這些都是按鈕的表現,另外還有很多圖形話的按鈕,其實它們并沒什么不同,所有的按鈕都是通過單擊(click)事件實現的,只不過是在外表不同罷了。下面就讓我們建立一個最簡單的按鈕,雙擊工具箱的CommandButton,將在窗體上建立一個形如圖4-1的按鈕,它的缺省名(Name屬性)為Command1,我們可以把它改名為cmdExit,把Caption屬性設為“退出”,然后雙擊,按鈕填寫代碼:
Private Sub cmdExit_Click()
Unload Me
End Sub
按下F5或者工具條上的播放按鈕,運行程序。圖4-2當你按下退出按鈕的時候,就會自動退出程序,原因是當你單擊按鈕時激活了它的Click事件,執行“Unload Me”語句,使得窗體被卸載。
上面舉了一個比較簡單的例子,下面的例子稍微復雜些:
新建窗體,控件布局如圖4-3所示,包括一個List控件,一個Text控件和兩個按鈕(Command1和Command2),(比較簡單的程序我們都采用缺省名),對它們屬性做如下修改:
List1 Caption=“請輸入你的名字”
Text1 Text=“”(空字符串)Button1 Caption=“復原”
Enabled=False
Button2 Caption=“清除”
把使用Button1的Enabled屬性設為False(假),是使程序在初始時,無法單擊Command1。按F5,運行程序,圖4-4,復原按鈕成為灰色,不可選。
當然現在程序還什么也不能做,下面我們在程序中添加代碼:
首先在General里聲明全局變量:
Dim StoreString As String '用來儲存字符串
※注意:為什么用全局變量?
VB里每一個小過程都相當于一個程序,程序里的變量稱為局部變量,是只能在程序內部使用的,而當程序調用結束后,由于從內存中被清除,所以變量儲存的值也就消失了,這里的全局變量是用來在過程中傳遞字符串。
接著填寫以下代碼: Private Sub Command1_Click()
Text1.Text = StoreString Command1.Enabled = False
End Sub
Private Sub Command2_Click()
StoreString = Text1.Text Text1.Text = “" '清除
Command1.Enabled = True
End Sub
運行程序,如圖4-5。按下“清除”,文本框被清除,按下“復原”,文本有被恢復,許多程序中的Undo/Redo就是利用這個原理實現的,現在知道為什么內存越多越好了吧。
我們在把程序修改一下,把Button2刪除,Button1的Enabled屬性改為True,Caption改為“清除”,填寫代碼:
Private Sub Command1_Click()
If Command1.Caption = ”清除“ Then
StoreString = Text1.Text Text1.Text = ”“ '清除
Command1.Caption = ”復原“ Else
Text1.Text = StoreString Command1.Caption = ”清除“
End If
End Sub
同樣可以上面的功能,但是卻少用了一個控件,控件使用少的程序啟動會快些。
下面的例子要更加復雜些,大家一定都用過Windows附件中的計算器,它是一個標準的科學計算器,利用VB我們也可以做到,只是沒有那么復雜,四則運算而已。
先建立一個新的項目文件,里面包含一個Form1的窗體。然后,添加控件,包括一個Text框(Text1),和17個按鈕,這17個按鈕使用的名稱都是Command1,只是Index屬性不同,就好象一個數組,創立一組按鈕的方法是,先在窗體上建立一個按鈕(Command1),然后在Command1上擊鼠標右鍵,選擇復制(Copy),然后在窗體上任意部位擊右鍵,選擇粘貼(Paste),系統會提示是否創建控件組,選擇“是”,重復上面步驟,直至創立17個按鈕為止。各控件屬性如下表:
Text1 BackColor=&H00C0FFFF& Text=“0.”
Command1 Index 0――16
Index 0――9 Caption=“0”-“9” Index 10 Caption=“.”
Index 11 Caption=“=”
Index 12 Caption=“+”
Index 13 Caption=“-”
Index 14 Caption=“×”
Index 15 Caption=“÷”
Index 16 Caption=“清除”
如果想改變一些其他的屬性,比如字體,可以自己定義一下Font屬性,如果相對多個控件的共同屬性進行改變,可以在窗體上按下鼠標,拖動,把多個控件一起選定,然后對它們的共同屬性進行修改。
別看這個東西小,還費了近我兩個小時呢,不覺大嘆手生,里面也有些地方很繞彎子,我盡量解釋清楚。
在編寫程序之前,我們先來回顧一下計算器的使用。
按下數字鍵在液晶屏上會出現數字,這是最基本的功能。
第一次按下運算鍵,再按下數字鍵,將重新輸入第二個數字,再次按下運算鍵,將算出前兩個數的結果,然后按下數字鍵,將又重新輸入新的數字。
輸入數字后,按下“等于鍵”將仍輸出原來的數字,輸入運算符和第二個數字后在按下“等于”,將得到二者的結果。然后又重復第二、三步。
按下“清除”,數據被全部清除。
了解了這些,我們一步一步實現。先實現數據的輸入,請看代碼。與未創立組的控件相比,它的事件里多了Index參數,組里所有的對象都使用同一個事件。先在General里聲明窗體級全局變量: Dim Num1, Num2 As Single Dim StrNum1, StrNum2 As String Dim FirstNum As Boolean '判斷是否是數字開頭
因為Text1里是存放字符串的,所以要把輸入的數據進行運算,必須把字符型變量轉變為實型變量,分別用Num1、Num2和StrNum1、StrNum2進行存放。在Form_Load事件里給變量初賦值:
Num1 = 0 Num2 = 0 StrNum1 = ”“ StrNum2 = ”“ FirstNum = True
因為17個按鈕使用的是同一事件,所以我們用一個Select Case語句區分各個按鈕,雙擊任意按鈕輸入代碼:
Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0 To 9
If FirstNum Then
StrNum1 = Str(Index)’實型轉字符型 FirstNum = False’初賦值為假
Else’非初賦值
StrNum1 = StrNum1 + Str(Index)
End If
Text1.Text = StrNum1’顯示
<還有其他語句,等待插入>
End Select
End Sub
運行程序的話已經可以輸入數據,下面我們來處理小數點。在General里聲明新的變量:
Dim PointFlag As Boolean '判斷是否已有小數點
我們知道小數點只能輸入一次,一個數據中不能有多個小數點存在,所以需要一個布爾變量做判斷。
在Form_Load里進行初賦值:
PointFlag = False
在Command的單擊事件里接著上面輸入新的代碼:
Case 10
If Not PointFlag Then’如果沒有小數點
If FirstNum Then’如果是第一個字符
StrNum1 = ”0.“ FirstNum = False Else
StrNum1 = StrNum1 + ”.“
End If
Else’已有小數點
Exit Sub’則退出單擊事件
End If
PointFlag = True Text1.Text = StrNum1
下面會復雜一些,我們先跳過等號,而來處理四則運算:
先在General里聲明新變量:
Dim Runsign As Integer '儲存運算符號
Dim SignFlag As Boolean '判斷是否已有運算符號
然后在Form_Load中進行初賦值:
Runsign = 0 SignFlag = False
在接下的Command1_Click中繼續輸入代碼:
Case 12 To 15
FirstNum = True’使下一次可以輸入新數據 PointFlag = False '還原標記值
If SignFlag Then’前面已有運算符未運算
Call Run Else
SignFlag = True StrNum2 = StrNum1’把字符串1復制給字符串2 StrNum1 = ”“’字符串1清空
End If
Runsign = IndexNum2
Case 3’乘
equal = Num1 * Num2
Case 4’除
equal = Num1 / Num2
End Select
StrNum2 = Str(equal)StrNum1 = StrNum2 Text1.Text = StrNum2
End Sub
下面是其余的代碼:(在Command1_Click事件里,接著寫)
Case 11
If Not SignFlag Then
Text1.Text = StrNum1 equal = Val(StrNum1)FirstNum = True PointFlag = False Else
Call Run SignFlag = False
End If
Case Else’清除按鈕
Call ClearData
里面又用到了一個ClearData過程,實際上就是Form_Load里的變量初賦值,代碼如下:
Sub ClearData()
Num1 = 0 Num2 = 0 StrNum1 = ”“ StrNum2 = ”“ FirstNum = True PointFlag = False Runsign = 0 SignFlag = False Text1.Text = ”0.“
End Sub
這樣完整的程序就完成了,本章介紹了VB的第一個控件――按鈕,并且舉例,希望你繼續看下一章――菜單。
下面給出完整的程序代碼:
Dim Num1, Num2 As Single
Dim StrNum1, StrNum2 As String
Dim FirstNum As Boolean '判斷是否是數字開頭
Dim PointFlag As Boolean '判斷是否已有小數點
Dim Runsign As Integer '儲存運算符號
Dim SignFlag As Boolean '判斷是否已有運算符號
Sub ClearData()
Num1 = 0
Num2 = 0
StrNum1 = ”“
StrNum2 = ”“
FirstNum = True
PointFlag = False
Runsign = 0 SignFlag = False
Text1.Text = ”0.“
End Sub
Sub Run()
Num1 = Val(StrNum2)
Num2 = Val(StrNum1)
Select Case Runsign
Case 1
equal = Num1 + Num2
Case 2
equal = Num1Command1.Width)/ 2
'重疊三個圖片框
Picture2.Left = Picture1.Left
Picture2.Top = Picture1.Top
Picture3.Left = Picture1.Left
Picture3.Top = Picture1.Top
End Sub
下面我來講一講程序是怎樣運行的,我們將用到Text的Change事件,每當字符串改變一次就對它進行一次檢查,算出已經說的字數,當字數超過10時,下面的紅綠燈會變成黃色,并且在這時隨機抽取一個數,它在一個范圍內出現的可能是10%,如果在這個范圍內就可以免交罰金,如果不在范圍則繼續,當文字超過20的時候,紅綠燈會變成紅色,再一次抽取隨機數字,步驟同上,如果30個字已滿,再進行一次檢查,如果你真的那么不幸就該罰款了。
程序的步驟清楚了,我們在來看看程序的要點。由于中文是雙字節字符,也就是說一個漢字占兩個ASC碼的位置,而VB顯然是為英語國家設計的用Len函數無法返回漢字字節,也就是說一個漢字和和一個ASC字符在Len函數中得到的值是一樣的,這就需要特殊處理。用Asc()函數,在括號內放入一個ASC字符或字符串,它會把第一個ASC碼轉化為0-255的數值,而把一個漢字放入,它的值必然不在0-255,這也就可以作為判定漢字的基礎。我們可以把英文算作半個漢字。
下面我們來看看代碼:
在General 里聲明窗體級變量:
Dim Level As Integer
Private Sub Command1_Click()
Unload Me End Sub
Private Sub Text1_Change()
Dim StrLength As Integer’字符串長度
Dim RandomNum As Single’隨機數
Dim Str1 As String
Dim a As String
Dim i, Temp
StrLength = 0’每次開始時把字符串長度還原為0
a = Text1.Text
For i = 1 To Len(a)’Len(a)代表字符串的長度
Temp = Asc(Mid$(a, i, 1))’挨個取字符
If Temp > 255 Or Temp < 0 Then’不是ASC碼
StrLength = StrLength + 2 Else
StrLength = StrLength + 1
End If
Next i
StrLength = StrLength / 2
Select Case StrLength
Case 0 To 9
Picture1.Visible = True
Picture2.Visible = False Picture3.Visible = False
Label2.Caption = ”慢慢說。你還有“ & Str(30StrLength)& ”個字可以說“
End If
Case 20 To 29
If Level = 2 Then RandomNum = Rnd * 10
If RandomNum <= 10 And RandomNum > 9 Then
Text1.Enabled = False
Label2.Caption = ”很抱歉這是個誤會??“
Command1.Visible = True
Command1.Caption = ”您可以離開了“
End If
Level = 3 Else
Picture1.Visible = False
Picture2.Visible = False
Picture3.Visible = True
Str1 = ”我已經不耐煩了!“
Label2.Caption = Str1 & ”你還有“ & Str(30-StrLength)& ”個字可以說“
End If
Case Else
Text1.Enabled = False
Label2.Caption = ”你已經沒有機會了!“
Command1.Visible = True
Command1.Caption = ”交錢吧,肇事犯!“
End Select
End Sub
中間有幾個函數需要解釋一下:
Mid可以從字符串中取出一部分,返回字符型,格式:
Mid(字符串,從第幾個字符開始,取字符的長度)
Asc可以把字符轉換為ASCII碼,格式:
Asc(字符串)
Rnd,取得大于0但小于1 的數值,可以沒有參數。
怎么樣,十分簡單吧,我們將在下一次繼續討論VB的輸入機制,再見!
VB教程:第六章(2)-輸入(2)
在繼續上面的內容時,我想再回顧和強調幾個在字符串操作中經常函數:
先是幾個已經接觸過的,Mid(),Asc(),Len(),它們的語法分別是:
Mid(字符型,起始字符,長度)
返回子字符串,如果從字符串的第一個字符取起,起始字符為1,依此類推。
Asc(字符型)
返回數值,如果參數不是一個字符,而是字符串(多個字符),將返回參數的第一個字符ASCII值。
Len(字符型)
返回字符串的長度。下面我再為你解釋幾個新的函數:
Left(字符串,長度)
將返回字符型,從字符串的第一個字符向左取字符串,與之相對應的是Right(),它將從字符串的最后一個字符向右取字符串。
Chr(數值型)
該數值范圍從0-255,返回字符型,如Chr(65)可返回字符“A”,這樣可以輸入一些用鍵盤無法輸入的字符。
Str(數值型)
該函數把數值型轉換為字符型,也許你覺得數值“123”和字符串“123”沒什么區別,但在內存中一個ASCII字符是占一個字節,也就是說字符串“123”占3個字節,而當數值“123”是整型時,它占兩個字符,當它是長整型時,占4個字節。與之向對應的是Val(數值型),它把數值型轉換為字符型。
上面的函數都是以后要經常用到的,請將它們熟悉。
上次講到文本框的用處,還有意思嗎?你是否能把上次的程序稍稍變動一下,來計算出輸入的單詞數,提示一下,單詞與單詞之間是用空格分隔開的。
我們繼續下面的內容。
上次說到,輸入不僅僅是向文本框輸入字符,凡是從外界向程序傳遞數據都可以叫做輸入,我們一一說明白。
無線鈕,記得我們曾在第一章中完成過我們的第一個程序――“Hello World!”它就是一種輸入的方法,在設計VB程序時可以通過一組這樣的無線鈕,它們之間互相排斥,也就是說,只能有一個按鈕被選中。它因為很象無線電收音機上的按鈕因而得名無線鈕。如果要在一個窗體內放置多組無線鈕必須用Frame控件把它們區分開來。下面我們在來完成一個例子,順便熟悉一下另外兩個處理字符串的函數――LTrim()和Rtrim(),它們分別用來刪除字符串左邊的空格和右邊的空格,讓我們看看它們是如何工作的。
程序窗體如圖6-8,由于窗體比較簡單,無需修改更多的屬性,一共有三個文本框(Text1到3),分別用來顯示輸入字符,顯示把空格換成星號的字符,和經過處理的字符,還有三個無線鈕(Option1到3),要修改的只有Caption屬性,分別是“刪除左邊的空格”、“刪除右邊的空格”和“刪除兩邊的空格”。因為空格在我們在文本框中無法看到空格,所以我們通過一個稱作AddStar的函數把原有字符串中的空格轉換為星號,使我們能夠看到函數的效果。下面在程序中添加代碼,首先在General中聲明窗體級變量:
Dim LTrimmedword$, RTrimmedword$ '刪除左邊空格和右邊空格后的字符串
Dim LRTrimmedword$ '刪除兩邊空格后的字符串
然后,我們通過一個叫做addstar的函數為字符串加上星號,以前曾說過函數與過程的分別,函數會返回一個函數值,所以addstar也就相當于一個變量,其實這很好理解,就象中學代數中的函數,函數就相當于變量Y,而函數中的參數則相當于自變量X,當然可能有很多自變量X1、X2??請原諒,我并不想在這里上數學課,因為我厭惡那玩意兒,特別是上了大學之后,好在大二以后就再也不會有數學課了,哈哈??
Function addstar(tempword As String)As String
Dim charindex% Dim pasteword$ '加星號后的字符串 For charindex = 1 To Len(tempword)
If Mid(tempword, charindex, 1)= ” “ Then '如果字符為空格
pasteword = pasteword + ”*“
Else: pasteword = pasteword + Mid(tempword, charindex, 1)End If Next addstar = pasteword '返回函數值
End Function
下面的代碼很簡單,并且我為它做了注釋,就不再一一解釋了,我只想簡要的提幾句,Ltrim和Rtrim只有一個參數(字符型),另外下面用到了焦點事件,我們曾在第三章中介紹過,當Text1得到焦點(GotFocus)時,清空所有的文本框,當它失去焦點(LostFocus)時,對字符進行addstar并且在Text2中顯示。
Private Sub Text1_GotFocus()'但焦點于Text1
'清除所有文本框中的字符 Text1.Text = ”“ Text2.Text = ”“ Text3.Text = ”“
End Sub
Private Sub Text1_LostFocus()
Dim Origionword As String Origionword = Text1.Text Text2.Text = addstar(Origionword)LTrimmedword = addstar(LTrim(Origionword))RTrimmedword = addstar(RTrim(Origionword))LRTrimmedword = LTrim(RTrim(Origionword))
End Sub
Private Sub Option1_Click()
Text3.Text = LTrimmedword '顯示刪除左空格后的字符串
End Sub
Private Sub Option2_Click()
Text3.Text = RTrimmedword '顯示刪除右空格后的字符串
End Sub
Private Sub Option3_Click()
Text3.Text = LRTrimmedword '顯示刪除兩邊空格后的字符串
End Sub
最后結果如圖6-9。
與無線鈕相對的是檢查框,在同一范圍內一組無線鈕只能有一個被選中,而檢查框則可以有多個選擇,就象在添表時,性別那項只能有一個選擇,而在描述你以前的職業時可以有學生、程序員、家庭教師或者什么,總之有很多選擇,下面我們舉一個簡單的例子加以說明。
假設編寫了一個共享軟件,在讓用戶注冊的時候你想知道你的用戶使用的計算機情況,你就需要一個調查表,為了使這個調查表不止枯燥,可以在這個程序中加入一些圖形。新建一個項目文件,窗體布局如圖6-10。
程序很簡單,一共有兩個框架(Frame1和Frame2),它們的Caption分別為“選擇你的計算機擁有的配置”和“這是你的計算機系統”,在Frame1有四個檢查框(Check1到Check4),Caption分別為“網絡系統”、“鼠標”、“密碼保護”和“電子郵件”,另把Check4的Enabled屬性改為False,使其無效;在Frame2中放置四個圖片框(Picture1到Picture4)與四個檢查框向對應,請把所有圖片框的BorderStyle屬性設為0(無邊框),它們的Picture屬性請根據上圖,在存放圖標的目錄中找到相對的圖標。下面是程序代碼:
Private Sub Check1_Click()
If Check1.Value Then
Check4.Enabled =-1 Picture1.Visible =-1
Else: Check4.Enabled = 0 Picture1.Visible = 0 Check4.Value = 0 Picture4.Visible = 0
End If
End Sub
Private Sub Check2_Click()
If Check2.Value Then
Picture2.Visible =-1
Else: Picture2.Visible = 0
End If
End Sub
Private Sub Check3_Click()
If Check3.Value Then
Picture3.Visible =-1
Else: Picture3.Visible = 0
End If
End Sub
Private Sub Check4_Click()
If Check4.Value Then
Picture4.Visible =-1
Else: Picture4.Visible = 0
End If
End Sub
這個程序比我們見過的任何程序都簡單,就不再做說明。
(第六章 未完)
VB教程:第六章(3)-輸入(3)
首先,我想先對第六章的拖拖拉拉表示歉意,一是因為它實在太長了,二也是因為我自己太懶了,今天寫幾個字,明天添兩筆,以致于寫了三次才將它真正完成,還請大家原諒。
好,廢話少說,讓我們趕快切入正題。上次我們討論了無線鈕和檢查框的使用方法,相信你已經熟悉,因為它們實在太簡單了,現在讓我們繼續“輸入”的最后幾個部分。
滾動條(ScrollBar)在視窗中也是一個不可缺少的部分,由于面積所限,我們不得把屏幕上的內容滾來滾去,以顯示大量的內容,這就是我們經常要用到的滾動條。但滾動條除去滾動窗口,還有一個很重要的作用――輸入,想想你經常用到的一些家用電器上調節聲音或別的什么東西的滑塊,你把它滑向大的一方音量就會增大,而你把它滑向小的一方音量就會減小,或者一個控制左右兩個音箱的均衡器,當滑塊在正中央的時候,兩個音箱的音量是相同的,當你把滑塊偏向一方時,音箱的音量有了大小之分,在Windows操作中,我們也經常要用到類似的效果。
在VB中提供了兩個常規的滾動條控件――Vscroll和Hscroll,分別代表垂直的和水平的滾動條,它們只不過是方向不同而已,而它們的屬性,以及會發生的事件都是相同的。,滾動條有幾個特殊的屬性:
Value屬性,當滑塊挪動后停在某一位置時,就改變了滾動條的Value屬性。
Max和Min屬性,用來設置滾動條的最大值和最小值,譬如把Max設為100,把Min設為0時,滾動條的Value就在0到100之間移動,當Max和Min倒置時,滾動條的方向也會相反,也就是說,當Max SmallChange和LargeChange屬性,當鼠標在滾動條兩頭的箭頭上單擊時,就會把滾動條向相應的方向挪動一點,這時用到的就是SmallChange屬性,當你把它設為1時,每點一下,滾動條的Value就改變1;當鼠標在滾動條上點擊時,用到的就是LargeChange,當設為10時,每點擊一下滾動條,Value就改變10。 下面我們看一個實例。 大家都知道,物體之所以會有顏色是因為物體表面的材料吸收了太陽光中的部分色光,而還有部分色光沒被吸收而被反射回來,它就成了我們看到的顏色,黑色就是物體吸收了所有的太陽光的所有色光,沒有反射顏色,所以在我們看來是黑的,而當物體反射了所有的色光,我們看到的就是白色。在計算機中,顏色的表示就是象我們剛才描述的樣子,它把顏色分為紅(R)、綠(G)和藍(B)。眾所周知,計算機的機器語言是使用二進制表示的,為了方便查閱我們看到的往往是十六進制代碼,一個字節包括兩位十六進制數字,從0-255(十六進制表示0-FF),而一個字節是由八位二進制數值表示(2^8,2的8次方),計算機中用分別用一個字節,也就是八位表示一種顏色,和在一起也就是三個字節(24位)表示所有的顏色,這就是我們平時常說的24位真彩,它一共可以組成256×256×256(2^24)種顏色,對于我們的肉眼,是根本分辨不出來相鄰兩個不同的顏色的,比如用FFFFFF表示白色,就好象我們剛才說的物體反射了所有的色光,相反的可以用000000表示黑色,它吸收了所有的色光,還可以用FF0000表示紅色,在HTML語言中就是這樣表示顏色的。 小知識:現在你可以根據你的顯卡的顯存來計算一下顯卡在24位真彩下可以以多大的分辨率顯示,計算是這樣的,用顯存的字節數÷3(24位色)=顯示器寬的象素數×顯示器高的象素數,寬的象素數:高的象素數=4:3,比如4兆顯存,就應該是4×1024×1024÷3=1365×1024。 在下面的小程序中,我們通過三個滾動條分別代表R、G、B,滾動滾動條,將在右邊的圖片框中顯示相應的顏色,并且在下面的文本框中顯示顏色的十六進制數值。 現在,新建一個項目文件,在Form1中如圖6-12布局控件,各控件屬性如下表: HsrollBar Name Hscroll1 Index 0、1、2 (共同屬性) Max 255 Min 0 LargeChange 10 SmallChange 1 Label Name Label1 Index 0、1、2 Index 0 Caption “紅:” Index 1 Caption “綠:” Index 2 Caption “藍:” Label Name Label2 Caption “顏色值” TextBox Name Text1 Text “” PictureBox Name Picuture1 為了把十進制數值換成十六進制數值,要使用一個叫做Hex()的函數,它把十進制數值轉化為十六進制的字符,但對于只有一位的十六進制字符,這個函數并不在高位補零,為了視覺上的正確,我設計了一個小函數幫助它給一位的十六進制字符補零.程序代碼很簡單,見下: Dim RedStr, GreenStr, BlueStr As String’RGB的字符 Dim RedNum, GreenNum, BlueNum As Integer’RGB的數值 Function GetColorValue()As String ‘獲得輸入值 RedNum = HScroll1(0).Value GreenNum = HScroll1(1).Value BlueNum = HScroll1(2).Value RedStr = Hex(RedNum)If Len(RedStr)< 2 Then RedStr = ”0“ + RedStr’補零 GreenStr = Hex(GreenNum)If Len(GreenStr)< 2 Then GreenStr = ”0“ + GreenStr BlueStr = Hex(BlueNum)If Len(BlueStr)< 2 Then BlueStr = ”0" + BlueStr GetColorValue = RedStr + GreenStr + BlueStr’合并 End Function Private Sub Form_Load() ‘初始化程序 Text1.Text = GetColorValue Picture1.BackColor = RGB(RedNum, GreenNum, BlueNum)'RGB函數返回顏色值 End Sub Private Sub HScroll1_Change(Index As Integer) ‘當滾動條被改變時 Text1.Text = GetColorValue Picture1.BackColor = RGB(RedNum, GreenNum, BlueNum) End Sub 運行如圖6-13。 列表框(ListBox)和復合列表框(ComboBox)也是我們經常見到的視窗元素,我們從它所列示的條目中選出所需的,兩種列表框只是在外觀上略有不同,但從本質和操作方法來說它們是很相象的,它們也有一些特殊的屬性: List屬性,你可以利于該屬性象列表框或復合列表框中添加條目,但也可以在程序設計中通過AddItem方法添加。 創新是指人們為了發展的需要,運用已知的信息,不斷突破常規,發現或產生某種新穎、獨特的有社會價值或個人價值的新事物、新思想的活動。創新的本質是突破,即突破舊的思維定勢,舊的常規戒律。創新是一個民族進步的靈魂,是一個國家興旺發達的不竭動力,也是一個政黨永葆生機的源泉。沒有創新就沒有生命力。為了不斷提高隊伍整體素質, 增強隊伍嚴格執法的能力,山東煤監局黨組在《關于建設“七型”隊伍的實施意見》中提出了建設創新型隊伍的要求。目標是進一步樹立創新超越思想觀念,建立健全創新機制,激發創新思維、創新潛能、創新活力,讓干部職工始終保持與時俱進、奮發有為、銳意進取、勇于創新的精神狀態,推進機關、安全監察、事業單位工作創新,促進創新成果在實際工作中有效應用。 黨組的要求高瞻遠矚,高屋建瓴,具有重大的現實意義和深遠的歷史意義。 黨組是創新的楷模。王端武局長在我們的期盼中來到山東煤監局以后,新黨組帶領全局上下深入貫徹落實科學發展觀,創造性地開展工作,全局各項事業穩步推進和同步發展。黨組提出了把學習當成一種自覺行動、一種精神追求、一種工作責任的理念,要求我們向書本學、向實踐學、向身邊的同志們學,不斷提高自身領導水平、業務水平和履職能力。黨組本著工作需要和以人為本相結合的原則,對14名科級及以下干部進行了異地交流,提高了工作積極性。在黨組的領導下,監察隊伍建設取得新進展,選人用人機制進步一健全完善,選拔干部更加公開、公正、透明,任命的干部都是德才兼備,踏實工作的同志,大大激發了全體監察員干好本職工作的熱情。黨組帶領我們創新監察機制,保持嚴格執法的高壓態勢,嚴肅查處違法違規行為,促進了煤礦安全形勢持續穩定好轉…… 黨組不但給我們樹立了創新的榜樣,而且指明了建設創新型隊伍的方向和途徑。黨組的教導像燈塔一樣照亮了煤礦監察事業的航程。在《關于建設“七型”隊伍的實施意見》精神的鼓舞下,我們的思想觀念有了很大改變,在監察方法上進行了許多積極的有益的探索。 在思想觀念上,我們擯棄了滿足現狀、做一天和尚撞一天鐘的舊觀念,樹立了學習永無止境的新觀念;擯棄了提拔靠關系、靠送禮的舊觀念,樹立了晉升靠老實做人、踏實做事的新觀念;擯棄了盲目樂觀、較大事故離自己很遠的舊觀念,樹立了煤礦安全是一項長期而艱巨的工作,稍一松懈就可能出大事故的新觀念;擯棄了建煤礦就是為了追求產量和效益,超強度生產是正常現象的舊觀念,樹立了超強度生產是導致現場管理薄弱,發生重大事故主要原因的新觀念;擯棄了干煤礦哪有不違法違章的舊觀念,樹立了煤礦必須遵紀守法、按章作業,安全是最大效益的新觀念;擯棄了執法睜一只眼、閉一只眼,當老好人的舊觀念,樹立了嚴格執法是對煤礦安全負責、對煤礦職工生命負責的新觀念…… 在監察方法上,我們注意創新檢查方式方法。多年來,煤礦企業已習慣于監察機構的監察方式,對經常檢查的地點提前停產做準備工作,這樣在檢查中,我們就很難看到煤礦安全工作的實際狀況,一些隱患和違法生產行為也就難以發現,不利于煤礦的安全生產。為解決這一問題,我們調整檢查思路,創新檢查方式方法,及時查處大批隱患。一是在現場監察時采取“二次檢查法”、“現場回頭看”等檢查方法,查出了很多違章作業、違章指揮的問題;二是檢查工作變“由點到面”為“由面到點”,即從系統入手,查找系統存在的隱患;三是查死角、查薄弱環節。通過創新檢查方式方法,查出了很多問題,有的問題還比較嚴重。對這些違法行為,該停的停,該罰的罰。通過創新監察方式方法,維護了國家利益,保護了群眾的生命安全,同時也帶動了煤礦日常安全檢查工作思路的改變,推動了煤礦安全生產和日常安全檢查工作。 我們堅持預防為主,建立防范機制,關注苗頭性問題,防患于未然,工作重心從事后查處向事前防范轉移。某礦井口房電線短路發生火災后,我們立即召開轄區煤礦座談會,對這起事故進行通報,并要求所有煤礦對供電線路、變壓器、用電設備等進行全面檢查,舉一反三,避免發生類似事故。我們還介紹礦井互相學習,共同提高。這樣執法工作就達到了事半功倍的效果。 每次監察在通報檢查情況前,我們都提前和煤礦企業主要負責人溝通,讓他們對行政處罰心服口服,了解我們執法的良苦用心,提高他們整改問題的自覺性和主動性,做到安全監察與促進安全管理相結合,教育與懲處相結合,最大限度的擴大執法監察的影響,提高執法監察的效果。 天高任鳥飛,海闊憑魚躍,我們決心在XX煤監局黨組的領導下,不斷創新思想觀念,不斷創新工作方法,爭取為煤礦安全監察事業做出新的更大的貢獻。第五篇:黨組創新學習札記