VB6應該知道的知識

VB6應該知道的知識
━━━━━━━━━━━━━━━━━━━━━━━━━━

1、VB大小寫問題

利用UCase函數將字符串轉換爲大寫,用LCase函數將字符串轉換爲小寫
如:Private Sub Command1_Click()
    
Text1.Text = UCase(Text1)
  
End Sub

2、如何判斷字符串是否爲空Null

不可以使用“If 變量 = Null Then”語句,因爲Null在任何表達式中返回結果都爲Null,要用IsNull函數進行判斷。例如:

Private Sub Command1_Click()
  
Dim i
  i = Null
  If IsNull
(i) = True Then
     MsgBox 
“爲空NULL”
  Else
     MsgBox 
“不爲空”
  End If
End Sub


3、End語句的使用技巧

End語句會重置所有模塊級別變量和所有靜態局部變量。End語句不調用Unload、QueryUnload、Terminate事件或任何其他Visual Bisic 6.0代碼,只是生硬的終止代碼執行,類模塊創建的對象被破壞,由Open語句打開的文件被關閉,並且釋放程序所佔用的內存。其他程序的對象引用無效。
End語句提供了一種強迫終止程序的方法。Visual Basic 6.0 程序正常結束時,應該卸載所有窗體。只要沒有其他程序引用該程序公共類模塊創建的對象,就並無代碼執行,程序將立即關閉。如本例,執行End語句後打開的所有窗口將全部被關閉。

Private Sub Command1_Click()
    
End   ’關閉所有窗口
End Sub

Private Sub 
Form_Load()
    
Command1.Caption = ”關閉”
Form2.Show
End Sub

4、VB中#1是什麼意思

Open myfile1 For Input As #1
Open myfile2 For Output As #2
具體解釋一下
解釋:第一行是打開myfile1文件並且給它編號爲#1,
第二行是打開myfile2文件並且給它編號爲#2,
以後在調用這2個文件時直接調用其編號即可,比如在關閉myfile2文件時可以這樣:
Close #2

5、請問vb中的 !id Text1.Text 中的“!”歎號什麼意思

完整的應該是:
表!字段名 = xxx 或 記錄集!字段名 = xxx
歎號表示引用某個表或記錄集下的某個字段(這裏是字段ID)

6、數組學習

A、靜態數組用Dim語句來聲明:Public|Private|Dim 數組名(下標)[As 數據類型]
Public: 用於聲明可在工程中所有模塊的任何過程中使用的數組;
Private:用於聲明只能在包含該聲明的模塊中使用的數組;
Dim:用於模塊或過程級別的數組
如:Dim a(3As String    '聲明String型數組a,包含4個數組元素即a(0),a(1),a(2),a(3)
Dim b(6)               '聲明Variant型數組b,包含7個數組元素即b(0)~b(6)
Dim c(To 7As Integer  '聲明Integer型數組c,包含6個數組元素即c(2)~c(7)
B、動態數組使用ReDim(在過程級別中使用的語句)聲明:
ReDim [Preserve] 數組名(下標) [As 數據類型]
Preserve:可選的關鍵字,當改變原有數組最末維的大小時,使用此關鍵字可以保持數組中原來的數據。
如 :ReDim a(10) As Long
動態數組還可以用Dim語句聲明,只要將下標定義爲空,並在需要改變這個數組大小時,使用ReDim語句重新聲明這個數組的下標。如: Dim a() - - - - - - 然後用ReDim Preserve a(10)
C、二維數組的聲明
ReDim a(3,2As Long               ‘聲明動態二維數組
Dim b(3,4As String               ‘聲明靜態二維數組
Dim c(5,9)                         ‘聲明默認Variant數據類型靜態二維數組
Dim d(To 9,1 To 9)               ‘聲明數組下標從1到9的二維數組

7、VB中的常量

常量是一個在程序運行時不會被改變的數值或字符串。通過聲明和使用常量的標識符,代替一個在程序執行時不會被改變的值,在程序維護時只要修改這個常量的值,即可改變程序中所有以這個常量命名的值,從而使程序的維護變得簡單。
以下是局部常量的聲明:
Const Tod As Date = #8 / 20 / 2008#       '日期型常量
Const Bol As Boolean = True
Const 
Inte As Integer = 100
Const As Integer = 100,B As String = "101"
可以通過使用類型聲明符代替As關鍵字聲明常量
Const Inte% = 100
Const Dou# = 32.574887
Const A% = 100 + 12

8、變量聲明方式
   通過語句定義的聲明方式稱爲顯式聲明,也可以不聲明而直接使用,這種方式稱爲隱式聲明。如果程序中出現了變量名拼寫錯誤,那麼程序會將其認爲是一個新的變量,從而導致應用程序出現嚴重錯誤。因而在使用變量前最好還是聲明比變量。如果希望不允許程序使用未聲明的變量,可以使用Option Explicit語句來強制聲明變量,Option Explicit是在模塊級中使用的語句。

9、局部變量

   局部變量通過Dim或者Static語句聲明變量,通過Dim語句聲明的變量在每次調用該過程時,程序將重新爲這個變量賦一個初始值,其值在過程結束後被釋放;而用Static聲明的變量在每次調用該過程時,不會被程序重新賦一個初始值,其值在過程結束後將被保留,下次再調用該過程時,變量的初始值是上次調用結束時被保留的值。使用Static語句聲明的變量稱爲靜態變量。
   使用Static語句聲明的靜態變量,可以計算用戶單擊按鈕的次數,然而Dim語句定義的變量在每次單擊按鈕時,其值將仍爲初始化默認值。

10、Like運算符

       Like運算符比較兩個字符串是否匹配,如果匹配則返回True,否則返回False,但當兩個字符串中有一個是Null時,則返回Null。
       語法:result = String Like pattern
       例如,Like運算表達式在pattern參數中參加入通配符進行運算
       Dim Bo As Boolean
       
‘?可以代替任何一個單一字符, * 可以代替任何個數的字符
       Bo = ”BAT4156Hdrg” Like “B?T * ”  ‘返回True
       Bo = ”CAT4156Hdrg” Like “B?T * ”  ‘返回False
       ‘#可以代替0~9任何數字
       Bo = ”a8a” Like “a#a”             ‘返回True
       ‘[A - Z]的字符代替原字符
       Bo = ”D” Like “[A - Z]”            ‘返回True
       ‘不在[!A - Z]的字符代替原字符
       Bo = ”D” Like “[!A - Z]”            ‘返回False
       Bo = ”aO54b” Like “a[L - P]##[!c - e]”  ‘返回True
Pattern中可以參與運算的通配符
通配符    說明
?    任何單一字符
*    任何個數的字符(包括空子符)
#    任何一個數字(0 - 9)
[]    []中的任何單一字符
[!]    不在[!]中的任何單一字符

11、程序編寫規範

●單行分成多行語句,用續行符號(“_”)來將一條語句分成多行,如:
Private Sub Command1_Click()
       
Label1.Caption = ”明日科技有限公司是一家訴訟咖啡色看到返回山三方可撒復” & _
       “三代粉紅色地腳螺絲定界符濾色鏡福連鎖店節流閥司機帶來極大三六九等” & _
       “sdfsdfsdfsdfsdfsdfsddsf。”
End Sub

說明:”_”符號是用來連接代碼的,,所以在連接字符串的時候需要在”_”符號前加入字符串連接符” &

●     一行多條語句
一行多條語句通過使用”:”將一行中的多條語句隔開,從而將一些短小而有聯繫的語句寫在同一行,如:Dim a As Long:a = 2205
●添加多行代碼註釋塊:選中要註釋的代碼 - - - - - - 〉單擊“編輯”工具欄中的“設置註釋塊”工具欄按鈕,單擊“解除註釋塊”按鈕清除代碼前的“'”.

●If…Then和要執行的語句寫在同一行,就可以省掉End If 語句

12、IIF語句

    IIF( < 表達式 > < 值或表達式1 > , < 值或表達式2 > ),如果表達式爲True,則返回值或表達式1,否則返回值或表達式2。
    如:Print IIF(15 > 16,15,16‘輸出結果爲16

13、Is,To等關鍵字在Select Case語句中的使用

    Is ,To語句用在Case之後,用來限定值的範圍,Is關鍵字可以與關係運算符連用,表示取值的一個條件;To關鍵字指定取值的範圍,如A~Z之間可以寫成A To Z,如下:
Private Sub Command1_Click()
    
If IsNumeric(Text1.textThen
        Select Case CLng
(Text1.Text)
            
Case Is = 0
                MsgBox “等於0”,vbOKOnly,”結果”
            Case Is < 0
                MsgBox “小於0”,vbOKOnly,”結果”
            Case Is > 0
                MsgBox “大於0”,vbOKOnly,”結果”
        End Select
    End If
End Sub

Private Sub 
Command1_Click()
  
Select Case Text1.Text
        Case To 9
          MsgBox “輸入的是數字”,vbOKOnly,”提示”
        Case “a” To “z”
          MsgBox “輸入的是小寫字母”,vbOKOnly,”提示”
        Case “A” To “Z”
          MsgBox “輸入的是大寫字母”,vbOKOnly,”提示”
  End Select
End Sub


14、如何讓vb衆多窗體中的一個成爲主窗體?

答:如何讓vb中很多個窗體中的一個作爲程序運行時第一個跳出來的窗體,一般工程默認的是第一個創建的窗體,但如果要修改可以按照如下方法:project菜單 - - - properties - - - - general選項卡中的“Startup Object”在其中選擇一個要作爲主窗體的窗體,然後點擊“ok”即可。


15、vb點擊“X”按鈕關閉窗體響應的函數是?

利用Unload語句或者窗體控制菜單中的CLose命令關閉窗體時,可以出發Unload事件,在窗體被卸載時,可以使用Unload事件過程來確認窗體是否應被卸載或者用來指定想要發生的操作,語法:
Private Sub object_Unload(Cancel As Integer)
其中Cancel是一個整數,用來確定窗體是否從屏幕中刪除。如果Cancel爲0,則窗體被刪除,如果Cancel爲任何一個非零的值可防止窗體被刪除。如下:

Private Sub Form_Unload(Cancel As Integer)
    
Dim c
    c = MsgBox("確認要關閉窗體嗎",33,"提示信息")
     
If c = vbOK Then
         End
     Else
         
Cancel = 1
     End If
End Sub

QueryUnload(Cancel As Integer, UnloadMode As Integer)事件在一個窗體關閉之前發生,並且窗體的QueryUnload事件先於該窗體的Unload事件發生。因此可以模仿上邊 Form_Unload的程序,在窗體點擊了關閉按鈕時跳出詢問提示框,問是否要關閉窗體,是則退出窗體,否則把Cancel設爲一個非零值。


16、vb模態對話框和非模態對話框

如果是模態對話框,則必須處理了這個對話框其他對話框纔可以進行操作,非模態對話框不需要處理就可以其他對話框,比如:
Log.Show 1 
'Log爲登陸窗體,show參數爲1時,即顯示模態對話框,如果不登陸則無法對後邊的窗體進行操作
Log.Show    '默認參數爲0 ,創建非模態對話框,不需要登陸都可以對後邊的窗體進行操作


17、如何讓vb窗體上的最大化最小化按鈕不可用,關閉按鈕不可見?

如果只讓最大化或最小化按鈕不可用只要讓窗體屬性中的MaxButton = False或MinButton = False,如果兩個都設置爲False,則這兩個按鈕不可見,如果將窗體屬性中的ControlBox設置爲False,怎最大化、最小化和關閉按鈕都不可見。


18、在Print方法中使用符號“;”可以使接下來輸出的內容不換行

例如如下輸出三角形 * 的例子:
Option Explicit
Private Sub 
Command1_Click()
    
Dim As Long, As Long
    
Form1.Cls
    While <= 9
        a 1
        For To 23 a
            Print " ";
        Next b
        For To 1
            Print "*";
        Next b
        Print
    Wend
End Sub


19、數組的刪除操作

如下程序,刪除數組中a(2)的值,後邊的數據一次往前移
Dim a() As Long
Private Sub Form_Load()
    
ReDim a(To 4As Long
    
a(1) = 1:a(2) = 2:a(3) = 3:a(4) = 4
    Dim As Long
    
For i = To 3
        a(i) = a(1 + 1)
    
Next i
    ReDim Preserve a(To 3)
    
For i = To 3
        Debug.Print "a(CStr(i) & ")=CStr(a(i)),
    
Next i
End Sub

20、vb中的Button如何加載圖片?
一、在屬性中加載圖片:
DisabledPicture   該控件無效時顯示在控件中的圖片
DownPicture      控件被單擊並處於按下狀態時顯示的圖片
Picture              控件正常狀態下顯示的圖片


       注意:屬性中設置圖片時,控件的Style屬性要設置爲1 - Graphical,否則圖片不會顯示出來,當加載圖片和改變按鈕顏色時,必須將Style屬性設置爲1.

二、代碼實現控件加載圖片,Form_Load中寫Command1.Picture = LoadPicture(App.Path "1.jpg")

21、Vb參數傳遞方式判別與解題應用

*  按值傳遞與按地址傳遞的內涵:按值傳遞參數實質上是將實參的值複製一份給形參,因此形參獲得的是實參的副本,當過程執行中對形參進行改變,並不會影響實參本事;按地址傳遞參數,實質上是將實參變量的地址傳遞給形參,因此形參與實參指向同一內存單元,當過程執行中形參發生改變時,對應實參也將跟着改變。

*  不同傳遞方式對參數類型的要求:若參數按地址傳遞,則VB要求實參的參數的數據類型與形參的數據類型完全一致;若參數值傳遞,則實參數據類型不要求與形參完全一致,但必須能夠由VB默認轉化。

*  例題講解

題一:在應用程序中用”Private Function Fun(As Integer,Y  As Single)”定義了函數Fun。調用函數Fun的過程中的變量I,J均定義爲Integer型,能夠正確引用函數Fun的是()

A Fun(I,J)  B Call Fun(I,3.65)  C  Fun(3.14,231)   D  Fun(“125”,“52.3”)

答案:B C D

講解:
    由於實參I與形參X匹配,由於形參X不是數組,並無ByVal修飾,而實參I爲變量,不是值或表達式,因此該參數將按照地址傳遞;同理可以推斷實參 J與形參Y也將按照地址傳遞,根據VB要求,按照地址傳遞的實參和形參數據類型必須完全一致,而根據題意,因爲J爲Integer,Y爲Single,因此A不正確;對於B Call Fun(I,3.65),I與X按照地址傳遞;而實參3.65爲值,與形參Y匹配時,將按值傳遞,因此B正確;對於C Fun(3.14,231)雖然實參3.14對行的形參X爲Integer,實參231對應的形參爲Single,但由於他們都是按照值傳遞,因此可以將 3.14轉化爲3,而231可以直接賦值給Y,因此C正確;對於D Fun(“125”,“52.3”),由於實參“125”和“52.3”均爲字符串值,因此其與對應形參XY按照值傳遞,而數字字符串是可以轉化爲數值類型的,因此D正確。

對於該題,由於要求是“能正確引用函數Fun的是”因此CD雖帶括號,並且無Call引導,但卻可以通過諸如:Print Fun(3.14,231)加以引用,若改爲“能正確調用函數Fun的語句是”則此時CD不對,只能選擇B

題二:調用由語句Private Sub Convent(Y As Integer)定義的Sub過程時,以下不是按值傳遞的語句是(D)

A. Call Convent((X)) B. Call Convent(X * 1)  C. Convent(X)  D. Convent X

分析:對於AB選項,實參分別爲(X)和X * 1,均爲表達式,因此AB選項中的實參是按照值傳遞的,對於D選項,實參X未用括號引導,此時不可加Call,因此語句正確,同時,實參X與形參Y必須按照地址傳遞。因此答案爲D。

現在考慮C選項語句Convent(X)帶括號,但卻無Call引導,因此直覺上似乎不能正確執行,但若我們在VB代碼編輯器中輸入該句,回車後,該語句自動調整爲:Convent (X),注意此時Convent和(X)之間有一個空格,因此該語句的括號是用於X,而不是用於Convent。所以儘管無Call引導但其卻能夠執行,此時實參爲(X),因此參數將按照值傳遞。所以對於Call Convent(X)和Convent (X),雖然都能執行,並非由於Convent (X)前可以省略Call,而在於他們的實參分別是X和(X),其參數傳遞方式自然就不同。

22、VB操作Access數據庫中的問題

我在VB中執行strSQL "Select * From User" 語句,結果總說From子句錯誤,明明數據庫中的表名就是User,他卻說不對,換成數據庫中別的表名又對了,看來是表名的問題,問過高手才知道“User”是Access中的關鍵字,所以不對,如果把那個SQL語句換成strSQL "Select * From [User]"就可以了,關鍵字加上方括號就不當關鍵字了,這就對了,歐耶!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章