[วิดีโอ,B4X] การแปลงแอพ B4A เป็น B4J

Theera

Expert
Licensed User
Longtime User
ขอขอบคุณ mcqueccu ณ โอกาสนี้ด้วย ที่เพิ่มคำบรรยาย ภาคภาษาไทยให้ในคลิปวิดีโอ


==หลักการแปลงแอพ B4A เป็น B4J มีดังนี้==
1.เพิ่มไลบารี่ที่จำเป็น ได้แก่ ไลบารี่ jXUI ,XUI Views และ jSQL (ถ้าไม่เพิ่ม ไลบารี่ jXUI และ XUI Views จะไม่สามารถคัดลอกวิวต่างๆ ในข้อที่3 ได้)
2.นำการเพิ่มโมดูล ไฟล์นามสกุล *.Bas ไปยังโครงงานใหม่ ในตัวอย่างนี้ ได้แก่ โมดูล actAdd.Bas และ โมดูล actDashboard.bas โดยตั้งความสัมพันธ์เป็นแบบ Relative Path
3.คัดลอกวิวต่างๆในแต่ละ layout โดย เปิด B4A Layout designer กับ เปิด B4J Layout designer คู่กัน จากนั้น ใช้ Ctrl+A ,Ctrl+C และ Ctrl+V ทำให้ได้ไฟล์ *.bjl (เช่นเดียวกับ *.bal
ใน B4A)
4.แก้ไขข้อผิดพลาดในโครงการ B4J และใช้คำสั่งในการคอมไพล์แบบมีเงื่อนไข
-ประกาศตัวแปร Dim sql As SQL ใน Process_Globals ของ Main
B4X:
Sub Process_Globals
    Private fx As JFX
    Private MainForm As Form
    Dim sql As SQL
End Sub
-เพิ่มไลบารี่ข้างนอก #AdditionalJar: sqlite-jdbc -3.27.2.1 ใน Project Attributes ของ Main (เนื่องจาก Sqlite ขึ้นอยู่กับ Sqlite-jdbc)
B4X:
         #Region Project Attributes
                 #MainFormWidth: 600
                 #MainFormHeight: 600
                 #AdditionalJar: sqlite-jdbc-3.27.2.1
         #End Region

เราสามารถหาไฟล์ sqlite-jdbc -3.27.2.1.jar และบันทึกไว้ที่C:\B4XAdditionalLibsAndSharedModules\AdditionalLibs\B4J
โดยดาวน์โหลด จากเว็บไซด์นี้ https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc


-ในโมดูล B4XPage_Created (Root1 As B4XView) ให้เพิ่ม เงื่อนไข กรณีใช้งาน B4J ดังนี้

B4X:
Private Sub B4XPage_Created (Root1 As B4XView)
    Root = Root1
    Root.LoadLayout("MainPage")
 
    #If B4J
          xui.setdatafolder("Membership")
    #End If
    ...
    ...
 
End Sub

-ทำการ Sync files โดยทำการกด Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True
B4X:
 #Region Shared Files
#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files"
'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True
#End Region

-ในโมดูล initializeDB ให้เพิ่ม เงื่อนไข กรณีใช้งาน B4J ดังนี้

B4X:
Sub initializeDB
   ...
   ...
    If Main.sql.IsInitialized = False Then
        #If B4J
            Main.sql.InitializeSQLite(xui.DefaultFolder,"membership.db",True)
        #Else
           Main.sql.Initialize(xui.DefaultFolder,"membership.db",True)
        #End If
        Log("DB Started")
    End If
End Sub

-แก้ไขจัดการ Splash Page โดยเพิ่มรูป splash.png


-เพิ่มโมดูล lblBack_MouseClicked(EventData MouseEvent) ในโมดูล actAdd.Bas (โมดูลที่ใช้รองรับการสั่งการด้วยเมาส์ เท่านั้น จึงมีเฉพาะ B4J)
และยกเลิก lblBack_Click

B4X:
#If B4J
Private Sub lblBack_MouseClicked (EventData As MouseEvent)
#Else
Private Sub lblBack_Click
#END If
        B4XPages.ShowPageAndRemovePreviousPages("idDash")
End Sub
 
Last edited:
Top