用按鈕元件做日曆表是在 APP INVENTOR Gallery中,高手寫的一個範例。我重新整理我看的懂的部份……,不得不說,真的學到挺多的。
記錄一下:
App Inventor學習記錄173-用按鈕元件試作的日曆表功能
這次範例的完成品如下。
左上方三個標籤,在日期選擇器完成選擇之後,依序會出現選定日期當月的第 1天、日曆表外的前 1天,以及選定日期變更時間格式的顯示。
日曆表中的星期日和星期六的背景顏色是紅色,當月份日期的背景是藍色,其它的背景是灰色。
日曆中如果有那一天是有儲存記事的話,字體的顏色會變紅色。
下方有一個文字輸入盒框,是用來顯示或新增記事用的。
文字輸入盒下方的 3個按鈕,則是用來儲存記錄用的。
畫面編排的部份如下。
照每月的月曆來看的話,我們需要用到六個水平配置,每個水平配置中,都要放入 7個按鈕。
一個月最多雖然只有 31天,但是我們要用到 42個按鈕,我自己在算的時候,真的有嚇到。
另外,由於我們要用 clock計時器中的方塊來抓時間,所以要記得拉計時器元件進來。還有就是 tinydb元件,用來儲存我們的記事項目。
全部的程式方塊如下。
第 1部份的程式方塊記錄。
這裡建立了六個清單分別代表了日曆上第一周到第六周的按鈕。
第 2部份的程式方塊記錄。
等一下會照順序把所有的按鈕加入到清單_全部按鈕的列表中。
清單_按鈕分周次的列表這個清單只是一個暫存的清單,主要是要是減少重覆工作的項目而己。
第 3部份的程式方塊記錄。
建立選定日期變成每月第 1天_時刻這個程式。
假設我們選擇的日期是 2022.02.22,它會顯示在日期顯示器的按鈕上。顯示的文字是 02/22/2022。但這個 02/22/2022是時間的顯示格式,沒有辦法拿來計算。所以這裡我們用 call clock 1.make instant方塊,把 02/22/2022這個文字,變成一個 instant時刻。然後我們就可以拿來計算。
接著,我們就可以用 call clock1.add days方塊,來取得選擇日期當月月份的第一天。
舉例來說,我們選擇的日期是 2022.02.22,經過 call clock 1.day of month方塊,我們取得了 22的值。再用 1-22,我們得到了 -21這個數字,再把這個數字放到 call clock1.add days方塊中,也就是我們取得了 2022.02.01這一天的時刻。
第 4部份的程式方塊記錄。
建立基準日_為當月月曆的前一天程式。延用上面日期選擇器選擇 2022.02.22的設定。
這個部份的寫法跟第 3部份是差不多的。只是這次我們用 call clock1.weekday,去取得 2022.02.1這一天的時刻,是每個禮拜的第幾天,這裡取得的值會是 3,這裡用 neg的方塊來把 3變成 -3。
再把 -3放到 call clock 1.add days方塊中的 quantity裡。也就就是2022.02.01再往前 3天。
經過這個程式之後,我們就會取得 2022.01.29這一天的時刻值。
第 5部份的程式方塊記錄。
建立字體大小精靈重置程式。在這個程式中,我們用 for each item in list方塊,把清單_全部按鈕的列表這個清單中所有的按鈕,利用任意元件的方式,把字體大小設定成 12,字體設定成粗體,文字顏色設定成黑色。
第 6部份的程式方塊記錄。
建立全部的按鈕加上日期程式。
程式的一開始,我們先呼叫字體大小粗體重置這個程式。
然後,把每一個按鈕都加上數字,然後把按下日期那一天的文字的大小變成 20,也粗體顯示。
第 7部份的程式方塊記錄。
建立星期六日改背景顏色程式。
在這個程式中,我們先用 call clock1.weekday方塊來取得判斷日期的數字,如果是 1或是 7的話,就把按鈕的背景設定成粉紅。
如果不是 1或7,但是用 call clock1.month取得月份數字,跟用日期選擇器的月份數字相同的話,就把按鈕背景設定成藍色,不然就設定成灰色。
第 8部份的程式方塊記錄。
建立有記事的日期,字體變粗變藍。
這個範例中,把資料儲存在 tinydb的時候,標籤會存成年月日的格式。
一樣用 2022.02.22為例。
當我們在這一天存資料的時候,我們會把資料存在 20220222這個標籤下。
所以在這個程式中,我們去判斷按鈕日期格式的標籤下,有沒有資料。
有的話,就變更字體顏色、粗體、大小。
第 9部份的程式方塊記錄。
接下來的部份在前面都已經說明過了,這裡就很快的帶過。
第 10部份的程式方塊記錄。
第 11部份的程式方塊記錄。
第 12部份的程式方塊記錄。
第 13部份的程式方塊記錄。
google日期看上去清清爽爽的,用起來就挺舒服。想不到要自己做一個簡單的日曆功能會變的這麼複雜……最後我決定現階段先回去用 google日曆。
這次的 aia檔的下載連結如下:
NO_173_button_calendar.aia
app inventor交流討論群組連結如下(掃描 QR code或是點擊連結皆可)
https://line.me/ti/g2/Loxwrcc2iNRS5-Qd4SFXxQ?utm_source=invitation&utm_medium=link_copy&utm_campaign=default
參考書籍請見博客來書籍介紹頁面:
手機應用程式設計超簡單 App Inventor 2零基礎入門班
TQC+ 創意App程式設計認證指南
TQC+創意App程式設計認證指南解題秘笈
手機應用程式設計超簡單:App Inventor 2初學特訓班
手機應用程式設計超簡單:App Inventor 2小專題特訓班
手機應用程式設計超簡單:App Inventor 2資料庫專題特訓班
之前介紹過的一些 appinventor的使用記錄,都整理在下面這個頁面上了。
APP INVENTOR學習記錄及資源整理頁面