• Hướng dẫn chi tiết thiết kế Ribbon ứng dụng Access
  • Hướng dẫn chi tiết thiết kế Ribbon ứng dụng Access

    tranthanhan1962 > 20-11-19, 08:12 PM

    Bài này dành cho các bạn Newbie.



    Hướng dẫn thiết kế Ribbon ứng dụng Access
         Cá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ị.
    [Hình: D2FM2EW.png]
        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:
    [Hình: 1lMYCUE.png]
    2/Group: Trên mỗi tab có nhiều group, Ví dụ: Trên tab Create có các group: template, tables, queries…
    [Hình: BiTkrO9.png]
    Trên group Templates chỉ có một button Application Parts, trên group Tables có 3 button: Table, Table Design, SharePoint Lits.
    [Hình: PVcHjHr.png]
    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:
    [Hình: wE1d9G8.png]
    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.
    [Hình: mMY6b0O.png]
    Đâ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:
    [Hình: RDilN37.png]
    Khi bung các dấu cộng ta sẽ có một cây như sau:
    [Hình: 3T3bHPu.png]
    Đ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
    [Hình: 1AjaGBH.png]
    Trỏ vào tabs chuột phải chọn past
    [Hình: hIoScsR.png]
        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:
    [Hình: b0EItag.png]
    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
  • RE: Hướng dẫn chi tiết thiết kế Ribbon ứng dụng Access

    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 Access
         Cá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ị.
    [Hình: D2FM2EW.png]
        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:
    [Hình: 1lMYCUE.png]
    2/Group: Trên mỗi tab có nhiều group, Ví dụ: Trên tab Create có các group: template, tables, queries…
    [Hình: BiTkrO9.png]
    Trên group Templates chỉ có một button Application Parts, trên group Tables có 3 button: Table, Table Design, SharePoint Lits.
    [Hình: PVcHjHr.png]
    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:
    [Hình: wE1d9G8.png]
    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.
    [Hình: mMY6b0O.png]
    Đâ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:
    [Hình: RDilN37.png]
    Khi bung các dấu cộng ta sẽ có một cây như sau:
    [Hình: 3T3bHPu.png]
    Đ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
    [Hình: 1AjaGBH.png]
    Trỏ vào tabs chuột phải chọn past
    [Hình: hIoScsR.png]
        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:
    [Hình: b0EItag.png]
    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

    cam on anh Pro .
  • RE: Hướng dẫn chi tiết thiết kế Ribbon ứng dụng Access

    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
        

    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.  007
  • RE: Hướng dẫn chi tiết thiết kế Ribbon ứng dụng Access

    toidjtjmtoi > 22-11-19, 11:01 AM

    024  Có ẩn luôn được cái tab "File" Không pro
  • RE: Hướng dẫn chi tiết thiết kế Ribbon ứng dụng Access

    tranthanhan1962 > 22-11-19, 03:02 PM

    Được chứ. Dễ mà.
    Thực ra không phải do Tab "File" mà do cái lệnh "Option" trong cái tab này. Nó cho phép chỉnh sửa đủ thứ và mở toang cánh cửa để vào cả các phần mà tác giả muốn dấu. Trên CSDL demo cũng chưa có xử lý vụ này vì tôi định đưa vào phần sau. Nhưng bạn toidjtjmtoi hỏi thì tôi cũng trả lời luôn (dạo này tương đối bận việc nên phần tiếp theo tôi chưa xử lý ngay được).
    Cũng lấy từ tập tin demo ở trên. Nếu chọn Ribbon1 khi vào tab "File" ta vẫn thấy lệnh "Option". Tất nhiên chọn Ribbon2 cũng thế.
    [Hình: CZ2LRuA.png]
    Giờ mở đoạn mã trên field RibbonXML của record Ribbon1, thêm vào nó một đoạn mã

    <?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>

    [Thêm chổ này]

    </customUI>
    Đoạn mã thêm
     <backstage>

        <tab idMso="TabPrint" visible="false" />
        <button idMso="FileExit" visible="false" />
        <button idMso="ApplicationOptionsDialog" visible="false" />
      </backstage>
    Khi hoàn chỉnh ta có:

    <?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>
      <backstage>
        <tab idMso="TabPrint" visible="false" />
        <button idMso="FileExit" visible="false" />
        <button idMso="ApplicationOptionsDialog" visible="false" />
      </backstage>
    </customUI>
    Đóng tập tin và mở lại. Những lệnh đã bị visible="false" sẽ không còn hiển thị nữa
    [Hình: MGsPmWZ.png]
    Tất nhiên khi chọn Ribbon2 thì các nút trên sẽ hiển thị lại vì record này không có đoạn mã kia. Xử lý xong vụ này cũng phải tạo Display form để khóa phím Shift, Nếu không thì <Shift + Open> cũng lòi bọn này ra thì cũng như không.
    Hướng dẫn thiết kế Ribbon ứng dụng Access (phần 2)
  • RE: Hướng dẫn chi tiết thiết kế Ribbon ứng dụng Access

    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.  007
    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