Câu hỏi

26/04/2013 21:01
. Chương trình chạy tốt trên Windows 9x nhưng trên Windows XP thì không xuất hiện hộp thoại theo yêu cầu?
Tôi thực hiện chương trình tiện ích trong Access 97 dùng hàm API GetOpenFilename để mở hộp thoại chọn file ảnh (khai báo Type và Function đầy đủ theo file comdlg32.dll). Chương trình chạy tốt trên Windows 9x nhưng trên Windows XP thì không xuất hiện hộp thoại theo yêu cầu.
duccanh
26/04/2013 21:01
Danh sách câu trả lời (1)

Để hiển thị cửa sổ duyệt và chọn file từ 1 form VB hay VBA, bạn có thể dùng đối tượng sẵn có của Microsoft tên là "Microsoft Common Dialog Control", version được dùng khá phổ biến là 6.0 có thể chạy tốt trên cả 2 môi trường Win9x và WinXP. Sau đây chúng tôi xin trình bày qui trình điển hình để hiển thị cửa sổ duyệt file trong 1 form VBA trong Access:
1. Chạy Access, mở file *.mdb cần xử lý.
2. Chọn mục Forms để hiển thị các form đã được thiết kế, bạn có thể tạo mới 1 form hay dùng lại 1 form cũ có sẵn.
3. Chọn menu Insert.ActiveX Control để hiển thị cửa sổ Insert ActiveX Control, duyệt tìm trong danh sách và chọn hàng Microsoft Common Dialog Control version 6.0. Ấn phải chuột trên icon vừa tạo trong form, chọn mục Properties để hiển thị cửa sổ thuộc tính của nó, chọn tab All, thay đổi giá trị của thuộc tính Name thành cdlg.
4. Tạo 1 textbox và đặt tên là "txtImport" (ấn phải chuột trên textbox, chọn mục Properties để hiển thị cửa sổ thuộc tính của textbox, chọn tab All, thay đổi giá trị của thuộc tính Name thành txtImport).
5. Tạo 1 command button, cửa sổ "Command button Wizard" sẽ tự hiển thị, bạn chọn Cancel để đóng lại. Ấn phải chuột chọn mục Build Events để hiển thị cửa sổ Choose Builder, chọn mục Code Builder để tạo hàm xử lý sự kiện click chuột kết hợp với button, cửa sổ soạn code sẽ hiển thị để giúp bạn viết code cho hàm vừa tạo ra.
6. chọn menu Tools.References để hiển thị cửa sổ References, duyệt trong danh sách và chọn hàng Microsoft Common Dialog Control version 6.0.
7. Viết code sau đây để hiển thị cửa sổ duyệt file, chờ người dùng chọn file rồi gán đường dẫn file được chọn sang textbox:
' hàm xử lý sự kiện ấn chuột vào button Command0
Private Sub Command0_Click()
Dim cdlg As CommonDialog
Set cdlg = Me.cdlg.Object
' Thiết lập 1 số thuộc tính cần dùng cho đối tượng cdlg
With cdlg
.DialogTitle = "Open file anh"
.Filter = "Anh BMP|*.bmp|Anh JPEG|*.jpg|Anh GIG|*.gif"
.CancelError = True
' hiển thị cửa sổ duyệt file và chờ người dùng chọn file
.ShowOpen
' copy đường dẫn file được chọn sang textbox
Me.txtImport = .FileName
End With
Set cdlg = Nothing
Exit Sub
' phần xử lý lỗi
ErrorHandling:
If Err = 32755 Then
Exit Sub
Else
MsgBox Err & ": " & Err.Description
End If
End Sub
8. Chạy Form vừa thiết kế và xem kết quả. Lưu ý đoạn code trên đã chạy tốt trên Access 2000 và Access XP, vì Access 97 quá cũ nên chúng tôi không có điều kiện kiểm tra, nhưng hy vọng nó cũng sẽ chạy tốt nếu máy bạn đã cài ActiveX Control "Microsoft Common Dialog Control version 6.0".
1. Chạy Access, mở file *.mdb cần xử lý.
2. Chọn mục Forms để hiển thị các form đã được thiết kế, bạn có thể tạo mới 1 form hay dùng lại 1 form cũ có sẵn.
3. Chọn menu Insert.ActiveX Control để hiển thị cửa sổ Insert ActiveX Control, duyệt tìm trong danh sách và chọn hàng Microsoft Common Dialog Control version 6.0. Ấn phải chuột trên icon vừa tạo trong form, chọn mục Properties để hiển thị cửa sổ thuộc tính của nó, chọn tab All, thay đổi giá trị của thuộc tính Name thành cdlg.
4. Tạo 1 textbox và đặt tên là "txtImport" (ấn phải chuột trên textbox, chọn mục Properties để hiển thị cửa sổ thuộc tính của textbox, chọn tab All, thay đổi giá trị của thuộc tính Name thành txtImport).
5. Tạo 1 command button, cửa sổ "Command button Wizard" sẽ tự hiển thị, bạn chọn Cancel để đóng lại. Ấn phải chuột chọn mục Build Events để hiển thị cửa sổ Choose Builder, chọn mục Code Builder để tạo hàm xử lý sự kiện click chuột kết hợp với button, cửa sổ soạn code sẽ hiển thị để giúp bạn viết code cho hàm vừa tạo ra.
6. chọn menu Tools.References để hiển thị cửa sổ References, duyệt trong danh sách và chọn hàng Microsoft Common Dialog Control version 6.0.
7. Viết code sau đây để hiển thị cửa sổ duyệt file, chờ người dùng chọn file rồi gán đường dẫn file được chọn sang textbox:
' hàm xử lý sự kiện ấn chuột vào button Command0
Private Sub Command0_Click()
Dim cdlg As CommonDialog
Set cdlg = Me.cdlg.Object
' Thiết lập 1 số thuộc tính cần dùng cho đối tượng cdlg
With cdlg
.DialogTitle = "Open file anh"
.Filter = "Anh BMP|*.bmp|Anh JPEG|*.jpg|Anh GIG|*.gif"
.CancelError = True
' hiển thị cửa sổ duyệt file và chờ người dùng chọn file
.ShowOpen
' copy đường dẫn file được chọn sang textbox
Me.txtImport = .FileName
End With
Set cdlg = Nothing
Exit Sub
' phần xử lý lỗi
ErrorHandling:
If Err = 32755 Then
Exit Sub
Else
MsgBox Err & ": " & Err.Description
End If
End Sub
8. Chạy Form vừa thiết kế và xem kết quả. Lưu ý đoạn code trên đã chạy tốt trên Access 2000 và Access XP, vì Access 97 quá cũ nên chúng tôi không có điều kiện kiểm tra, nhưng hy vọng nó cũng sẽ chạy tốt nếu máy bạn đã cài ActiveX Control "Microsoft Common Dialog Control version 6.0".
Trả lời câu hỏi
Câu hỏi lĩnh vực Lập trình
Rao vặt Siêu Vip