'//**************************************************
'//       BSAC - Bluesofts ActiveX Controls
'//	(Controls for programming VBA in Microsoft Office (Excel, Word,...), Delphi, VB6, .NET)
'//		Version 3.1.0.18 Updated: 22-02-2026 (dd-MM-yyyy) 
'//		Support: Unicode, platforms 32-bit, 64-bit	                
'//**************************************************
'//		AUTHOR: Nguyen Duy Tuan (Nguyễn Duy Tuân)
'//		Company: BLUESOFTS., jsc
'//		Website: www.atoolspro.com - www.bluesofts.net
'//		Email: sales@bluesofts.net HOẶC tuanktcdcn@yahoo.com
'//**************************************************

//Please translate from Vietnamese to English language.

v3.1.0.18: 22-02-2026

	+ Sửa: thuộc tính "DoubleBuffered" của tất cả các controls được hiển thị. Phiên bản cũ để ẩn.
	+ Sửa: tối ưu bộ nhớ các hàm RunSqlA(), RunSqlW(), GetArrayFromRecordset().

v3.1.0.17: 18-02-2026

	+ Sửa: với control BSImageList, BSImageListEx các thủ tục vẽ như Draw, DrawEx,... có tham số hDC kiểu "Long" đổi thành kiểu "Variant" để nhận giá trị số nguyên trong môi trường 64-bit.

v3.1.0.16: 13-02-2026

	+ Sửa: hàm ExtractIconEx chạy đúng trong mô itruwowngf 32-bit và 64-bit. Lỗi chỉ phát sinh ở phiên bản v3.1.0.15.

v3.1.0.15: 11-11-2025

v3.1.0.14: 08-11-2025

v3.1.0.13: 05-11-2025

v3.1.0.12: 31-10-2025
	
	+ Sửa: Sửa lỗi rò rỉ bộ nhớ với tất cả các controls (BSListView, BSTreeView, BSListBox, BSCombobox, BSTaskPaneX,...)

	+ Sửa: lỗi lấy thuộc tính đối tượng Group trong BSListItem. Ví dụ
		BSListView1.Selected.Group

	+ Thêm: BSImageList thêm thủ tục ReCreate để tạo lại tương thích với độ phân giải màn hình từ Windows 10 trở lên. Nên chạy thủ tục này khi mở form.

	+ Thêm: BSGraphic thêm thủ tục ScaleBitmap để tạo lại tương thích với độ phân giải màn hình từ Windows 10 trở lên. Nên chạy thủ tục này khi mở form.

v3.1.0.11: 27-10-2025
	
	+ Sửa: lỗi báo hàm callback LoadRibbon ở một số máy.

v3.1.0.10: 18-06-2025

	+ Nâng cấp: thêm thuộc tính mở link trên BSTooltip/BSTooltipX khi đặt thuộc tính ClickClose = False.
	+ Nâng cấp: hàm MsgBoxTimer hiển thị thanh ProgressBar đúng với độ phân giải màn hình.
	+ Sửa: các đối tượng lập trình kiểu collection (danh sách) hiển thị ở cửa sổ "Local Window" đúng.

v3.1.0.9: 09-06-2025

	+ Sửa: Lỗi Task Pane khi tạo Task Pane trên file chưa lưu tên, đóng không lưu gây lỗi khi tạo tiếp trên file khác.
	+ Thêm: thêm sự kiện OnDestroy() cho các class BSTaskPane và BSTaskPaneX.

v3.1.0.8: 05-10-2024

	+ Nâng cấp: thêm 3 class để tạo và nhận dữ liệu JSON: BSJSONValue; BSJSONObject; BSJSONArray
	+ Nâng cấp: control BSWebView thêm các thuộc tính và sự kiện đầy đủ hơn.
	+ Nâng cấp: thêm hàm BSCreateStrings() để tạo class BSStrings.
	+ Nâng cấp: class BSStrings thêm các thuộc tính và thủ tục đầy đủ hơn.

v3.1.0.7: 19-09-2024

	+ Nâng cấp: cho phép tạo TaskPane nhúng activex control.
	Ví dụ:
		Dim TP as BSTaskPane
		Dim TPs As New BSTaskPanes
		Set TP = TPs.Add("My website", "AX:BSAC.BSWebView")
		'("AX:LibName.ControlProg")
		Set TPs = Nothing

v3.1.0.6: 14-09-2024

	+ Thêm mới: thêm control BSWebView cho phép mở trang web.
	+ Nâng cấp: BSTaskPane cho phép tạo task pane theo đặc tính riêng. Xem Task Pane hiển trị trợ giúp trong Add-in A-Tools v10 (2024).
	+ Sửa: một số lỗi khác được khắc phục.

v3.1.0.2: 18-03-2022

	+ Sửa: Kiểm tra license online trên Microsoft Word tốt hơn.

v3.1.0.1: 15-01-2022

	+ Thêm: cho phép kích hoạt license online
	+ Nâng cấp: ẩn thông tin quảng cáo nếu có license.

v3.1.0.0: 04-08-2021

	+ Sửa: lỗi khi code tạo Task Pane ở một file nhưng Task Pane ở file khác. Lỗi này do cơ chế cũ tạo Task Pane trên ActiveWindow.

	+ Nâng cấp: Cho phép tạo Task Pane có Caption/tên trùng nhau. Phiên bản cũ không cho phép. Khi nhập trùng tên bạn cần khai báo thuộc tính ID để đảm bảo khác nhau.

	+ Nâng cấp: BSTaskPane và BSTaskPaneX thêm thuộc tính ID: thuộc tính này làm cơ sở tìm kiếm. Nếu không nhập nó tự nhận giá trị là Caption - Tên của Task Pane.
			Trong trường hợp Task Pane giống nhau về Caption thì phải khai báo ID.

	+ Nâng cấp: Cho phép tạo Task Pane trên một Window bất kỳ của ứng dụng Office.
			- Với TBSTaskPaneX
				TBSTaskPaneX.Create(Me, "Tên", Application, Workbook"[Tên wb"].Windows(1))
			- Với TBSTaskPane
				Dim TPs As New BSTaskPanes
				Dim TP as BSTaskPane
				Set TP = TPs.Add("Tên", Me, Window:=ActiveWindow)

	+ Nâng cấp: Các thủ tục và hàm trong BSTaskPanes thêm tham số tùy chọn Window. Tham số này làm cơ sở tì kiếm các Task Pane nằm trong Window chỉ định.
				Sub Clear([Window])
				Function IndexOf(Item, [Window]) As Long
				Sub Remove(Index, [Window])
	+ Nâng cấp: Cung cấp các ví dụ đầy đủ hơn của BSAC.

v3.0.0.3: 09-10-2020

	+ Fix một vài lỗi

v3.0.0.2: 02-10-2020

	+ Fix một vài lỗi

v3.0.0.0: 22-09-2020

	1. Thêm control BSImage hiển thị các loại ảnh và ảnh PNG (Image trong VBA không có). BSImage còn cho phép cập nhật biểu đồ - Chart trong Excel.
	2. Thêm control BSImageList cho phép nhúng các ảnh, icon vào trong file, phiên bản cũ phải nạp file khi chạy, mang file ảnh đi cùng chương trình. Việc nạp ảnh này bạn không còn phải để các file rời rạc nữa. BSImageList cập nhật biểu đồ trên Excel.
	3. Thêm class BSStream, control BSStreamX để trao đổi dữ liệu trong memory.

	4. Sửa: lỗi mất BSTooltip không hoạt động từ v2.2
	5. Sửa: TaskPane trên bản 64-bit thi thoảng màn hình không update, phải dùng chuột kéo
	6. Sửa: Lỗi tràn bộ nhớ do một số thư viện chưa giải phóng hết khi thoát ứng dụng.
	7. Task Pane khởi động nhanh hơn.
	8. Tất cả các controls cho phép nhúng trên Worksheet mà vẫn nhập liệu được vào nó. Phiên bản cũ bị nhảy vào worksheet.
	9. Các controls BSGraphic, BSImage, BSImageList cho phép truyền dữ liệu dạng Stream (IStream) nên tốc độ truy xuất dữ liệu rất nhanh.
	10. Thêm ứng dụng tạo thông số hỗ trợ hàm SetWinSkinEx() để tùy biến Userform theo hình dạng bất kỳ.
		"Tools\ScanPixel2Transparent.exe"
	Ví dụ: https://atoolspro.com/excel-vba-create-userform-with-any-shape-based-on-background-image-mobile.html
	(*) Download: https://atoolspro.com/products/bsac-bluesofts-activex-controls.html

v2.2.0.0: 22-09-2020
	

v2.0.0.7: 28-04-2019

	
v2.0.0.6: 05-09-2018

	+ Thêm: BSCheckListBox: tạo danh sách có checkBox
	+ Thêm: BSDateSelector: tạo danh sách thời gian chọn, cho phep chọn một hoặc khoảng thời gian.
	(https://www.youtube.com/watch?v=MgK5_FqUKdw)
 
v2.0.0.5: 06-06-2013: BSAC - Bluesofts Active Controls

	(*) Thay đổi tên ControlForOffice.ocx thành BSAC.ocx (Bluesofts ActiveX Controls)
	(*) Hỗ trợ Unicode, platforms 32-bit, 64-bit 
	(*) Đây là phiên bản thương mại. Người dùng vẫn có thể lập trình và phân phối miễn phí với đầy đủ tính năng, tuy nhiên nếu chưa mua license sẽ hiển thị hộp thoại "About" lần đầu chạy, hiển thị thông tin quảng cáo dưới Task Pane.
	(*) Website chính thức: https://atoolspro.com/products/bsac-bluesofts-activex-controls.html

	(*) Các controls từ ControlForOffice chuyển sang và được hoàn thiện hồm:
	+ BSTaskPaneX: tạo Task Pane, nhúng Userform, nhúng các cửa sổ ứng dụng bất kỳ
	+ BSTooltipX: hiển thị tool tips text
	+ BSTrackBar: thanh kéo
	+ BSProgressBar: thanh tiến trình
	+ BSTimer: chạy timer
	+ Hàm MsgBoxW(W2): thay thế MsgBox trong VBA, hiển thị unicode, tùy biến màu chữ, màu nền, icon, hiển thị progress, disable nút lệnh, timer, tự động đóng hộp thoại.
	+ Hàm InputBox: thay thế InputBox trong VBA, hiển thị unicode, tùy biến màu chữ, màu nền, disable nút lệnh, timer, tự động đóng hộp thoại.

	(*) Các controls và hàm thêm mới:
	+ Thêm: BSTreeView: lập trình với TreeView
	+ Thêm: BSListView: lập trình với ListView
	+ Thêm: BSButton: tạo nút bấm Button
	+ Thêm: BSButtonEx: nút bấm mở rộng tùy chọn hiển thị đa dạng hơn BSButton
	+ Thêm: BSEdit: nhập liệu trong TextBox
	+ Thêm: BSMemo: nhập liệu nhiều dòng
	+ Thêm: BSMaskEdit: nhập liệu có định nghĩ cấu trúc hiển thị
	+ Thêm: BSCheckBox: hộp kiểm check box
	+ Thêm: BSRadioButton: tùy chọn
	+ Thêm: BSRadioGroup: tùy chọn trong nhóm
	+ Thêm: BSLabel: tạo nhãn hiển thị
	+ Thêm: BSComboBox: tạo Combo Box
	+ Thêm: BSComboBoxEx: tạo Combo Box mở rộng hiện thị
	+ Thêm: BSListBox: tạo ListBox
	+ Thêm: BSDateTimePicker: chọn ngày từ hộp thoại
	
	+ Hàm BrowseForFolder() hiển thị hộp thoại chọn folder.
	+ Hàm BrowseForFolderEx() hiển thị hộp thoại chọn folder.
	+ Hàm DirectoryExists() kiểm tra thư mục tồn tại hay không
	+ Hàm FileExists() kiểm tra tập tin tồn tại hay không
	+ Hàm DragForm(): nhấm chuột và kép Userform, hàm đặt trong sự kiện MouseDown
	+ Hàm SetFormNoCaption(): hàm làm mất tiêu đề Userform
	+ Hàm SetTextUnicode(): hàm thay đổi tiêu đề Userform, hiển thị unicode
	+ Hàm SetWinSkinEx(): hàm thay đổi hình dạng Userform, kết hợp với công cụ tạo file.skn
	+ Hàm ShellExecute(): thay thế hàm Shell trong VBA
	+ Hàm ExtractIcon(): lấy Icon Handle
	+ Hàm ExtractIconEx(): hàm lấy danh sách icon từ một thư viện 
	+ Hàm GetAssociatedIcon(): hàm lấu icon handle hiển thị loại tập tin.
	+ Hàm MsgBoxParams(): hiển thị MsgBox tùy chọn với các tham số
	+ Hàm MsgBoxTimer(): hiển thị MsgBOx với cấu trúc BSMsgBoxTimer
	+ Hàm GetPathTemp(): hàm lấy đường dẫn thư mục lưu tạm của Windows
	+ Hàm GetFileTemp(): hàm lấy tên tập tin tạm của Windows
	+ Hàm BSACShowAbout(): hàm hiển thị hộp thoại About của BSAC
	+ Hàm BSACVersion() hàm trả về số hiệu version của BSAC
	+ Hàm ConvertStr(): hàm chuyển đổi kiểu chuỗi (TCVN3-> Unicode, Vni-> Unicode,...)

	Các hàm API của Windows được tích hợp, hãy tra Google để biết cách sử dụng.
	+ Hàm FindWindow
	+ Hàm FindWindowEx
	+ Hàm GetWindowLong
	+ Hàm SetWindowLong
	+ Hàm SendMessage

v2.0.0.4: 25-08-2008

	+ Sửa : Cho phép chạy Task Pane với sự kiện OnVisible với Excel XP, 2003 (phiên bản 2007 chạy đủ hết).
	+ Sửa : lỗi không tương thích với phần mềm bộ gõ Unikey khi gõ chuỗi Unicode có dấu trong Excel: Dialog có EditBox; MSForms.TextBox; MSForms.ComboBox; ...các control trong thư viện FM20.DLL.

v2.0.0.3: 22-07-2008

	+ Thêm : Hàm InputBox & MsgBox chạy với cấu trúc tính TimerStruct, khi chạy hàm "callback function" cho phép thay đổi văn bản (Text) của hộp thoại, các thong báo và nút lệnh
	+ Thêm : Hàm InputBox & MsgBox cho phép chạy Timer liên tục nếu khai báo TimerDuration = -1 (biến này nếu>0 thì sẽ giới hạn về thời gian).
	+ Thêm : Hàm StartHookMsgBoxEx, MsgBoxEx với kiểu dữ liệu BSMsgBoxParams hỗ trợ cho người dùng giải pháp tổng thể với MsgBox.
	+ Thêm: Hàm MsgBox cho phép người dùng thay đổi ảnh (icon) của hộp thoại.
	+ Sửa :một vài lỗi liên quan tới đối tượng BSTaskPanes.ActiveTaskPane, BSTaskPane, cho phép nhận vùng Client của Task Pane thông qua thuộc tính BSTaskPane.Client (phiên bản cũ lỗi với Office 2003 và các phiên bản thấp hơn).
	+ Thêm : Bổ sung hướng dẫn chi tiết về việc sử dụng ControlForOffice cho ứng dụng của người dùng, thêm nhiều ví dụ cụ thể cùng mã nguồn. Hỗ trợ việc xem ví dụ và đọc code nhanh.
	+ Sửa sửa lỗi xung đột với PM bộ gõ Unikey.

v2.0.0.2: 18-07-2008

	+ Thêm: Cho phép hiện màu nền (BackColor) và màu chữ (ForeColor) cho MsgBox(W).
	+ Sửa : Căn lại vị trí và kích cỡ của các nút lệnh (command button) trên MsgBox(W) cho phù hợp hơn. Phiên bản cũ chiều cao của các nút lệnh lớn hơn 1 điểm, khoản cách từ thanh Progress đến nút lệnh quá gần.

	+ Thêm : Hàm InputBox cho phép chạy Timer (cho phép đếm gian gian).
	+ Thêm : Hàm InputBox cho phép triệu gọi một hàm khác bên ngoài trong khi chạy (Callback Function).
	+ Thêm : Hàm InputBox cho phép vô hiệu (disable) một vài nút lệnh. 
	+ Thêm : Hàm InputBox cho phép cho phép tự động đóng sau thời gian chạy.

v2.0.0.1: 15-07-2008

	+ Sửa: lỗi khi chạy hàm MsgBoxTimer, với cấu trúc MsgTimerStruct, nếu khai báo giá trị cho biến thành phần DisableButton_IDs thì các hàm MsgBox sau sẽ bị ảnh hưởng của DisableButton_IDs.

v2.0.0.0: 10-07-2008

	+ Thêm công cụ BSTaskPane: cho phép lập trình với Task Pane một cách dễ dàng. Người dùng lập trình trên UserForm sau đó nhúng vào Task Pane chỉ bằng 2 dòng lệnh! BSTaskPane lập trình được từ OfficeXP trở lên, với Office 2007 là tốt nhất.
	Với Office 2007 cho phép hiển thị nhiều Task Pane cùng một lúc, còn với Office XP,2003 chỉ hiển thị được một.

	+ Sửa font chữ trên MsgBoxW, chữ trên các nút lệnh thành chữ đậm (Bold)
	+ Sửa sự ổn định tuyệt đối của MsgBoxW
	+ Sửa các hàm đổi số thành chữ giống như với AccHelper.xll.
	+ Sửa thanh Progress tương thích với Office 2007 (phiên bản cũ lỗi).
	+ Sửa các hàm kết nối+truy vấn database.	

v1.2.0.0: 13-02-2007
	
	+ Thêm: hàm MsgBoxW(W2): hàm thay thế MsgBox của VBA, cho phép hiển thị chuỗi unicode, chạy timer, tự động đóng sau thời gian chạy.
	+ Thêm: Trackbar: thanh kéo
	
v1.0.0.0: 14-12-2006

	ControlForOffice.ocx phân phối miễn phí license. Phiên bản chỉ chạy trong Office 32-bit, hỗ trợ unicode.
	(*) Các controls và hàm bao gồm:
	1. Hàm MsgBoxW: hiển thị nội dung unicode.
	2. Hàm InputBox thay thế InputBox của VBA, cho phép hiển thị chuỗi unicode, ký tự password.
	3. BSTooltip(X): hiển thị Tool tips
	4. BSTimer: chạy thủ tục timer
	5. ProgressBar: thanh tiến trình: cho phep chạy trên Userform, khu vực StatusBar, khu vực công thức trong bảng tính, SysTray
