Page 1 sur 1

Table Gadget personnalisée

Publié : lun. 05/mai/2014 9:14
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

Re: Table Gadget personnalisée

Publié : mar. 06/mai/2014 8:16
par Micoute
J'adore !

Re: Table Gadget personnalisée

Publié : mar. 06/mai/2014 11:17
par microdevweb
Merci, mais il à encore du boulot pour que se soit top

Re: Table Gadget personnalisée

Publié : mar. 06/mai/2014 15:20
par Micoute
C'est déjà pas mal du tout !

Re: Table Gadget personnalisée

Publié : mar. 06/mai/2014 16:39
par MetalOS
Cool c'est multi-plateforme ?

Re: Table Gadget personnalisée

Publié : mer. 07/mai/2014 5:37
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

Re: Table Gadget personnalisée

Publié : mer. 07/mai/2014 11:57
par MetalOS
Quand j'aurai un moment de libre je testerais sur Mac OS X

Re: Table Gadget personnalisée

Publié : mer. 07/mai/2014 14:42
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

Re: Table Gadget personnalisée

Publié : mer. 07/mai/2014 17:30
par MetalOS
Oui je vient de faire le test sur OS X.

Image

Re: Table Gadget personnalisée

Publié : jeu. 08/mai/2014 7:46
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

Re: Table Gadget personnalisée

Publié : jeu. 08/mai/2014 19:58
par MetalOS
C'est déjà un bon début.