tranthanhan1962 > 20-11-19, 08:12 PM
Nguyen SVN > 21-11-19, 08:09 AM
(20-11-19, 08:12 PM)tranthanhan1962 Đã viết: Bài này dành cho các bạn Newbie.
Hướng dẫn thiết kế Ribbon ứng dụng AccessCác file access .accdb từ access 2007 trở đi đã không còn sử dụng menu như các tập tin .mdb thời access 2003. Thay vào đó là các ribbon giống như ribbon windows 10
Khác với menu có thể dùng cách tạo toolbar sau đó kéo các command vào toolbar tự tạo rồi đưa macro hay VBA để thực hiện lệnh.
Tạo Ribbon buột phải sử dụng một đoạn mã viết bằng XML, một ngôn ngữ không quen thuộc với nhiều anh em làm việc với access từ trước đến nay.
Vì vậy nhiều “đồng chí” nhà ta chuyển qua dùng các form main swichboard thời tiền sử, nếu ứng dụng nhỏ gọn thì cũng đơn giản nhưng nếu ứng dụng lớn thì thật là phiền toái (phải nói là rất lu bu cho phần giao diện này)
Thực ra phần XML để xử lý cho Ribbon cũng không quá phức tạp. Ta có thể copy một đoạn XML viết cho ribbon, sau đó chỉnh sửa là xong (phần chỉnh sửa chỉ là copy, cut, paste… hoặc thay đổi một phần nhỏ là xong. Sau vài lần làm việc với nó sẻ cảm thấy nó đơn giản và mạnh dạn xử lý.
Một đối tượng không thể thiếu là phải tạo một table có tên là UsysRibbons (table này phải chính xác với tên này, nó viết tắt của từ User system Ribbon – Ribbon hệ thống người dùng), nếu các bạn tạo xong table mà thấy nó nằm trơ trơ trên màn hình thì có thể đã đặt tên sai. Vì nó là table system nên sau khi tạo xong và close nó sẽ không hiển thị. Chỉ khi các bạn vào Navigation Option check vào show system object thì nó mới hiển thị.
Table này có 3 field: ID (Data Type: Number), RibbonName (Data Type: Short Text), RibbonXML (Data Type: Long Text)
ID chỉ số thứ tự
RibbonName là tên ribbon. Một ứng dụng có quyền nhiều ribbon
RibbonXML: chính là mã thiết kế của ribbon đó, đó là các đối tượng phát lệnh có thể là label, command button, option button, list box, combobox mà ta từng hay sử dụng trên form, ngoài ra còn nhiều thứ khác nữa mà có khi ta chưa từng sử dụng. Đây chính là đoạn mã XML mà nhiều anh em đã từng bối rối với nó.
Thực ra đây chỉ là đoạn mã để xác định vị trí đối tượng phát lệnh, hình ảnh và công việc của đối tượng đó.
Chúng ta sẽ làm quen với vị trí các đối tượng phát lệnh.
1/Tab:2/Group: Trên mỗi tab có nhiều group, Ví dụ: Trên tab Create có các group: template, tables, queries…Trên group Templates chỉ có một button Application Parts, trên group Tables có 3 button: Table, Table Design, SharePoint Lits.Thông thường, tôi chỉ sử dụng nút lệnh còn mấy thứ khác thì chưa sử dụng.
Giờ ta tạo thử một Ribbon đơn giản:
Nhập vào table UsysRibbons các record như sau:
ID : RibbonName : RibbonXML
1 : Ribbon1 : <Mã XML 1>
2 : Ribbon2 : <Mã XML 2>
Đoạn mã XML 1 như sau:
<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon startFromScratch="true">
<tabs>
<tab id="TabSo1" label="Tab số 1" visible="true">
<group id="GroupSo1" label="Group Số 1">
<button id="BT01" imageMso="HappyFace" size="large" label="Nút số 1" onAction="mcr01" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Đây là đoạn mã mẫu để xử lý ribbon và nó chỉ bao nhiêu đó cứ xào qua xào lại là có món mới, để dễ hiểu tôi sẽ phân tích một tí
Dòng: <?xml version="1.0" encoding="utf-8"?> thẻ khai báo version XML đang sử dụng
2 dòng :
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon startFromScratch="true">
Đây là 2 dòng căn cứ vào ông Microsoft giống như Quyết định tòa án : Căn cứ vào bộ luật hình sự nước Cộng Hòa Xã Hội Chủ Nghĩa Việt Nam để làm ribbon
Các dòng còn lại mới chính là phần thiết kế ribbon.
<tabs>: Gồm có những cái tab (ở đây chỉ có một cái)
<tab id="TabSo1" label="Tab số 1" visible="true"> tab tên="TabSo1" nhãn="Tab số 1" hiển thị="có"
Trong TabSo1 chứa
<group id="GroupSo1" label="Group Số 1"> group tên="GroupSo1" nhãn="Group Số 1"
Trong GroupSo1 chứa
<button id="BT01" imageMso="HappyFace" size="large" label="Nút số 1" onAction="mcr01" /> Nút tên="BT01" Hình="HappyFace" Kích thước="large" Nhãn="Nút số 1" Hành động của nút="mcr01" (tên macro thực hiện lệnh của nút này)
Có thể thay thế nút (button) bằng combobox, option group…Nhưng trước mắt chỉ cần sử dụng button cũng đã sướng rồi, mấy cái kia từ từ tính sau. Thực ra những phần mềm lớn như word, excel, powerpont cũng chỉ sử dụng 2 điều khiển là button và combobox.
Các dòng ở dưới chỉ là các từ khóa đóng thẻ
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Mỗi thẻ < tabs … > sẽ được đóng bằng </ tabs >, thẻ < tab … > sẽ được đóng bằng </ tab … >, thẻ <group … > sẽ được đóng bằng </group>…Các bạn sẽ nhận thấy ký tự / trước mỗi thẻ đóng. Thực ra nó cũng giống như if …end if, for…end for vậy thôi.
Nhưng giờ ta không cần quan tâm lắm về vụ này vì sẽ dùng công cụ “XML Notepad 2007” để xử lý
Giờ ta chép đoạn mã vào record của table UsysRibbons:Vào File / Option / Ribbon and Toolbar Options / Ribbon Name chọn [Ribbon1]. Nếu chưa thấy tên thì cứ copy hoặc gõ tên Ribbon1 dán vào.Access báo sẽ thực hiện việc hiển thị sau khi đóng và mở lại.Đây là hình ảnh sau khi mở lại. Ở đây có cái Hình="HappyFace", và tôi lấy nó ở đâu ra.
Từ Trang này: https://bert-toolkit.com/imagemso-list.html . Chỉ cần thấy hình nào vừa ý thì copy tên của nó đưa vào imageMso.
Tất nhiên chẳng có bạn nào thích cái ribbon tào lao của tôi. Đề chỉnh sửa nó một cách dễ dàng (đối với các bạn chưa từng tiếp xúc XML) tôi đề nghị các bạn cài đặt phần mềm XML Notepad 2007.
Đây là phần mềm miễn phí. Các bạn có thể tải về tại đây:
https://www.microsoft.com/en-us/download...px?id=7973
Tôi sẽ hướng dẫn chỉnh sửa <Mã XML 1> trên record ID 1 để làm <Mã XML 2> trên record ID 2 cho Ribbon2.
Trước hết mở một notepad mới đặt đại cho nó một tên gì đó. Ví dụ: Ribbon.txt
Copy toàn bộ đoạn mã của field RibbonXML trên record ID1, sau đó dán vào Ribbon.txt và lưu lại, đóng tập tin Ribbon.txt và mở tập tin bằng phần mềm XML Notepad 2007.
Khi mở nó ra ta sẽ thấy:
Khi bung các dấu cộng ta sẽ có một cây như sau:
Đoạn mã XML được hiển thị với hình cây
Giả sử ta muốn tạo ribbon 2 có: 2 tab, mỗi tab có 2 group, mỗi grup có 2 button thì sẽ thực hiện như sau:
Bấm chuột phải vào tab chọn copy
Trỏ vào tabs chuột phải chọn past
Trên tabs lúc này sẽ có 2 tab (chứa đầy đủ các group, button) giống hệt như nhau:
Chú ý sau khi dán các bạn phải chỉnh sửa ID (tên đối tượng) không được trùng.
Cũng có thể dùng lệnh Douplicate thay thế lệnh copy dán nếu đối tượng được thêm nằm cạnh nhau.
Khi thay đổi ribbon ở Access option bằng Ribbon2 ta sẽ thấy:
Demo
Khi đã quen thì có thể chỉ sử dụng notepad để xử lý vì nó cũng không có gì phức tạp.
Phần kế tiếp tôi sẽ hướng dẫn tạo lệnh (onAction) cho các nút
ongke0711 > 22-11-19, 10:27 AM
(20-11-19, 08:12 PM)tranthanhan1962 Đã viết:Từ Trang này: https://bert-toolkit.com/imagemso-list.html . Chỉ cần thấy hình nào vừa ý thì copy tên của nó đưa vào imageMso.
Tất nhiên chẳng có bạn nào thích cái ribbon tào lao của tôi. Đề chỉnh sửa nó một cách dễ dàng (đối với các bạn chưa từng tiếp xúc XML) tôi đề nghị các bạn cài đặt phần mềm XML Notepad 2007.
Đây là phần mềm miễn phí. Các bạn có thể tải về tại đây:
https://www.microsoft.com/en-us/download...px?id=7973
toidjtjmtoi > 22-11-19, 11:01 AM
tranthanhan1962 > 22-11-19, 03:02 PM
tranthanhan1962 > 22-11-19, 03:19 PM
(22-11-19, 10:27 AM)ongke0711 Đã viết: Trước giờ toàn dùng NotePad ++ hoặc Visual Studio xx để tạo và chỉnh sửa file XML không, giờ mới biết cái tool XML Notepad của Microsoft. Cái này trực quan dễ nhìn hơn đó anh tranthanhan1962.Cái này có lâu rồi mà ngoài ra còn thằng XML Notepad 2.6 của Npackd cũng gống y chát, nhưng không biết thằng nào là chủ thực sự của cái này