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)
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