71
From VB to B4A 跨越MicrosoftAndroid Dashing的發現之旅 林文雄。大雄 1

From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

Embed Size (px)

Citation preview

Page 1: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

From VB to B4A 跨越Microsoft到Android

Dashing的發現之旅

林文雄。大雄

1

Page 2: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

導A辦公室#1826

校內:http://192.168.13.211 校外:http://nature.tncvs.tn.edu.tw

大雄的自然小屋

2

Page 3: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

What is programming?

專業—並非會電腦的人都會程式設計,是

具有專業的門檻。

技術—特別是演算法(Algorithm),在有限

時間得以解決問題的步驟與方法。

藝術—解決問題的方法有多種,但如何使

程式易用、簡單與快速,就需要具有創意

的藝術。

3

Page 4: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

Programming Language?

第一代:機器語言

第二代:組合語言

第三代:程序性語言

第四代:物件導向語言或查詢語言

第五代:人工智慧語言

4

Page 5: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

程式翻譯器

將程式碼(助憶碼)翻譯成機器語言碼

組譯器(Assembler)

直譯器(Interpreter)

編譯器(Compiler)

5

Page 6: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

編譯歷程

文字編輯器

撰寫程式碼

編譯器

翻譯成目的程式

連結器

連結程式庫

成執行檔

載入器

載入主記憶體

執行

6

Page 7: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

開始設計吧!

設計一個可以讓小學生練習四則運算的VB程式。程式主動出題,待使用者輸入答案後,判斷答案且給予回饋。加減可至3位整數,乘除則至2位整數即可(注意需可整除)。

可兩人一組,也可一人一組。

7

Page 8: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

台南高商 林文雄

8

Page 9: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

PART 1. B4A第1個程式

9

Page 10: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A與VB程式發展步驟比較

VB B4A

Step 1 表單設計Form 版面設計Designer

Step 2 程式碼撰寫 程式碼撰寫

10

Page 11: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

Run Test1 Program

若程式碼無誤,經編後會直接傳輸與安裝在執行平台(手機或平板),即可執行。

執行鈕 版面表單設計

11

Page 12: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

Your First B4A Program

1. 儲存B4A檔案(如:Test1)

2. Designer設計版面(Layout)

並儲存(如TestAdd)

3. 撰寫程式碼

12

Page 13: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A-Designer

1. 與執行平台連線

2. 新增控制項

與屬性設定

3. 可設計Designer

Scripts (稍後再談)

4. 自動宣告控制項

或產生事件處理

程序

控制項

事件

處理程序

產生

13

Page 14: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

Test1程式碼(1/2)

Sub Globals

Private Button1 As Button

Private EditText1 As EditText

Private Label1 As Label

Private Label2 As Label

Private LblOpr As Label

Private LblEqual As Label

End Sub

Sub Activity_Create(FirstTime As Boolean)

Activity.LoadLayout(“TestAdd”) ‘載入版面

NewOne ‘新題目

End Sub

14

Page 15: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

Test1程式碼(2/2)

Sub Button1_Click

If Label1.Text+Label2.text=EditText1.Text Then

Msgbox(“太棒了,答對了”,“四則運算")

NewOne

Else

Msgbox(“哦!,再試一次!”,“四則運算")

End If

EditText1.Text=""

End Sub

Sub NewOne

Label1.Text=Rnd(1,100) ‘產生1-99間的亂數

Label2.text=Rnd(1,100)

End Sub 15

Page 16: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A_程式編譯與偵錯

Debug(legacy) .逐行執行偵錯

Debug(rapid) .逐程序執行偵錯

Release .apk手機執行測試

Release(obfuscated).apk發佈版本

另有設定中斷點偵錯模式

16

Page 17: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A-套件名稱(Package Name)

Project > Build Configurations >

Package

1. 是Android App的識別名稱,用來區分不

同的App應用程式。

2. 常用反相的網域名稱字串為套件名稱,

須為小寫英文,如

tw.edu.tn.tncvs.packagename

17

Page 18: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A-App Icon

正版:Project > Choose Icon

試用本:無法使用,但有撇步

將儲存資料夾中的預設Icon

Objects\res\drawable\icon.png

取代成你自己的圖片即可,檔名不可改

18

Page 19: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A-Project Attributes

#ApplicationLabel: 應用軟體名稱

#VersionCode: 版本號碼

#VersionName: 版本名稱 ‘SupportedOrientations possible values: unspecified(未指定), landscape(水平) or portrait(垂直).

#SupportedOrientations: unspecified

#CanInstallToExternalStorage: False

可否安裝在外部儲存裝置

19

Page 20: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A-Activity Attributes

#FullScreen: False 是否全螢幕

#IncludeTitle: True 是否包含標題

20

Page 21: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A-資料夾結構

Filename.b4a B4A主檔案

Filename.bas 其他模組程式檔

Files資料夾 B4A資源庫

Filename.bal B4A的Layout檔(版面)

Objects資料夾 相關的目的檔

Filename.apk B4A的App檔

21

Page 22: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A 程式設計的步驟

1. 儲存B4A檔案(如:Test1)

2. 設定App名稱:Project/Build Configurations/Package

3. 設定圖示:Project/Choose Icon

4. 設定程式中的Project Attributes與Activity Attributes

5. Designer設計版面(Layout)並儲存(如TestAdd)

6. 撰寫程式碼

7. 連線行動裝置IP

8. 編譯&執行

22

Page 23: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

PART 2. B4A與VB的差異比較

23

Page 24: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A控制項 說明 Visual Basic 2010 Basic4Android

表單 Form Designer

標籤 Label Label

文字方塊 TextBox、RichTextBox EditText

命令按鈕 Button Button

單選鈕 RadioButton RadioButton

複選鈕 CheckBox CheckBox

下拉式清單 ComboBox Spinner

清單選項 ListBox ListView

容器 Panel Panel

瀏覽器 WebBrowser WebView

影像 PictureBox ImageView

進度軸 ProgressBar ProgressBar

計時器 Timer Timer 24

Page 25: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A資料型態 資料型態 Visual Basic 2010 Basic4Android

布林 Boolean Boolean

位元組 Byte Byte

短整數 Short Short

整數 Integer Int

長整數 Long Long

單精度浮點數 Single Float

雙精數浮點數 Double Double

字元 Char Char

字串 String String

25

Page 26: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A運算子

優先順序 Visual Basic 2010 Basic4Android

1.指數 ^ Power(5,3)=125

2.負數 - -

3.乘除 *

/

*

/

4.整除 \

5.餘數 Mod Mod

6.加減 +

-

+

-

7.字串連接 & &

※關係運算式與布林運算式相同

26

Page 27: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A訊息框

1. Msgbox(“訊息”, “標題”)

2. Ans=Msgbox2(“訊息”, “標題”,”確定”, ”取消”,”結束”,Null) Ans的值可為下列三者之一:

(1)DialogResponse.POSITIVE (2)DialogResponse.CANCEL (3)DialogResponse.NAGATIVE

3. ToastMessageShow(“訊息”, True/False) True:停留時間較長(3 Sec.) False:停留時間較短(2 Sec.)

27

Page 28: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A函數-字串 方法 說明 用法

CharAt() 取得字串指定的元字 Str2=Str1.CharAt(2)

CompareTo() 比較兩個字串碼大小 Str1.CompareTo(Str2)

Contains() 是否包含指定字串 Str1.Contains(Strs)

IndexOf() 取得字串的索引位置 Str1.InexOf(Str2)

LastIndexOf() 反向取得字串的索引位置 Str1.LastIndexOf(Str2)

Length 字串的總字元數 Str1.Length

Replace() 字串取代 Str1.Replace(Str2, Str3)

Substring() 取得字串中的子字串 Str1.Substring(m)

Substring2() 取得字串中的子字串 Str1.Substring2(m, n)

ToLowerCase 轉成小寫 Str1.ToLowerCase

ToUpperCase 轉成大寫 Str1.ToUpperCase

Trim 刪除字串前後空白字元 Str1.Trim

28

Page 29: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A函數-日期

函數 說明

DateTime.GetYear(DateTime.Now) 西元年

DateTime.GetMonth(DateTime.Now) 月份

DateTime.Date(DateTime.Now) 日期

DateTime.Time(DateTime.Now) 時間

DateTime.GetDayofYear(DateTime.Now) 當年第幾天

DateTime.GetDayofMonth(DateTime.Now) 當月第幾天

DateTime.GetDayofWeek(DateTime.Now) 當週第幾天

DateTime.GetHour(DateTime.Now) 時

DateTime.GetMinute(DateTime.Now) 分

DateTime.GetSecond(DateTime.Now) 秒

29

Page 30: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A函數-數值

函數 說明

Abs(x) 絕對值

Floor(x) 取小於等於x的最大整數值

Max(x,y) 取x,y較大者

Min(x,y) 取x,y較小者

Power(x,y) 取x的y次方

Round(x) 四捨五入

Round(x,n) 四捨五入到小數點第n位

Sqrt(x) 取x的平方根

Ceil(x) 取大於等於x的最小整數

Rnd(x,y+1) 產生x~y間的亂數

30

Page 31: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A變數宣告

B4A不支援VB的常數宣告

B4A陣列宣告相同,但註標值意義有異

Dim Eng(9) As Int,共有Eng(0)~Eng(8)等9

個元素,而非VB中的10個。

B4A陣列預設值用法

Dim Eng() As Int

Eng=Array As Int(100,99,90,85)

31

Page 32: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A指令語法

B4A的註解僅有「 ‘ 」,無Rem指令

B4A的迴圈結構,不支援後測條件,也不支援While/End While

B4A不論函數、程序和方法都僅使用Sub宣告,没有Function用法 Sub F(x as int) As long Dim y as long y=power(x,3) Return y End Sub

32

Page 33: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A傳值呼叫與傳址呼叫

B4A的基本資料型態的變數與String型態都是採用傳值呼叫。

B4A的非基本資料型態參數都是使用傳址呼叫,如陣列。

Dim eng() As Int

eng=Array As Int(100,90,80,70)

callbyRef(eng)

Msgbox(eng(0), "") ‘10000

Sub callbyRef(xx() As Int)

xx(0)=Power(xx(0),2)

End Sub

Dim x As Int

x=100

callbyVal(x)

Msgbox(x, "") ‘100

Sub callbyVal(xx As Int)

xx=Power(xx,2)

End Sub

33

Page 34: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A文字檔使用

UTF-8格式

Windows OS可下載Notepad++文字編輯器

網路傳輸資料時則需轉成UTF-8格式再傳輸

若儲存於執行平台時,則直接儲存/開啟即可。預設格式仍為UTF-8

34

Page 35: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

PART 3. B4A多重表單與程式模組

35

Page 36: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A多重表單與程式模組

…..

StartActivity(SencondMoudle)

…..

StartActivity(MainMoudle)

每一個活動模組(Activity Moudle)都可以對應對一個專屬的表單(Layout)

36

Page 37: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A_程式生命期

啟動狀態

執行狀態

活動在前景執行(不會被移除)

暫停狀態(有必要會移除)

活動在背景時暫停執行

移除狀態(可移除)

※Android作業系統不會自動刪除活動,除非記憶體不夠時才會刪除活動。

37

Page 38: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A-Starter Service

B4A v5.20提供

建立單一的程式進入點

提供全域資源或變數的最佳初始化位置

全域性變數宣告於 Sub Process_Globals

控制項初始化於 Sub Service_Create

38

Page 39: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A模組類型

Activity Module 具版面表單的活動模組

Class Module 自訂的類別模組

Code Module 僅程式碼的模組

Service Module 可背景執行的模組

39

Page 40: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A多重表單與程式模組-範例

1. 利用Designer設計另三個與TestAdd

類似的版面表單-TestSub、TestMul 、

TestDiv。

2. 除了預設的main模組外,再新增Subb、

Mul、Div三個活動模組。

※「四則運算」程式碼詳見附件一

40

Page 41: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A多重程式模組-服務模組範例1

除了Main模組外,另新增一Service

Module,名稱可訂為Begin

Designer設計一版面表單Main,內有二個Label,一個Button。

Main模組進行前景的計數程式,並將結果呈現於Label1。Begin模組進行背景的計數程式,結果顯示於Label2。

Button用以啟動或結束Begin模組運作。

※「計數服務模組」程式碼詳見附件二

41

Page 42: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A多重程式模組-服務模組範例2

延續上一個服務模組範例,修改為開機後自動啟動的方式。

特別注意Begin模組的服務屬性設定

#Region Service Attributes

#StartAtBoot: True

#End Region

※「計數服務模組」程式碼詳見附件三

42

Page 43: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

PART 4. B4A函式庫(LIBRARY)

43

Page 44: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A函式庫(Library)

函式庫用法如名稱所示。

相關詳細資料可至B4A社群查詢。

特殊需求的函式庫亦可至B4A社群查詢下載使用。

44

Page 45: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A函式庫應用-音效播放

1. 勾選Audio函式庫

2. 資源庫中加入一音效檔,如kalimba.mp3

3. 程式中加入下列程式碼:

Dim MP As MediaPlayer

MP.Initialize2(“MP”)

MP.Load(File.DirAssets, _

“kalimba.mp3”)

MP.Play

45

Page 46: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A函式庫應用-網頁瀏覽

1. 勾選Network函式庫

2. Designer中建置WebView1控制項,並

儲存版面及自動宣告。

3. 程式中加入下列程式碼:

WebView1.LoadUrl("https://tw.yahoo.com/")

46

Page 47: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

PART 5. B4A-SQLITE資料庫與設計

47

Page 48: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

SQLite資料庫(1/2)

Google “SQLite Browser”,下載並安裝。

48

Page 49: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

SQLite資料庫(2/2)

49

Page 50: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A檔案的存取位置

File.DirAssets 此目錄在Android App的apk檔案中,隨著apk檔一起安裝至Android作業系統中,即資源庫的目錄,因此檔案只能唯讀,無法寫入。

File.DirInternal/File.DirInternalCache 此兩個目錄儲存主憶體的應用程式專屬檔案,其他App無法存取這些檔案。但如果Android作業系統需要更多的記憶體空間時,此一暫存目錄會被清除。

File.DirRootExternal SD卡根目錄

File.DirDefaultExternal SD卡應用程式預設目錄,其路徑: <記憶卡>/Android/data/<套件>/files/ 。此目錄有必要會自動建立,可與其他App共享存取檔案。

50

Page 51: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A-資料庫存取設計(1/3)

1. 勾選函數庫(Libs)的SQL

2. 將mydb,.sqlite載入資源庫(Files)

3. 程式中宣告

Sub Process_Globals

Dim SQLcmd As SQL ‘執行SQL語法

Dim DBPoint As Cursor ‘資料庫內指標

End Sub

51

Page 52: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A-資料庫存取設計(2/3)

4. 在Activity_Create程序中將資料庫檔案Copy至SD If File.Exists(File.DirDefaultExternal,“mydb.sqlite”)=False Then File.Copy(File.DirAssets,“mydb.sqlite”, _ File.DirDefaultExternal,“mydb.sqlite”) End If

5. 在Activity_Create程序中初始化資料庫檔案 If SQLcmd.IsInitialized()=False Then SQLcmd.Initialize(File.DirDefaultExternal, _ "mydb.sqlite", True) End If

52

Page 53: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A-資料庫存取設計(3/3)

資料庫的基本,不外是新增、修改、

刪除、查詢、全部列出等動作,前三者並

未涉及查詢,因此使用其方法為

SQLcmd.ExecNonQuery(SQL語法字串)

後二者則需查詢,故其方法為

SQLcmd.ExecQuery(SQL語法字串)

※「電話簿管理」程式碼詳見附件四

53

Page 54: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

PART 6. B4A 程序週期

54

Page 55: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

b4A 程序週期

嘗試下列兩個動作,看看Your First B4A

App有何反應?

1. 前景轉背景,可按<Home>鍵。然後

再回後B4A App。

2. 在執行B4A App的情況下,翻轉方向。

55

Page 56: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

B4A程序執行流程

Process- Globals

Globals Activity_ Create

Activity_ Resume

Process Running

前景轉背景執行

或螢幕轉向等

影響畫面動作

Activity_ Pause

背景轉前景執行

螢幕轉向

56

Page 57: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

主要程序說明(1/2)

B4A 的程式碼編輯區,預設有五個程序(Process),說明如下:

Sub Process_Globals

'此處定義此一App 下的全域變數,任何的

‘程式模組皆可以使用(不包含介面控制項的宣告)。

End Sub

Sub Globals

'定義此Activity 運作模組下的變數,僅此一模組內

‘可以進行存取的變數與控制項宣告。

End Sub

57

Page 58: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

主要程序說明(2/2)

Sub Activity_Pause (UserClosed As Boolean)

‘任何暫停此一Activity的動作,如轉背景/螢幕轉向等皆會觸發

‘此一程序,以便記錄程式狀況或相關變數。

‘1)固定螢幕方向 2)全域變數儲存 3)檔案儲存

End Sub

Sub Activity_Resume

‘回復此一Activity的動作,如轉前景運作/螢幕轉向等皆會觸發

‘此一程序,以便回復先前的畫面或相關變數。

End Sub

Sub Activity_Create(FirstTime As Boolean)

‘通常在此程序中來進行一些資料初始化或版面配置的動作 ‘類似 Main()程序

Activity.LoadLayout(“TestAdd”) ‘顯示版面表單

‘若 FirstTime = True 代表第一次執行活動 (Activity)

End Sub

58

Page 59: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

1)固定螢幕方向

#Region Project Attributes

#ApplicationLabel: B4A Test1

#VersionCode: 1

#VersionName: 20151028

'SupportedOrientations possible values:

unspecified, landscape or portrait.

#SupportedOrientations: portrait

#CanInstallToExternalStorage: False

#End Region

59

Page 60: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

2)全域變數儲存(1/2)

Sub Process_Globals

Dim no1, no2 As Int

End Sub

Sub Activity_Pause (UserClosed As Boolean)

no1=Label1.Text

no2=Label2.text

End Sub 60

Page 61: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

2)全域變數儲存(2/2)

Sub Activity_Create(FirstTime As Boolean)

Activity.LoadLayout(“TestAdd")

If FirstTime Then

NewOne

Else

Label1.Text=no1

Label2.Text=no2

End If

End Sub

61

Page 62: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

3)檔案儲存(1/2)

Sub Globals

Dim Writer As TextWriter

Dim Reader As TextReader

End Sub

Sub Activity_Pause (UserClosed As Boolean)

Writer.Initialize(File.OpenOutput _

(File.DirInternal,"test1.dat",False))

Writer.WriteLine(Label1.text)

Writer.WriteLine(Label2.text)

Writer.Close

End Sub 62

Page 63: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

3)檔案儲存(2/2)

Sub Activity_Create(FirstTime As Boolean)

Activity.LoadLayout(“TestAdd")

If FirstTime Then

NewOne

Else

If File.Exists(File.DirInternal,"test1.dat") Then

Reader.Initialize(File.OpenInput (File.DirInternal,"test1.dat"))

Label1.Text=Reader.ReadLine

Label2.Text=Reader.ReadLine

Reader.Close

End If

End If

End Sub

63

Page 64: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

PART 7. B4A-Q&A社群應用

64

Page 65: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

65

Page 66: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

66

Page 67: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

PART 8. B4A-示例

67

Page 68: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

68

Page 69: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

69

Page 70: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

70

Page 71: From VB to B4A - nature.tncvs.tn.edu.twnature.tncvs.tn.edu.tw/download/other2/105B4A_Doc.pdf · B4A控制項 說明 Visual Basic 2010 Basic4Android 表單 Form Designer 標籤 Label

71