Développez vos applications de gestions 10 fois plus vite
Publié : lun. 15/mai/2017 14:52
PB_RAD
Téléchargement ICI
Est une RAD développé en PureBasic et pour PureBasic.
Il est développé en Objet et se compose de
6 modules/class
Voici que l'on peut obtenir en moins de 10 minutes et moins de 100 de lignes de code (note le code est en dessous)

Est une RAD développé en PureBasic et pour PureBasic.
Il est développé en Objet et se compose de
6 modules/class
Voici que l'on peut obtenir en moins de 10 minutes et moins de 100 de lignes de code (note le code est en dessous)

Code : Tout sélectionner
; 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