SpeDev (le retour)

Programmation d'applications complexes
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

SpeDev (le retour)

Message par microdevweb »

Image

Cela part sur un autre concept avec utilisation de Dll

Exemple de code pour une gestion de client/produit (197 lignes seulement)

Code : Tout sélectionner

XIncludeFile "FicForm_Include.pbi"
XIncludeFile "DB_Include.pbi"
XIncludeFile "TabForm_Include.pbi"
XIncludeFile "Tbl_Include.pbi"
Enumeration 
  #MainForm
  #FicPays
  #FicLocalite
  #FicClient
  #FicCategorie
  #FicTva
  #FicProduit
  #TabPays
  #TabLocalite
  #TabClient
  #TabCategorie
  #TabTva
  #TabProduit
EndEnumeration
Enumeration 
  #MainMenu
  #M_Pays
  #M_Localite
  #M_Client
  #M_Categorie
  #M_Tva
  #M_Produit
EndEnumeration
Procedure Exit()
  CloseWindow(#MainForm)
  End
EndProcedure
Procedure myEventMenu()
  Select EventMenu()
    Case #M_Pays
      TabForm_Open(#TabPays,#False,-1,#MainForm)
    Case #M_Localite
      TabForm_Open(#TabLocalite,#False,-1,#MainForm)
    Case #M_Client
      TabForm_Open(#TabClient,#False,-1,#MainForm)
    Case #M_Categorie
      TabForm_Open(#TabCategorie,#False,-1,#MainForm)
    Case #M_Tva
      TabForm_Open(#TabTva,#False,-1,#MainForm)
    Case #M_Produit
      TabForm_Open(#TabProduit,#False,-1,#MainForm)
  EndSelect
EndProcedure
Procedure MakeDb()
  DB_Init("DB_Facture.sqlite","","")
  DB_AddTable("client","id")
  DB_AddColumn("nom","Nom",#Db_Type_Text,#DB_Not_Null|#DB_Unique)
  DB_AddColumn("adresse","Adresse",#Db_Type_Text)
  DB_AddColumn("id_localite","Localité",#Db_Type_Link)
  DB_SetLink("localite","id","nom",#DB_1N_01)
  
  DB_AddTable("localite","id")
  DB_AddColumn("nom","Localité",#Db_Type_Text,#DB_Not_Null|#DB_Unique)
  DB_AddColumn("code","Code postal",#Db_Type_Text,#DB_Not_Null|#DB_Unique)
  DB_AddColumn("id_pays","Pays",#Db_Type_Link)
  DB_SetLink("pays","id","nom",#DB_1N_01)
  
  DB_AddTable("pays","id")
  DB_AddColumn("nom","Pays",#Db_Type_Text,#DB_Not_Null|#DB_Unique)
  
  DB_AddTable("categorie","id")
  DB_AddColumn("nom","Catégorie",#Db_Type_Text,#DB_Not_Null|#DB_Unique)
  
  DB_AddTable("tva","id")
  DB_AddColumn("nom","Taux TVA",#Db_Type_Text,#DB_Not_Null|#DB_Unique)
  DB_AddColumn("taux","Valeur",#Db_Type_Float,#DB_Not_Null)
  
  DB_AddTable("produit","id")
  DB_AddColumn("nom","Nom Produit",#Db_Type_Text,#DB_Not_Null|#DB_Unique)
  DB_AddColumn("id_categorie","Catégorie",#Db_Type_Link)
  DB_SetLink("categorie","id","nom",#DB_1N_01)
  DB_AddColumn("id_tva","Taux TVA",#Db_Type_Link)
  DB_SetLink("tva","id","nom",#DB_1N_01)
  DB_AddColumn("pa","Prix d' Achat",#Db_Type_Float)
  DB_AddColumn("pv","Prix de vente",#Db_Type_Float)
  
  DB_Build()
EndProcedure
Procedure FicPays()
  FicForm_Init(#FicPays,"pays","nom","Nouveau pays","Edition d'un pays",400,0,0)
EndProcedure
Procedure FicLocalite()
  Protected field.s
  field="nom"+Chr(10)+"code"+Chr(10)+"id_pays"
  FicForm_Init(#FicLocalite,"localite",field,"Nouvelle localité","Edition d'une localité",400,0,0)
  FicForm_SetLinkButton(#FicLocalite,"id_pays",#TabPays)
EndProcedure
Procedure FicClient()
  Protected field.s
  field="nom"+Chr(10)+"adresse"+Chr(10)+"id_localite"
  FicForm_Init(#FicClient,"client",field,"Nouveau client","Edition d'un client",400,0,0)
  FicForm_SetLinkButton(#FicClient,"id_localite",#TabLocalite)
EndProcedure
Procedure FicCategorie()
  Protected field.s
  field="nom"
  FicForm_Init(#FicCategorie,"categorie",field,"Nouvelle catégorie","Edition d'une catégorie",400,0,0)
EndProcedure
Procedure FicTva()
  Protected field.s
  field="nom"+Chr(10)+"taux"
  FicForm_Init(#FicTva,"tva",field,"Nouveau taux de TVA","Edition d'un taux de TVA",400,0,0)
EndProcedure
Procedure FicProduit()
  Protected field.s
  field="id_categorie"+Chr(10)+"nom"+Chr(10)+"id_tva"+Chr(10)+"pa"+Chr(10)+"pv"
  FicForm_Init(#FicProduit,"produit",field,"Nouveau Produit","Edition d'un Produit",400,0,0)
  FicForm_SetLinkButton(#FicProduit,"id_categorie",#TabCategorie)
  FicForm_SetLinkButton(#FicProduit,"id_tva",#TabTva)
EndProcedure

Procedure TabPays()
  Protected TabW
  TabForm_Init(#TabPays,"pays",#FicPays,"Liste des pays",400,600,0)
  TabForm_SetOrder("nom ASC")
  TabW=TabForm_GetTableWith(#TabPays)
  TabForm_AddColumn("nom",TabW,#Tbl_ShearchOn)
EndProcedure
Procedure TabLocalite()
  Protected TabW
  TabForm_Init(#TabLocalite,"localite",#FicLocalite,"Liste des localitées",800,600,0)
  TabForm_SetOrder("nom ASC")
  TabW=TabForm_GetTableWith(#TabLocalite)
  TabForm_AddColumn("id_pays",TabW/3,#Tbl_FiltersOn)
  TabForm_AddColumn("nom",TabW/3,#Tbl_ShearchOn)
  TabForm_AddColumn("code",TabW/3)
EndProcedure
Procedure TabClient()
  Protected TabW
  TabForm_Init(#TabClient,"client",#FicClient,"Liste des clients",800,600,0)
  TabForm_SetOrder("client.nom ASC")
  TabW=TabForm_GetTableWith(#TabClient)
  TabForm_AddColumn("id_localite",TabW * 0.4,#Tbl_FiltersOn)
  TabForm_AddColumn("nom",TabW * 0.6,#Tbl_ShearchOn)
EndProcedure
Procedure TabCategorie()
  Protected TabW
  TabForm_Init(#TabCategorie,"categorie",#FicCategorie,"Liste des catégories",800,300,0)
  TabW=TabForm_GetTableWith(#TabCategorie)
  TabForm_AddColumn("nom",TabW ,#Tbl_ShearchOn)
EndProcedure
Procedure TabTva()
  Protected TabW
  TabForm_Init(#TabTva,"tva",#FicTva,"Liste des taux de TVA",800,600,0)
  TabW=TabForm_GetTableWith(#TabTva)
  TabForm_AddColumn("nom",TabW * 0.5 ,#Tbl_ShearchOn)
  TabForm_AddColumn("taux",TabW * 0.5,#Tbl_AlignToRight)
  TabForm_FixNumberDecimal(2)
EndProcedure
Procedure TabProduit()
  Protected TabW
  TabForm_Init(#TabProduit,"produit",#FicProduit,"Liste des produit",800,600,0)
  TabForm_SetOrder("categorie.nom ASC,produit.nom ASC")
  TabW=TabForm_GetTableWith(#TabProduit)
  TabForm_AddColumn("id_categorie",TabW * 0.5 ,#Tbl_FiltersOn)
  TabForm_AddColumn("nom",TabW * 0.5,#Tbl_ShearchOn)
EndProcedure

Procedure OpenMainForm()
  OpenWindow(#MainForm,0,0,800,600,"Facturation",#PB_Window_SystemMenu|#PB_Window_Maximize)
  CreateMenu(#MainMenu,WindowID(#MainForm))
  MenuTitle("Fichier")
  MenuItem(#M_Pays,"Pays")
  MenuItem(#M_Localite,"Localités")
  MenuItem(#M_Client,"Clients")
  MenuItem(#M_Categorie,"Catégorie")
  MenuItem(#M_Tva,"Taux de TVA")
  MenuItem(#M_Produit,"Produit")
  BindEvent(#PB_Event_CloseWindow,@Exit(),#MainForm)
  BindEvent(#PB_Event_Menu,@myEventMenu(),#MainForm)
EndProcedure

MakeDb()
FicPays()
FicLocalite()
FicClient()
FicCategorie()
FicTva()
FicProduit()

TabPays()
TabLocalite()
TabClient()
TabCategorie()
TabTva()
TabProduit()

OpenMainForm()

Repeat
  WaitWindowEvent()
ForEver 
Le zip ICI :arrow: https://github.com/microdevweb/SpeDev/a ... master.zip

Contenu du zip
  • DB.dll
  • DB.lib
  • DB_Include.pbi
  • FicForm.dll
  • FicForm.lib
  • FicForm_Include.pbi
  • TabForm.dll
  • TabForm.lib
  • TabForm_Include.pbi
  • Tbl.dll
  • Tbl.lib
  • Tbl_Include.pbi
Remarques:
  • La doc est dans le fichier NomDll_include.pbi
  • A l’exception de la dll TBL, les dll sont en cours de développement
  • Seul les Dll sont à fournir en plus de votre exécutable à l'utilisateur final
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: SpeDev (le retour)

Message par Kwai chang caine »

J'ai une erreur; il trouve pas "TabForm_SetOrder()" :|
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: SpeDev (le retour)

Message par microdevweb »

@Kwai chang caine,

Oui je n'avais pas mis à jour le zip 8O , cela doit être en ordre maintenant.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Répondre