Develop your offices software 10 of times faster

Share your advanced PureBasic knowledge/code with the community.
User avatar
microdevweb
Enthusiast
Enthusiast
Posts: 179
Joined: Fri Jun 13, 2014 9:38 am
Location: Belgique

Develop your offices software 10 of times faster

Post by microdevweb »

Hello everyone,
Pb_Rad it's a fast development modulate class, it's developped from PureBasic and for PureBasic.

Mark: The windows are generated with dialogs technology

:arrow: Download here

Now this it's a beta version maybe with some bugs but look at result obtained from less 10 minutes and with less 100 code lines. (Mark: The source code its bottom that)

Image

Sorry at all but the comments it's at french because it's my mother tongue

Code: Select all

; TUTO PB_RAB
; Gestion d'un fichier de client simple
;=======================================================================================================================
; NB: les class PB_RAD sont en version béta et non dépourvue de bug

; Nous allons ici créer un fichier client simple
; Ce fichier aura une table liée (localité) qui aura elle même une table liée (pays)
; Le rad va s'occuper de tout
;
; Etape 1:
; Inclusion des fichiers nécessaires
; NB: le projet et le RAD sont dans 2 répertoires RAD et TUTO qui sont eux même dans un répertoire
; pour atteindre le répertoire RAD je vais donc devoir sortir du répertoire TUTO avec ..\  
; a vous de modifier IncludePath selon votre configuration
IncludePath "..\RAD"
XIncludeFile "DB.pbi"       ; Class nécessaire à l'analyse et la gestion de base de données
XIncludeFile "RAD.pbi"      ; Class commune à FicForm et TabForm
XIncludeFile "TBL.pbi"      ; Class pour l'affichage de table exigée par TabForm
XIncludeFile "FicForm.pbi"  ; Gestion des fenêtres de type fiche
XIncludeFile "TabForm.pbi"  ; Gestion  des fenêtre de type table

; Ici on créer l'analyse de notre base de données
; 1) On initialise
DB::Init("DATA","Client.sqlite","","") 
; libre à vous d'utiliser une autre exention que sqlite :)

; 2) Le fichier pays
DB::AddTable("pays","id")
DB::AddColumn("nom","pays",DB::#Type_Text,DB::#Not_Null|DB::#Unique)
; Je veux que le nom soit remplit et un seule pays du même nom

; 2) Localité
DB::AddTable("localite","id")
DB::AddColumn("nom","Localité",DB::#Type_Text,DB::#Not_Null)
DB::AddColumn("code","Code postal",DB::#Type_Text,DB::#Not_Null)
DB::AddColumn("id_pays","Pays",DB::#Type_Link,DB::#Not_Null,"pays","id","nom")
; Je veux une seule localité avec le même pays et le même code postal
; je vais donc ajouté une clé composée
DB::AddCompositeKey("nom"+Chr(10)+"code"+Chr(10)+"id_pays")
; 3) Client
DB::AddTable("client","id")
DB::AddColumn("nom","Nom",DB::#Type_Text,DB::#Not_Null)
DB::AddColumn("adresse","Adresse",DB::#Type_Text,DB::#Not_Null)
DB::AddColumn("id_localite","Localité",DB::#Type_Link,DB::#Not_Null,"localite","id","nom")
DB::AddColumn("telephone","Téléphone",DB::#Type_Phone)
DB::AddColumn("gsm","GSM",DB::#Type_Phone)
DB::AddColumn("remarque","Remarque",DB::#Type_Note)
; Je veux un seul client pour une même localité
; je vais donc ajouté une clé composée
DB::AddCompositeKey("nom"+Chr(10)+"id_localite")

;Je génère maintenant la base de données
DB::Build()

; Création des fenêtres
; Etape 1 : Création des objets 
; --> FicForm
Global.RAD::_FicForm paysFic,localiteFic,clientFic
; --> TabForm
Global.RAD::_TabForm paysTab,LocaliteTab,clientTab
; Etape 2 : Instanciation des objets et création des fenêtres
; ATTENTION l'ordre peut être important en effet les fenêtres de type fiche peuvent
; faire appel à des objet de type table donc ces derniers doivent être créé avant

; Les pays
paysFic=FicForm::New("pays","Nouveau pays","Edition d'un pays")
paysFic\AddGadget("nom")
paysFic\SetSize(300,0,0,0)

paysTab=TabForm::New("pays","Liste des pays",800,600,paysFic)
paysTab\AddColumn("nom",1,TabForm::#ShearchOn)
; Note : la taille de la colonne est en pourcentage
;        les divers flag permette l'affichage d'un bouton de recherche ou filtre (pour les colonne liée)
paysTab\SetOrder("pays.nom")

; Les localités
localiteFic=FicForm::New("localite","Nouvelle localité","Edition d'une localité")
localiteFic\AddGadget("id_pays",0,paysTab)
; paysTab est la fenêztre qui sera ouverte lord du clic sur le bouton
localiteFic\AddGadget("nom")
localiteFic\AddGadget("code")
localiteFic\SetSize(300,0,0,0)

LocaliteTab=TabForm::New("localite","Liste des localités",800,600,localiteFic)
LocaliteTab\AddColumn("id_pays",0.5,TabForm::#FiltersOn)
LocaliteTab\AddColumn("nom",0.5,TabForm::#ShearchOn)
LocaliteTab\SetOrder("pays.nom,localite.nom")

; Les clients
clientFic=FicForm::New("client","Nouveau client","Edition d'un client",2)

; ICI je place 2 colonnes car les téléphones seront l'un  à coté de l'autre
clientFic\AddGadget("nom",2)
clientFic\AddGadget("adresse",2)
clientFic\AddGadget("id_localite",2,LocaliteTab)
clientFic\AddGadget("telephone")
clientFic\AddGadget("gsm")
clientFic\AddGadget("remarque",2)
clientFic\SetSize(300,0,0,0)

clientTab=TabForm::New("client","Liste des clients",800,600,clientFic)
clientTab\AddColumn("id_localite",0.5,TabForm::#FiltersOn)
clientTab\AddColumn("nom",0.5,TabForm::#ShearchOn)
clientTab\SetOrder("localite.nom,client.nom")

; On teste tout ca
; j'ouvre une fenêtre principale
Procedure Exit()
  CloseWindow(0)
  End
EndProcedure
OpenWindow(0,0,0,800,600,"Tuto PB_RAD une simple fichier client",
           #PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MaximizeGadget)
BindEvent(#PB_Event_CloseWindow,@Exit(),0)

clientTab\Open(0)

Repeat
  WaitWindowEvent()
ForEver 
Use Pb 5.73 lst and Windows 10

my mother-language isn't english, in advance excuse my mistakes.
Joris
Addict
Addict
Posts: 885
Joined: Fri Oct 16, 2009 10:12 am
Location: BE

Re: Develop your offices software 10 of times faster

Post by Joris »

Looks nice.

Thanks.
Yeah I know, but keep in mind ... Leonardo da Vinci was also an autodidact.
Post Reply