Page 5 sur 8

Re: Problème avec ComboBoxGadget

Publié : jeu. 16/août/2018 14:00
par microdevweb
Ciel est un logiciel de compta, faire un logiciel similaire demanderais de forte connaissance en la matière et doit être approuvé par l'état.

Mais faire un soft de gestion / stock / facturation / caisse etc n'est pas trop difficile.

Re: Problème avec ComboBoxGadget

Publié : jeu. 16/août/2018 14:20
par falsam
Mais faire un soft de gestion / stock / facturation / caisse etc n'est pas trop difficile.
:idea: https://www.economie.gouv.fr/cedef/logi ... -certifies (Loi de finance 2018)

Re: Problème avec ComboBoxGadget

Publié : jeu. 16/août/2018 15:04
par Micoute
Dommage, j'aurais tellement voulu aider

Re: Problème avec ComboBoxGadget

Publié : jeu. 16/août/2018 15:51
par poshu
Y'a 6 ou 7 ans, j'ai bossé sur Ciel. La seule valeur de ce programme, c'est son ubiquité tautologique : les gens l'utilisent parce que les gens l'utilisent. Y'a AUCUN effort d'accessibilité fait dessus, jamais eu le moindre test de UX parce que "si les utilisateurs galèrent avec, ça fait plus d'argent au support"...

Re: Problème avec ComboBoxGadget

Publié : jeu. 16/août/2018 16:36
par G-Rom
Micoute a écrit :Attention, je ne sais pas tout faire, mais ne sommes-nous pas sur un forum d'entraide à la programmation en PureBasic ?
Mouais, et c'est des gars dans mon genre qui vont debugger 10000 lignes de code parce que tu comprends pas pourquoi après un clearitems() que ton gadget est vide...
ca sera sans moi , je ne veut pas embarqué sur le navire "DreamTeam" avec des capitaines de pédalos... hahaha :D
Image
Dommage, j'aurais tellement voulu aider
il y a 4 pages tu pouvais encore...

Re: Problème avec ComboBoxGadget

Publié : jeu. 16/août/2018 19:36
par boby
Omega a écrit :Je suppose que je dois faire chacune de ces fonctions sous forme de module?
Ce que je ferais :

Un fichier Main qui contiens tes includes et ta boucle principla (qui grosso modo devrait être "Repeat : WaitWindowEvent : ForEver".
Un Module "Declare" qui contiendra tes déclaremodule
Un Module "Window" dans lequel tu code l'affichage de ta fenêtre et tu bind tes events
Un Module par "onglet" qui contiens les procédure lié aux events des gadget de son onglet respectif
Un Module Fonction qui regroupe les diversse fonctions pouvant être appelé dans tes onglets
Un Module Database qui lui s'occupe assez logiquement des fonctions ayant accès à ta DB.

Tu ne devrais pas avoir plus de 1000 lignes par include et même si c'est le cas, quelques commentaires et tu devrais t'y retrouver facilement dans ce que tu fais.

Bon courage.

PS : @G-Rom D'un point de vue purement personnel, je trouve ton dernier poste de très mauvais goût et pas mal hors sujet. Personne ne t'as mis un flingue sur la tempe en te disant "DEBUGGGG !!!"
(En espèrant ne pas créer de polémique...)

Re: Problème avec ComboBoxGadget

Publié : jeu. 16/août/2018 19:45
par G-Rom
boby a écrit : PS : @G-Rom D'un point de vue purement personnel, je trouve ton dernier poste de très mauvais goût et pas mal hors sujet. Personne ne t'as mis un flingue sur la tempe en te disant "DEBUGGGG !!!"
(En espèrant ne pas créer de polémique...)
Non..., pas le temps de me prendre la tête, c'est ton point de vue. juste que micoute ma doucement fait rigolé & que j'ai été light tout le topic... j'ai bien le droit de me lâcher un peu ? :D et comme tu dit, personne ne ma obligé à quoi que ce soit.

Pour en revenir à l'auteur du topic, je te tire quand même mon chapeau, tu devrais pouvoir t'en sortir facilement avec tout ce que l'on t'a écrit. car écrire et maintenir un programme comme le tiens, c'est un savoir faire , pas le bon, mais tout de même.
Si tu as des questions , n'hésite pas.

Re: Problème avec ComboBoxGadget

Publié : jeu. 16/août/2018 20:01
par Ollivier
C'est bon c'est débogué. Un petit "Ok" dans le titre alors...

Re: Problème avec ComboBoxGadget

Publié : jeu. 16/août/2018 21:05
par omega
@Falsam
Excactement. Un module par fonction.
C'est le principe que tu appliques à tes bases de données : Une base par table !!!
Un module par fonction: merci pour l'info. Ce que j'applique à mes bases de données n'est pas un principe, c'est une obligation, il y a des cas où j'attribue plusieurs tables dans une seule base de données. J'espère que tu sais pourquoi toi qui a l'habitude de travailler sur les bases de données.
Non mais sérieux : C'est du n'importe quoi cette discussion qui démontre ta méconnaissance des bases de données et des modules voir même ta méconnaissance en gestion de projet de développement informatique.
Méconnaissance en module : oui (et ça s'explique) mais méconnaissance en bases de données : NON car j'ai utilisé ma 1ère base de données il y a plus de 35 ans, en plus 99% de mes logiciels utilisent des bases de données (environ une centaine de logiciels depuis Hp250, en passant par access etc... jusqu'à aujourdhui Sqlite!) Non désolé Falsam mais tu te trompes énormément là dessus. Ce n'est pas parce que je suis débutant en Pb que tu crois ce que tu crois...
Quand on travaille pour des clients on ne peut pas se permettre ce genre de chose.
de quoi s'agit il exactement? Quel genre de choses?
@G-Rom
ouais, et c'est des gars dans mon genre qui vont debugger 10000 lignes de code parce que tu comprends pas pourquoi après un clearitems() que ton gadget est vide...
Ce n'est pas du tout élégant, on dirait que tu n'as jamais fait des erreurs en programmation? si c'est le cas, alors tu es Unique au monde...
@Microdevweb:
Ciel est un logiciel de compta, faire un logiciel similaire demanderais de forte connaissance en la matière et doit être approuvé par l'état.
Pourtant, j'ai développé plusieurs logiciels de comptabilité que des sociétés utilisent officiellement depuis des années et à ce jour. Vu l'ancienneté des programmes, ils ont été développés à l'époque en visual basic et ils sont opérationnels.
@Boby:
Ce que je ferais :
Un fichier Main qui contiens tes includes et ta boucle principla (qui grosso modo devrait être "Repeat : WaitWindowEvent : ForEver".
Un Module "Declare" qui contiendra tes déclaremodule
Un Module "Window" dans lequel tu code l'affichage de ta fenêtre et tu bind tes events
Un Module par "onglet" qui contiens les procédure lié aux events des gadget de son onglet respectif
Un Module Fonction qui regroupe les diversse fonctions pouvant être appelé dans tes onglets
Un Module Database qui lui s'occupe assez logiquement des fonctions ayant accès à ta DB.
Tu ne devrais pas avoir plus de 1000 lignes par include et même si c'est le cas, quelques commentaires et tu devrais t'y retrouver facilement dans ce que tu fais.
Bon courage.
Merci beaucoup Boby, je vais essayer d'appliquer
@G-Rom:
Pour en revenir à l'auteur du topic, je te tire quand même mon chapeau, tu devrais pouvoir t'en sortir facilement avec tout ce que l'on t'a écrit. car écrire et maintenir un programme comme le tiens, c'est un savoir faire , pas le bon, mais tout de même.Si tu as des questions , n'hésite pas.
Merci G-Rom, j'apprécie et je te remercie beaucoup pour ton aide

Re: Problème avec ComboBoxGadget

Publié : jeu. 16/août/2018 21:21
par Ollivier
@omega

Si ton bug est résolu, mets un "Ok" dans le titre.

Et puis t'es au courant qu'il y a du monde pour aider. C'est ça qui est incroyable mais vrai.

Re: Problème avec ComboBoxGadget

Publié : jeu. 16/août/2018 21:40
par omega
Bonsoir Ollivier
Si ton bug est résolu, mets un "Ok" dans le titre. Et puis t'es au courant qu'il y a du monde pour aider. C'est ça qui est incroyable mais vrai.
Le bug n'est pas encore résolu, au contraire, je travaille dessus tous les jours et le problème persiste bizarrement....
La plupart des intervenants m'ont suggéré de changer le plan du code en l'organisant et l'aérant le rendant plus lisible et plus propre (en utilisant les structures, les modules etc...). C'est une bonne chose que j'apprécie beaucoup, d'ailleurs j'ai déjà commencé à travailler dessus... J'ai gardé l'ancien code tel qu'il est (jusqu'à ce que je trouve une explication logique du bug) et j'ai entamé un nouveau code en appliquant les consignes de l'équipe. Dès que je termine ce nouveau code (aéré et propre), je ferais les tests et on verra d'ici là.... ça va quand même me prendre beaucoup de temps...
Tu dis qu'il y a du monde pour m'aider et que cela est incroyable mai vrai??? Qu'est ce qui est incroyable? Moi, personnellement j'ai toujours trouvé de l'aide sur ce forum et la plupart du temps positif et instructif. Donc il y a toujours du monde volontaire ici Dieu merci et je les remercie tous sans exception (même ceux qui ne m'ont pas tout à fait convaincu...)

J'espère trouver le bug bientôt

Re: Problème avec ComboBoxGadget

Publié : jeu. 16/août/2018 22:39
par Ollivier
Ah... Ce n'est pas résolu?

Ben :
1) poste ton code sur le forum (sans image, sans rien, je n'accède à rien d'autre que les codes source ici)
2) dis clairement ce que tu veux
3) éventuellement, décris ce que tu obtiens d'indésirable

Pour te faire patienter (et te montrer que c'est robuste), tu peux aller tenter de casser ce jouet-là.. C'est un ComboBox un peu plus éditable que la normale...

Re: Problème avec ComboBoxGadget

Publié : jeu. 16/août/2018 23:15
par omega
@Ollivier
Ah... Ce n'est pas résolu?
1) poste ton code sur le forum (sans image, sans rien, je n'accède à rien d'autre que les codes source ici)
2) dis clairement ce que tu veux
3) éventuellement, décris ce que tu obtiens d'indésirable
1) Je vais te préparer le code plus simplifié (sans image)
2) J'ai déjà précisé clairement ce que j'ai comme problème (voir post n°1)
3) C'est déjà expliqué plusieurs fois plus haut..
Pour te faire patienter (et te montrer que c'est robuste), tu peux aller tenter de casser ce jouet-là.. C'est un ComboBox un peu plus éditable que la normale...
Non, ce jouet n'a rien à voir avec le mien. Je te conseille de lire tous les posts depuis le début pour comprendre mieux mon problème.

Re: Problème avec ComboBoxGadget

Publié : ven. 17/août/2018 2:17
par Ollivier
Je te demande de méditer sur mon code, et c'est tout.
Notamment cette partie-ci...

Code : Tout sélectionner

;**********************************************************
                                Case #PB_EventType_Change
                                        If gState <> -1
                                                \Item = gState
                                        EndIf
Si t'as des questions, n'hésite pas.

Tchuss

(Code complet)

Code : Tout sélectionner

;*************************************************************************************************************************************************************************************************
; (An idea from Fig)

#ComboKeyEnter = 'GK13'

Structure COMBO
        Window.I
        Gadget.I
        Item.I
        kMenu.I
        kMenuItem.I
        ReturnKey.I
EndStructure

Declare ComboReturnKey()
Declare ComboCallBack()

Procedure ComboCreate(Window, Gadget, kMenuItemDefault = 64000)
        Define *A.COMBO = AllocateMemory(SizeOf(COMBO) )
        With *A
                \Window = Window
                \Gadget = Gadget
                \kMenuItem = kMenuItemDefault
                BindEvent(#PB_Event_Gadget, @ComboCallBack(), \Window, \Gadget)        
                \kMenu = CreateMenu(#PB_Any, WindowID(\Window) )
                BindMenuEvent(\kMenu, \kMenuItem, @ComboReturnKey() )        
        EndWith
        ProcedureReturn *A
EndProcedure

Procedure ComboDelete(Gadget)
        Define *A.COMBO = GetGadgetData(Gadget)
        With *A
                UnbindEvent(#PB_Event_Gadget, @ComboCallBack(), \Window, Gadget)
                UnbindMenuEvent(\kMenu, \kMenuItem, @ComboReturnKey() )        
                FreeMemory(*A)
        EndWith
EndProcedure

Procedure ComboReturnKey()
        PostEvent(#PB_Event_Gadget, GetActiveWindow(), GetActiveGadget(), #PB_EventType_FirstCustomValue, 'GK13')
EndProcedure

Procedure ComboCallBack()
        Define Gadget = EventGadget()
        Define *A.COMBO = GetGadgetData(Gadget)
        Define gState = GetGadgetState(Gadget)
        If *A
                With *A
                        Select EventType()
                                Case #PB_EventType_Focus
                                        AddKeyboardShortcut(\Window, #PB_Shortcut_Return, \kMenuItem)
                                Case #PB_EventType_LostFocus
                                        RemoveKeyboardShortcut(\Window, #PB_Shortcut_Return)
                                        SetGadgetText(Gadget, GetGadgetItemText(Gadget, \Item) )
                                Case #PB_EventType_Change
                                        If gState <> -1
                                                \Item = gState
                                        EndIf
                                Case #PB_EventType_FirstCustomValue
                                        If EventData() = 'GK13'
                                                SetGadgetItemText(Gadget, \Item, GetGadgetText(Gadget) )
                                        EndIf
                        EndSelect
                EndWith
        EndIf
EndProcedure

Procedure ComboGadget(Id, x, y, w, h, kMenuItemDefault = 64000)
        Define Result
        Define Gadget
        Result = ComboBoxGadget(Id, x, y, w, h, #PB_ComboBox_Editable)
        If Id = #PB_Any
                Gadget = Result
        Else
                Gadget = Id
        EndIf
        SetGadgetData(Gadget, ComboCreate(GetActiveWindow(), Gadget, kMenuItemDefault) )   
        ProcedureReturn Result
EndProcedure

Procedure ComboItem(Gadget, Item)
        Define *A.COMBO = GetGadgetData(Gadget)
        If *A
                With *A
                        SetGadgetState(Gadget, Item)
                        \Item = Item
                EndWith
        EndIf
EndProcedure








; Example

If OpenWindow(10, 0, 0, 270, 180, "Combo", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
        ComboGadget(20, 10, 10, 250, 100)
        AddGadgetItem(20, -1, "Option A")
        AddGadgetItem(20, -1, "Option B")
        AddGadgetItem(20, -1, "Option C")
        ComboItem(20, 1)
        ComboGadget(21, 10, 42, 250, 101)
        AddGadgetItem(21, -1, "Week 1")
        AddGadgetItem(21, -1, "Week 2")
        AddGadgetItem(21, -1, "Week 3")
        ComboItem(21, 2)
        Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

Re: Problème avec ComboBoxGadget

Publié : ven. 17/août/2018 20:24
par G-Rom
J'avais pas compris que tu était "un vieux" de la prog. si tu arrives à te mettre à la page , je te tire mon chapeau, comme la dit poshu je ne sais plus ou, c'est dur de changé ses mauvaises habitudes. Ma solution de supprimer ton ClearItems() ne suffit pas ?