I created a formation on udemy platform about oop concepts and Pb (sorry but this formation is in french language)
i put some free tickets for you here
https://www.udemy.com/purebasic-program ... de=MCW_POO
For example i teach you how create a database table, this example is using multi heritage class and also abstract methods
needed code for this example without class code (labels are multilingual)
Code: Select all
; **************************************************************************************************
; AUTHEUR : BIELEN PIERRE
; PROJECT : TAB
; MODULE : TESTE_01.pbi
; **************************************************************************************************
Define flags = #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget
Global.OBJ::DB_TAB myTab
Global.OBJ::DB_TAB_CL_TEXT clName,clSurname
#DB_NAME = "dbTest.db"
Procedure exit()
End
EndProcedure
Procedure createDbTest()
If FileSize(#DB_NAME) = -1
Protected db.OBJ::SQL
db = SQL::new(#DB_NAME)
; création de la table person"
db\update("CREATE TABLE IF NOT EXISTS 'person' ("+
"id INTEGER PRIMARY KEY AUTOINCREMENT,"+
"name TEXT,"+
"surname TEXT)")
Protected req.s = "INSERT INTO person (name,surname) VALUES (?,?)"
Protected i
For i = 1 To 101
db\setString(0,"name_"+Str(i))
db\setString(1,"surname_1"+Str(i))
db\update(req)
Next
db\close()
EndIf
EndProcedure
Procedure resize()
ResizeGadget(0,0,0,WindowWidth(0),WindowHeight(0))
EndProcedure
createDbTest()
OpenWindow(0,0,0,800,600,"TESTE_01",flags)
ContainerGadget(0,0,0,800,600,#PB_Container_Raised)
BindEvent(#PB_Event_CloseWindow,@exit())
BindEvent(#PB_Event_SizeWindow,@resize())
myTab = DB_TAB::new(#DB_NAME,"person")
myTab\setTitle(LB::new("Person list"+Chr(10)+"Liste des personnes"))
clName = myTab\addColumn(DB_TAB_CL_TEXT::new(LB::new("name"+Chr(10)+"prénom"),"name",0.5))
clSurname = myTab\addColumn(DB_TAB_CL_TEXT::new(LB::new("surname"+Chr(10)+"nom"),"surname",0.5))
clName\setSortEnable(#True)
clSurname\setSortEnable(#True)
myTab\build(0)
Repeat : WaitWindowEvent() : ForEver