分類 |
標題 |
大意 |
作者 |
日期 |
| 使用說明 | VB5 初級生範例使用說明 | 老怪 | 1998/7/19 | |
| 元件用法 | ComboBox 的使用技巧 | 老怪 | 1998/5/26 | |
| 元件用法 | ActiveX 功能表編輯器的使用 | 老怪 | 1998/6/4 | |
| 元件用法 | CommonDialog 的 Cancel 通知 | 以 Err.Number 取代 Event | 老怪 | 1998/7/12 |
| 物件使用 | TextBox 的複製及貼上 | ClipBoard 的使用 | 老怪 | 1998/5/30 |
| 物件使用 | 取得某電腦的所有字型 | Screen 和 Printer的使用 | 老怪 | 1998/6/5 |
| 集合物件 | Form.Controls 的使用 | 老怪 | 1998/5/28 | |
| 中文處理 | 如何判別一個字元為中文字 | 老怪 | 1998/5/28 | |
| 中文處理 | TextBox 的中英輸入切換功能 | IMEMode 屬性的利用 | 老怪 | 1998/6/7 |
| 字串處理 | VB Script SPLIT() 函數模擬 | Vb 字串函數的縱合運用 | 老怪 | 1998/6/5 |
| 字串處理 | 文字檔的字串替換 | 老怪 | 1998/6/9 | |
| 字串處理 | 剔除字串中的指定字元 | Mid() 函數的運用 | 老怪 | 1998/6/16 |
| 字串處理 | 如何做出跑馬燈效果的 TextBox | 老怪 | 1998/6/14 | |
| 變數處理 | 變數記憶體空間的釋放 | 老怪 | 1998/5/29 | |
| 副程式 | 跨 Form 的 Procedure 呼叫 | 老怪 | 1998/7/2 | |
| 數值處理 | 不同進位數的轉換 | Hex() & Oct() | 老怪 | 1998/5/31 |
| 日期處理 | 求得每月的最後一天是幾號 | DateSerial() 的運用 | Rose | 1998/6/10 |
| 其他雜項 | 外部檔案的執行及終止 | Shell 和 AppActivate使用 | 老怪 | 1998/6/16 |
| 元件外觀 | Drag 時顯示 Picture | Drag 和 DragMode | 老怪 | 1998/6/18 |
| 元件外觀 | Drag 和 Move 的比較 | 由使用者操控元件移動 | 老怪 | 1998/6/18 |
| 圖形處理 | VB 5.0 可以使用的圖檔格式 | 老怪 | 1998/7/20 | |
| 圖形處理 | 如何自製 MetaFile | VB 與 Office 97 | 老怪 | 1998/7/20 |
iroi 撰寫於文章
請問各位,vb的combo box怎用的
老怪答:
在做 Combobox的判斷時,有幾個要注意配合使用的屬性是
取出 ComboBox �堛滬�
'------取出以滑鼠點選值
'-----取出新加入的值
'---- 將組合式文字框加入 Combo1
Eagle Tsui 撰寫於文章
請問用vb5如何可以在全不知情下知道Form1有邊乜Control呀!
老怪答:
計算 form 上有幾個 Control
Debug.Print me.controls.count
列出 form 上所有 control 的名稱
Dim VarCont As Control
For Each VarCont In Me.Controls
Debug.Print VarCont.Name
Next
html 撰寫於文章
老怪答:
Strlength=LenB(StrConv("YourChar", vbFromUnicode))
Strlength=1 英文
Strlength=2 中文
寄件者: Annie Chiu
何清除記憶體變數?
老怪答:
陣列變數的釋放:
使用 Erase Array 清除 Array 陣列變數的值,但原維度不變,只是將陣列內含值清除而已,適用以 Dim Array(固定維度數目) As SomeVarType 的靜態陣列宣告。
Redim Array(維度數目) ,清除陣列變數的值,並改變維度數目,適用以 Dim Array() As SomeVarType 的動態陣列宣告。
宣告區�堥p有變數的生命期:
基本上一個變數如為 dim 或 private 宣告,宣告它的 procedure 結束後,變數自動會被釋放。但宣告在 Form 的一般區�堛漕p有變數,是被記載在 form 的 initialize 事件�堙A而 initialize 只會在 form 第一次被 load 時產生一次,當你再次 Load Form 後,就不會再有 initialize 了,這也意味著在 initialize �堳襲i的東西,會持續到整個程式結束才會被清掉。
物件變數的記憶體空間釋放:
Dim ObjectArray As SomeObjectType 的宣告雖然賦與 ObjectArray 物件變數的型態,但在 Set ObjectArray=OtherObject 之前,是不具有初值的,一旦執行 Set ObjectArray=OtherObject 敘述後,ObjectArray 即被賦與各項物件值,要還原 ObjectArray 原始狀態,須 Set ObjectArry = Nothing。
動態控制元件的新增與釋放:
所有的控制元件及 Form 物件,我們都可以把他視為 Public 變數,既經產生,在任何 Procedure 都能呼叫的到。
風 撰寫於文章
請問像記事本中的複製、剪下、貼上,TextBox 要如何寫?
老怪答:
坏人 撰寫於文章
vb要如何將十進變...二進...八進....十六進等
老怪答:
johneson 撰寫於文章
請問在vb 環境下如何一視窗如何去執行另一視窗所寫的程式碼
老怪答:
流浪的風 撰寫於文章
在VB5中的ActiveX控制項,能不能用功能表編輯器啊???有個很奇怪的現象...在表單的快顯功能表中有功能表編輯器...進去之後,可以設定喔...不過邊好後,在表單中看不見功能表ㄋㄟ......有誰知道原因....
老怪答:
風 撰寫於文章
如何用VB來取得電腦裡的字型並且用下拉式選單秀出來...
老怪答:
misckl 撰寫於文章
在VB Script中有一個 SPLIT() 的 Function 可以將字串轉成字串陣列,而在VB5中卻沒有。在VB5中是否有類似的Function?或是哪裡有這個 Function?
老怪試作:
VB5 �堥癡S有和 VBScript 相同的 SPLIT() 函數,但透過 VB5 字串變數的縱合運用,我們可以自創具有 SPLIT() 功能的函數。
Function Split(ByVal Exp As String, _
Optional ByVal Deli As
String = " ", _
Optional ByVal
varCount As Long = -1, _
Optional ByVal Comp As
Integer = 0)
Dim ReturnArr() As String, ReturnNum As Long
Dim ShortWord As String, WordNum As Variant
If varCount = 0 Or Len(Exp) = 0 Then
SimuSplit = ReturnArr
Exit Function
End If
Do
WordNum = InStr(1,
Exp, Deli, Comp)
If WordNum = 0 Then
ShortWord = Exp
Else
ShortWord = Mid(Exp, 1, WordNum - 1)
Exp = Right(Exp, Len(Exp) - WordNum)
End If
On Error Resume Next
ReDim Preserve
ReturnArr(UBound(ReturnArr) + 1)
If Err.Number = 9 Then
ReDim ReturnArr(0)
End If
ReturnArr(UBound(ReturnArr)) = ShortWord
If WordNum = 0 Then
Exit Do
Loop
If varCount <> -1 And varCount <=
UBound(ReturnArr) Then
ReDim Preserve
ReturnArr(varCount - 1)
End If
SimuSplit = ReturnArr
End Function
奴隸 撰寫於文章
CommonDialog其中的 開啟舊檔的視窗中,選取 "取消" 所會引發之事件為何?
老怪答:
如果你曾仔細在 VB5 的[瀏覽物件]功能�堨J細觀察過 CommonDialog 這個元件,你會發覺 CommonDialog 沒有設定任何的事件程序,那我們該如何得知它執行的狀況呢?答案就在它的 ErrorConstants 常數宣告�堙C也就是 CommonDialog 把正確執行的動作結果放在各 Property 值�堙A錯誤則產生一個 Error 來通知你。此外 Cancel 在 CommonDialog �媢w設值不是錯誤,但如果你要攔截到 Cancel 訊息,只有規定按下 Cancel 視同產生一個錯誤。也就是必需先設定 CommonDialog1.CancelError=Ture 後,再用 Err.Number 來偵測 Cancel 的行為。請參考下例。
Option Explicit
Private Sub Command1_Click()
On Error Resume Next
CommonDialog1.ShowOpen
If Err.Number = cdlCancel Then
MsgBox "FileOpen
Cancel"
End If
End Sub
Private Sub Form_Load()
CommonDialog1.CancelError = True
End Sub
Neuro Doc 撰寫於文章
在 VB 5.0 下, 如何用程式切換注音及英文輸入?
老怪答:
Vb 5.0 在 可以輸入文字的 Box (如 TextBox,ListBox,ComBox....等)�堨[了一個輸入法切換的屬性,就是 IMEMode,可是它自己說明�堻熊M隻字未提,不過經老怪測試,真的有作用。配合上 ImeStatus 這個函數檢測目前的輸入狀態,在你輸入文字時,就可以操控使用者的輸入狀態。
James Wu 撰寫於文章
欲把文字檔(filename.txt)中某一字串(beforchange)改為(afterchange),如何寫?
老怪答:
請參考下列範例程式:
VERSION 5.00
Begin VB.Form Form1
Caption
= "Form1"
ClientHeight = 3885
ClientLeft =
60
ClientTop =
345
ClientWidth =
4680
LinkTopic =
"Form1"
ScaleHeight =
3885
ScaleWidth =
4680
StartUpPosition = 3 '系統預設值
Begin VB.TextBox Text3
Height
= 495
Left
= 3240
TabIndex
= 5
Top
= 1680
Width
= 1215
End
Begin VB.TextBox Text2
Height
= 495
Left
= 3240
TabIndex
= 4
Top
= 600
Width
= 1215
End
Begin VB.CommandButton Command3
Caption
= "存檔"
Height
= 495
Left
= 3360
TabIndex
= 3
Top
= 3240
Width
= 1215
End
Begin VB.CommandButton Command2
Caption
= "取代"
Height
= 495
Left
= 1800
TabIndex
= 2
Top
= 3240
Width
= 1335
End
Begin VB.CommandButton Command1
Caption
= "開檔"
Height
= 495
Left
= 240
TabIndex
= 1
Top
= 3240
Width
= 1335
End
Begin VB.TextBox Text1
Height
= 2895
Left
= 120
MultiLine
= -1 'True
ScrollBars
= 2 '垂直捲軸
TabIndex
= 0
Top
= 120
Width
= 2895
End
Begin VB.Label Label2
Caption
= "取代字串"
Height
= 375
Left
= 3240
TabIndex
= 7
Top
= 1200
Width
= 1215
End
Begin VB.Label Label1
Caption
= "搜尋字串"
Height
= 375
Left
= 3240
TabIndex
= 6
Top
= 120
Width
= 1215
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
'TextSearch 為自行邊寫之 Sub Procedure
'varObject 是傳入的 Textbox 物件
'OrgString 是尋找字串
'RepString 是取代字串
Sub TextSearch(ByVal varObject As Control, _
ByVal OrgString As
String, _
ByVal RepString As
String)
Static varStart As Long '宣告 Static
型態,代表它能記住上次的搜尋位置
Dim SeString As String
Dim NowPos As Long
'物件接收駐點
varObject.SetFocus
'把上次未搜尋到的字串放入 SeString
變數中
SeString = Right(varObject.Text,
Len(varObject.Text) - varStart)
'找新的符合字串
NowPos = InStr(SeString, OrgString)
'沒找到
If NowPos = 0 Then
'記錄指標歸 0
varStart = 0
'設定無選取
varObject.SelLength =
0
'找到了
Else
'記錄指標移到新位置
varStart = varStart +
NowPos - 1
'從記錄指標位置開始選取
varObject.SelStart =
varStart
'選取搜尋字串長度
varObject.SelLength =
Len(OrgString)
'搜尋字串換成新字串
varObject.SelText =
RepString
'記錄指標移往取代字串之後
varStart = varStart +
Len(RepString)
End If
End Sub
'開啟既存文字檔
Private Sub Command1_Click()
Dim OpenString As String
Dim FHandle As Long
'找一個未使用的檔案代碼
FHandle = FreeFile()
'消除 Textbox �堛滬鴗憒r
Text1.Text = ""
'開啟一輸入檔
Open "c:\ttt.txt" For Input As
#FHandle
'把檔案加到 Text1.Text 中
Do While Not EOF(FHandle)
Line Input #FHandle,
OpenString
Text1.Text =
Text1.Text + OpenString + Chr(13) + Chr(10)
Loop
Close #FHandle
End Sub
'呼叫 TextSearch 副程序
Private Sub Command2_Click()
TextSearch Text1, Text2.Text, Text3.Text
End Sub
'將 Text1.Text 存成檔案
Private Sub Command3_Click()
Dim FHandle As Long
FHandle = FreeFile()
Open "c:\ttt.txt" For Output As
#FHandle
Print #FHandle, Text1.Text
Close #FHandle
End Sub
Rose 撰寫於文章
Day(DateSerial(年分,(月份+1),0))
老怪解說:
老怪試作:
VERSION 5.00
Begin VB.Form Form1
Caption
= "Marquee"
ClientHeight = 3960
ClientLeft =
60
ClientTop =
345
ClientWidth =
4680
LinkTopic =
"Form1"
ScaleHeight =
3960
ScaleWidth =
4680
StartUpPosition = 3 '系統預設值
Begin VB.CommandButton Command2
Cancel
= -1 'True
Caption
= "跑馬燈結束"
Height
= 495
Left
= 2640
TabIndex
= 5
Top
= 3360
Width
= 1215
End
Begin VB.Timer Timer1
Left
= 2160
Top
= 3480
End
Begin VB.CommandButton Command1
Caption
= "跑馬燈開始"
Height
= 495
Left
= 840
TabIndex
= 2
Top
= 3360
Width
= 1215
End
Begin VB.TextBox Text2
Height
= 1215
Left
= 840
MultiLine
= -1 'True
ScrollBars
= 2 '垂直捲軸
TabIndex
= 1
Top
= 1920
Width
= 3135
End
Begin VB.TextBox Text1
BackColor
= &H80000018&
Height
= 375
Left
= 1200
TabIndex
= 0
Top
= 360
Width
= 2895
End
Begin VB.Label Label4
Alignment
= 2 '靠中對齊
Caption
= "請輸入跑馬燈文字"
Height
= 375
Left
= 1320
TabIndex
= 4
Top
= 1200
Width
= 2295
End
Begin VB.Label Label2
Caption
= "Text 跑馬燈"
Height
= 375
Left
= 120
TabIndex
= 3
Top
= 360
Width
= 975
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
'宣告要在 Text1 �媗膆靰熄]馬燈字串變數
Dim TString As String
Private Sub Command1_Click()
'宣告儲存 Text1 字串長度的變數
Dim TWidth As Long
Command2.Enabled = True
'啟動 Timer 顯示跑馬燈
Timer1.Enabled = True
Command1.Enabled = False
'text2 �堨眸滇擗J跑馬燈字串
If Text2.Text = "" Then
MsgBox "請輸入跑馬燈文字"
'沒有輸入就按下
Command2 跑馬燈結束鈕
Command2_Click
Exit Sub
End If
'統計 Text1Box �堥鴝釧顒漱U幾個字
Do While TextWidth(Space(TWidth)) <=
Text1.Width
TWidth = TWidth + 1
Loop
'設定跑馬燈字串為 Text1
寬度個空白
'加原輸入的 跑馬燈文字
TString = Space(TWidth) + Text2.Text
End Sub
Private Sub Command2_Click()
Text1.Text = ""
Command1.Enabled = True
Command2.Enabled = False
'關閉跑馬燈顯示
Timer1.Enabled = False
Text2.SetFocus
End Sub
Private Sub Form_Load()
Timer1.Enabled = False
Timer1.Interval = 200
Command2.Enabled = False
'將各元件 Font
統一,利於計算字串寬度
Text1.Font = Me.Font
Text2.Font = Me.Font
Me.Show
Text2.SetFocus
End Sub
Private Sub Timer1_Timer()
'開始頡取跑馬燈字串之位置指標
Static TPos As Long
'如果位置指標越過了整個字串
If TPos > Len(TString) Then
'把位置指標移到最開頭
TPos = 1
Else
'把位置指標移到下一個字
TPos = TPos + 1
End If
'逐字顯示跑馬燈字串
Text1.Text = Mid(TString, TPos)
End Sub
魚半 撰寫於文章
請問VB5是用shell來執行外部檔案,那執行後,要怎樣用VB的語法來終止此檔案的執行呢!?
老怪答:
Dim FHandle As Variant '(儲存視窗代碼的變數
Private Sub Command1_Click()
FHandle =
Shell("C:\WIND98\CALC.EXE", 1) '(開啟外部執行檔)
End Sub
Private Sub Command2_Click()
AppActivate FHandle '讓先前開啟的視窗取得焦點。
SendKeys "%{f4}", True '送出
[Alt]+[F4] Windows 系統的關閉組合鍵。
End Sub
改寫成能處理錯誤的呼叫函數則如下:
開啟 Windows 應用程式
'varAppName 是程式路徑及名稱之傳遞參數
'varWinState 是應用程式視窗開啟狀態,設定方式請參考
Shell
'的 WindowsStyle 說明
Private Function OpenApp(ByVal varAppName As String, _
Optional ByVal
varWinState As Integer)
'傳回應用程式之視窗代碼
Dim varWinTitle As Variant
'錯誤處理
On Error GoTo OpenAppErr
varWinTitle = Shell(varAppName, varWinState)
OpenApp = varWinTitle
Exit Function
OpenAppErr:
Select Case Err.Number
Case 53
MsgBox "程式路徑或名稱錯誤", vbOKOnly, "開啟應用程式"
End Select
End Function
'關閉 Windows 應用程式
'varWinTitle 是開啟程式時 Windows 系統給的代碼
Private Sub CloseApp(ByVal varWinTitle As Variant)
'錯誤處理
On Error GoTo CloseAppErr
AppActivate varWinTitle
'用 SendKeys 陳述模擬鍵盤 [ALT]+[F4]
SendKeys "%{F4}"
Exit Sub
CloseAppErr:
Select Case Err.Number
Case 5
MsgBox "程式視窗已被關閉", vbOKOnly, "關閉應用程式"
End Select
End Sub
'上面是改寫 Shell 和 AppActivate
的兩個函數,呼叫方式如下:
'宣告一個儲存視窗代碼的變數
Private WinTitle As Variant
'開程式
Private Sub Command1_Click()
Dim AppName As String
AppName = "你的程式路徑及名稱"
WinTitle = OpenApp(AppName)
End Sub
'關程式
Private Sub Command2_Click()
CloseApp WinTitle
End Sub
滿足現況...:P 撰寫於文章
一個 string 中有 'aaa bbb ccc' 怎麼讓它變成 'aaabbbccc'呢?
老怪答:
Function KillChar(ByVal ExpString As String, ByVal KillString
As String)
Dim ReturnString As String
Dim I As Long
For I = 1 To Len(ExpString)
If Mid(ExpString, I,
1) <> KillString Then
ReturnString = ReturnString + Mid(ExpString, I, 1)
End If
Next
KillChar = ReturnString
End Function
Private Sub Command1_Click()
Dim SomeChar As String
SomeChar = "aaa bbb
ccc"
Debug.Print SomeChar
SomeChar = KillChar(SomeChar, " ")
Debug.Print SomeChar
End Sub
民哥 撰寫於文章
When dragmode set auto 拖曳picture時,會顯現一個框框,感覺不好, 所以去設dragicon, 但她只接受 *.ico *.cur 請問如果我要拖曳一個 *.bmp picture, 拖曳期間也要顯示這個 bmp picture 怎麼辦?
老怪答:
如果拖曳期間也要顯示 Bmp Picture ,你必須使 Dragmode 仍維持手動,然後使用Object.Drag vbBeginDrag 的方法去啟動一個 Object 的 Drag 程序(注意,不能在 Form 的 Dragover_Event �堻]定 Object.Drag vbBeginDrag ,因為除非你先 Object.Drag vbBeginDrag ,否則 Form_Dragover 跟本不會發生。) 以下是簡單的程式碼,你可以參考看看。
Dim OldX As Single, OldY As Single
Private Sub Form_DragOver(Source As Control, X As Single, Y As
Single, State As Integer)
Source.Move Source.Left + X - OldX, Source.Top + Y - OldY
OldX = X
OldY = Y
End Sub
Private Sub Image1_MouseDown(Button As Integer, Shift As Integer,
X As Single, Y As Single)
Image1.Drag vbBeginDrag
OldX = Image1.Left + X
OldY = Image1.Top + Y
End Sub
Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, X
As Single, Y As Single)
Image1.Drag vbEndDrag
End Sub
民哥 撰寫於文章
以 Object.Drag vbBeginDrag 就可以自動拖曳 Object.Picture,但為什麼不在 MouseMove_Event �堻]定 Object.Move X,Y (但比較不順暢,不知道能不能改善?) 請問用這兩種方法有時麼利弊?
老怪答:
副檔名 |
大小限制 |
色數上限 |
向量或點陣 |
透明效果 |
存檔格式 |
| BMP | 無 | 全彩 | 點陣 | 無 | BMP |
| DIB | 無 | 全彩 | 點陣 | 無 | DIB |
| ICO | 32*32 | 16 | 點陣 | 有 | ICO |
| CUR | 32*32 | 2 | 點陣 | 有 | CUR |
| WMF | 無 | 全彩 | 向量 | 有 | WMF |
| EMF | 無 | 全彩 | 向量 | 有 | EMF |
| GIF | 無 | 256 | 點陣 | 有 | BMP |
| JPG | 無 | 全彩 | 點陣 | 無 | BMP |
※存檔格式是指用 VB5 SavePicture 存檔後的檔案格式※
MetalFile ,就是副檔名 WMF 或 EMF 的向量圖檔,也就是在 Office �媦s泛採用的美工圖庫圖案,有點荒謬的是 Office 天天在用 MetalFile,它的繪圖工具畫出來的圖也是 MetalFile,可就不提供把 Office 製作出來的圖存成 WMF 檔的功能。這在其他不會 VB 語言的當然是難事一樁,但你可以利用Office 繪圖工具把圖畫好,將全圖群組化後,按複製,再在 VB 中執行以下的語法,就可以得到獨立的 WMF 圖在 VB �媕野峞C
Private Sub Command1_Click()
If Clipboard.GetFormat(vbCFMetafile) Then
Set Picture1.Picture =
Clipboard.GetData
SavePicture
Picture1.Picture, "c:\test\bin.wmf"
End If
End Sub