Table Gadget personnalisée

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

Table Gadget personnalisée

Message par microdevweb »

Avantages:
Taille des colonnes plus grande que la largeur de table avec ascenseur automatique
Personnalisation des couleurs des ligne pair et impair
Personnalisation des couleurs des titre de colonnes
Personnalisation de la hauteur des lignes
Colonne Visible/invisible/ Editable
L'utilisateur peut redimensionner les colonnes
Vers: 1.02 édition directe dans la table


Fonctionnement:

Code : Tout sélectionner

Table::Create(ID_Table,Title$,X,Y,W,Nb_Line) ;--> pour créer la table
Table::AddColumn(ID_Table,W,ID_Column,Title$,Etat=#EtatVisible,Type=#StringTP) ;-->pour ajouter une colonne Type na actuellement aucune utilité
Table::AddLine(ID_Table,Value$); --> ajouter les data séparer par chr(9)
Table::GetDataTable(ID_Table,ID_Column) ;--> récupérer le data de la colonne de la ligne sélectionnnée 
Table::SetLinePairImpairColor(ID_Table,ColorPair,ColorImpair) ;--> Modifier les couleurs pair et impair
Table::SetColumColor(ID_Table,ColorBack,ColorTxt) ;--> Modifier les couleurs des titre de colonne
Table::SetRibbonColor(ID_Table,ColorBack,ColorTxt) ;--> Modifier la couleur du bandeau de sélection
Table::SetLigneColor(ID_Table,N_line,ColorTxt) ;--> modifier la couleur du texte du ligne
Table::SetLineHeignt(ID_Table,Height) ;--> Modifier la hauteru des ligne
Table::DrawTable(ID_Table,Decalage=0,PremiereLigne=1) --> Dessiner la table Decalage et premiere ligne sont utiliser par les ascenseurs et ne doivent pas être renseigner
Table::GereEvent(Event,ID_Table) ;--> a placer dans la boucle événementielle après  #PB_Event_Gadget
;AJOUT:
Table:GetLineSelected(ID_Table) ;--> retourne le Num de ligne sélectionnée
Table::SelectLine(ID_Table,N_Line) ;--> sélectionner un e ligne
Table::DeleteLine(ID_Table,N_Ligne) ;--> supprimer une ligne 
Exemple :

Code : Tout sélectionner

XIncludeFile "Table.pbi"
Enumeration 
      #Id_Cli
      #Nom_Cli
      #Code_po_Cli
      #Localite_Cli
EndEnumeration
OpenWindow(0,0,0,1200,800,"Teste",#PB_Window_SystemMenu)
Table::Create(0,"Client",50,0,550,5)
Table::AddColumn(0,400,#Id_Cli,"ID",Table::#EtatInvible)
Table::AddColumn(0,300,#Nom_Cli,"Nom")
Table::AddColumn(0,100,#Code_po_Cli,"Code postal")
Table::AddColumn(0,150,#Localite_Cli,"Localite")
Table::AddLine(0,"1"+Chr(9)+"Jean Durant"+Chr(9)+"4800"+Chr(9)+"Ville Noir")
Table::AddLine(0,"2"+Chr(9)+"Pierre Dubon"+Chr(9)+"5000"+Chr(9)+"Trou Perdu")
Table::AddLine(0,"3"+Chr(9)+"Henry Bouda"+Chr(9)+"6000"+Chr(9)+"Rixe en Puit")
Table::AddLine(0,"4"+Chr(9)+"Marcel Dubout"+Chr(9)+"7000"+Chr(9)+"Bahoba")
Table::DrawTable(0)
Repeat
      Event=WaitWindowEvent()
      Select Event
            Case #PB_Event_Gadget
                  Table::GereEvent(EventGadget(),0)
             
      EndSelect
Until Event=#PB_Event_CloseWindow

Vous donnera ceci

Image

Fichier à inclure
1.0
https://www.mediafire.com/?ctjicbc3k9j30yd
1.01
Correction de bug
https://www.mediafire.com/?5566ukxfo85n5ec
1.02
On peut saisir directement dans la table avec un clic droit. La colonne doit avoir le type d'état Table::#EtatActif pour être éditable
https://www.mediafire.com/?uqli77wbfdmg9e1

Image

1.03
Correction de bug
https://www.mediafire.com/?ik6gu6ytgtodx1g

1.04
https://www.mediafire.com/?ye3b98bkv0217d5
Ajout d'une nouvelle ligne si clic sur ligne vide

Code : Tout sélectionner

Table::GetData(ID_Table,N_Line,N_Column) ;--> Donne le data d'une colonne de ligne
Table::GetNewLine(ID_Table);--> Renvoie le numéro de la nouvelle ligne
1.05
https://www.mediafire.com/?nq1c7c8atuoaqdi
Ajout d'une combo box et edition directe dans la table, les item sont séparé par / et l'item actif est pointé par @

Exemple:

Code : Tout sélectionner

XIncludeFile "Table.pbi"
Enumeration 
      #Id_Cli
      #Nom_Cli
      #Code_po_Cli
      #Localite_Cli
EndEnumeration
OpenWindow(0,0,0,1200,800,"Teste",#PB_Window_SystemMenu)
ButtonGadget(1,700,50,100,30,"Delete")
Table::Create(0,"Client",50,0,550,10)
Table::AddColumn(0,400,#Id_Cli,"ID",Table::#EtatInvible)
Table::AddColumn(0,300,#Nom_Cli,"Nom",Table::#EtatActif)
Table::AddColumn(0,100,#Code_po_Cli,"Code postal",Table::#EtatActif,Table::#ComboTP)
Table::AddColumn(0,150,#Localite_Cli,"Localite",Table::#EtatActif)
Table::AddLine(0,"1"+Chr(9)+"Jean Durant"+Chr(9)+"60/70/80@/90"+Chr(9)+"Ville Noir")
Table::AddLine(0,"2"+Chr(9)+"Pierre Dubon"+Chr(9)+"60/70/80/90@"+Chr(9)+"Trou Perdu")
Table::AddLine(0,"3"+Chr(9)+"Henry Bouda"+Chr(9)+"60@/70/80/90"+Chr(9)+"Rixe en Puit")
Table::AddLine(0,"4"+Chr(9)+"Marcel Dubout"+Chr(9)+"60/70@/80/90"+Chr(9)+"Bahoba")
Table::SelectLine(0,1)
Table::DrawTable(0)
Repeat
      Global N_Ligne
      Event=WaitWindowEvent()
      Select Event
            Case #PB_Event_Gadget
                  Table::GereEvent(EventGadget(),0)
                  Select EventGadget()
                        Case 1
                              N_Ligne=Table::GetLineSelected(0)
                              If N_Ligne<>-1
                                    Debug Table::GetData(0,N_Ligne,#Nom_Cli)
                              EndIf
                  EndSelect
      EndSelect
Until Event=#PB_Event_CloseWindow
Le résultat:

Image
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Table Gadget personnalisée

Message par Micoute »

J'adore !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Table Gadget personnalisée

Message par microdevweb »

Merci, mais il à encore du boulot pour que se soit top
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Table Gadget personnalisée

Message par Micoute »

C'est déjà pas mal du tout !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Table Gadget personnalisée

Message par MetalOS »

Cool c'est multi-plateforme ?
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Table Gadget personnalisée

Message par microdevweb »

Bonjour metaios,
Je suis sur windows 7, je n'ai pas tester sur d'autre plateforme, mais aucune appi ou fonction spécifique n'à été utilisée, donc se devrait l'être
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Table Gadget personnalisée

Message par MetalOS »

Quand j'aurai un moment de libre je testerais sur Mac OS X
Avatar de l’utilisateur
Mindphazer
Messages : 639
Inscription : mer. 24/août/2005 10:42

Re: Table Gadget personnalisée

Message par Mindphazer »

Ca fonctionne sous OS X
Avec un problème de redraw lors du redimentionnement des colonnes, l'encadrement extérieur ne s'efface pas :
Image
Bureau : Win10 64bits
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Table Gadget personnalisée

Message par MetalOS »

Oui je vient de faire le test sur OS X.

Image
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Table Gadget personnalisée

Message par microdevweb »

Je dois encore faire de nombreuses modifs, mais cela fait partie d'un projet plus ambitieux. Je développe actuellement un IDE qui devrai fonctionner comme suit
Création d'un projet
Création analyse type merise
Création des fenêtres manuellement et auto suivant l'analyse, avec de nouveaux gadget comme cette table champs de saisie avec libellé ect
Code direct dans le gadget suivant sont type événementiel
Editeur d'état imprimer
Génération du code PB
Gros projet donc pas pour demain...
Voila ou j'en suit
Image
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Table Gadget personnalisée

Message par MetalOS »

C'est déjà un bon début.
Répondre