• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Sử dụng Windows Script Control

Các bài viết hướng dẫn, giúp các bạn hiểu và tiếp cận với Visual Basic nhanh hơn
Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4760
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 515 time

Sử dụng Windows Script Control

Gửi bàigửi bởi truongphu » T.Hai 03/01/2011 3:27 pm

Tên bài viết: Sử dụng Windows Script Control
Tác giả: truongphu
Cấp độ bài viết: Chưa đánh giá
Tóm tắt: A- Thêm Function, Sub lúc Runtime và Chạy nó
B- Hổ trợ ngôn ngữ Script: VBScript, JScript (JavaScript)



Thực hành: làm là hiểu!
A- Thêm Function, Sub lúc Runtime và Chạy nó

* Form1 có Command1, Command2 và Command3; List1 và List2 cạnh nhau; Text1 lớn với MultiLine = True
* Components thêm Microsoft Script Control 1.0; vẽ lên Form1 ScriptControl1
* Code Form1 như sau:

  1.      Private Sub Command1_Click()
  2.         ScriptControl1.Modules.Add Text1.Text
  3.         Form_Activate
  4.       End Sub
  5.  
  6.       Private Sub Command2_Click()
  7.         ScriptControl1.Modules(List1).AddCode Text1.Text
  8.         List1_Click
  9.       End Sub
  10.  
  11.       Private Sub Command3_Click()
  12.       Dim RetVal As Variant, m As Variant
  13.         Set m = ScriptControl1.Modules(List1.Text)
  14.         With m.Procedures(List2.Text)
  15.           Select Case .NumArgs
  16.             Case 0
  17.               RetVal = m.Run(List2.Text)
  18.             Case 1
  19.               RetVal = m.Run(List2.Text, 5)
  20.             Case 2
  21.               RetVal = m.Run(List2.Text, 4, 23)
  22.             Case Else
  23.               MsgBox "Procedure has too many arguments"
  24.           End Select
  25.           If .HasReturnValue Then
  26.             MsgBox List2.Text & " returned: " & RetVal
  27.           End If
  28.         End With
  29.       End Sub
  30.  
  31.       Private Sub Form_Activate()
  32.       Dim m As Variant
  33.         List1.Clear
  34.         With SCriptControl1
  35.           .Language = "VBScript"
  36.           .AllowUI = True
  37.           For Each m In .Modules
  38.             List1.AddItem m.Name
  39.           Next m
  40.         End With
  41.       End Sub
  42.  
  43.       Private Sub Form_Load()
  44.         Command1.Caption = "Add Module"
  45.         Command2.Caption = "Add Code"
  46.         Command3.Caption = "Run Procedure"
  47.       End Sub
  48.  
  49.       Private Sub List1_Click()
  50.       Dim m As String, p As Variant
  51.         m = List1
  52.         List2.Clear
  53.         If m = "" Then Exit Sub
  54.         For Each p In ScriptControl1.Modules(m).Procedures
  55.           List2.AddItem p.Name
  56.         Next p
  57.       End Sub
  58.  
  59.       Private Sub List2_Click()
  60.       Dim m As String, p As String, r As Boolean, a As Long
  61.         m = List1
  62.         p = List2
  63.         With ScriptControl1.Modules(m).Procedures(p)
  64.           r = .HasReturnValue
  65.           a = .NumArgs
  66.         End With
  67.         MsgBox m & "." & p & " has " & IIf(r, "a", "no") & _
  68.                " return value and " & a & " arguments"
  69.       End Sub


* Xong, Run Form1
* Thêm Module lúc Runtime:
Gõ tên Module vào Text1, vd Module1 và nhấn vào nút "Add Module". List 1 hiện ra Module1 dưới Global

* Thêm Function
Paste vào text1 đoạn code sau:

Mã: Chọn hết

      Function Calc(X)
        Calc = X * 2
      End Function


-> Thêm function nầy vào Global:
Chọn Global ở List1 và nhấn nút "Add Code"; List2 hiện ra: Calc

* Thêm Sub: tương tự thêm Function
Paste vào Text1 đoạn code sau:

Mã: Chọn hết

      Function Calc(X, Y)
        Calc = X * Y
      End Function

      Sub Test()
        MsgBox "The Test Sub in Module Mod2"
      End Sub


-> Thêm 2 Function và Sub nầy vào Module1:
Chọn Module1 ở List1 và nhấn nút "Add Code"; List2 hiện ra: Calc và Test. Lưu ý rằng Calc của Module1 khác với Calc của Global

* Nhấn vào List2 chọn Calc: hiện thông báo nằm ở Module1, có trị trả về và có 2 đối số; Chọn Test: hiện thông báo nằm ở Module1, trả về = 0, đối số = 0
Chọn Global ở List1, chọn Calc, kết quả: có trị trả về và 1 đối số

* Run Function và Sub: Chọn Function hoặc Sub ở List2, nhấn nút "Run Procedure" sẽ nhận kết quả của Sub hay Function

B- Hổ trợ ngôn ngữ Script: VBScript, JScript (JavaScript)
Các Function và Sub nêu trên là ngôn ngữ VBScript, nó "y chang" ngôn ngữ VB6 nên chúng ta chỉ xem thử ngôn ngữ JavaScript có chạy được trên Project VB6 của chúng ta không?

Ở Sub Form_Activate, có dòng: .Language = "VBScript"; ta phải sửa lại thành "JScript"
* Chạy Form1. Paste vào Text1 đoạn code JavaScript sau:

  1. function DateDemo()
  2. {
  3.    var d, s = "Today's date is: ";
  4.    d = new Date();
  5.    s += (d.getMonth() + 1) + "/";
  6.    s += d.getDate() + "/";
  7.    s += d.getYear();
  8.    return(s);
  9. }


nhấn chọn Global ở List1, nhấn nút "Add Code", DateDemo hiện ra ở List2. Nhấn vào DateDemo: thông báo trả về = 0, đối số = 0.
Nhấn nút "Run Procedure" : thông báo ngày hiện tại = à há! code Javascript đã chạy tốt

(Lưu ý: do code không dùng "On Error Resume Next" nên trước khi nhấn các command, phải nhấn chọn đúng thành phần ở List1 hoặc List2 như mô tả ở trên)

Project đính kèm có thêm vài thành phần để tiện dụng
Tập tin đính kèm
ScriptControl.rar
(2.06 KiB) Đã tải 541 lần


o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4760
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 515 time

Re: Sử dụng Windows Script Control

Gửi bàigửi bởi truongphu » T.Năm 06/01/2011 7:55 am

Ứng dụng: dùng hàm encodeURIComponent của javascript
xem bài: Chuyển chuỗi Unicode thành chuỗi WEB
viewtopic.php?f=7&t=15995#p94262

Download:
download/file.php?id=11524
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh


Quay về “[VB] Bài viết hướng dẫn”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách