Problème avec ComboBoxGadget

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
omega
Messages : 633
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Problème avec ComboBoxGadget

Message par omega »

Bonjour MicroDevWeb
Bon tu parle bien d'un combo et getGadgetText() ne fonctionne pas avec un combo, tu dois utilisé GetGadgetItemText(#Gadget,GetGadgetState(#Gadget))
Tu dis bien que : getGadgetText() ne fonctionne pas avec un combo Alors pourquoi dans l'aide de pb il est bien précisé que: GetGadgetText() : Renvoie le contenu texte de la zone visible de la ComboBox.
Toi tu dis que getGadgetText() ne fonctionne pas avec un combo
Fred dit que GetGadgetText() Renvoie le contenu texte de la zone visible de la ComboBox.
Et moi je dis que GetGadgetText() Renvoie (parfois) le contenu texte de la zone visible de la ComboBox et parfois une châine vide !
Alors qui croire? Toi? Moi? ou Fred??
Qui dit mieux?
Win7 (x64) 64 bits Pb 5.72
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: Problème avec ComboBoxGadget

Message par boby »

Getgadgettext fonctionne, ce que te dit microdev c'est "utilise getgadgetitemtext(gadget,getgadgetstate(gadget)), ça t'évitera probablement ce genre de bug".
Avant de poster ta reponse à microdev, as tu seulement testé sa solution ? Pourquoi viens tu demander de l'aide si tu n'écoute pas ce sui t'es proposer juste pour dir "nan C moi Ka rézon" ?
Avatar de l’utilisateur
omega
Messages : 633
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Problème avec ComboBoxGadget

Message par omega »

Bonjour Boby

Pourquoi tu m'obliges à tester une proposition qui ne règle pas mon problème? Entre nous, moi j'ai déjà trouvé la solution à mon problème (je ne suis pas resté bras croisés) mais si je suis là, c'est parce que je veux comprendre pourquoi le GetGadgetText me pose parfois des problème sur combo c'est tout cher Boby. Le GetGadgetItemtext fonctionne très bien pourquoi alors le re-tester? au même titre que GetGadgetState(), C'est bien de faire des propositions de ce genre je vous remercie tous mais ma question n'a pas encore trouvé de réponse. Est ce un bug de PB? Peut être que je suis le premier a avoir découvert ce bug sur la version pb5.62? reste à vérifier... J'ai réglé le problème juste pour que mon client ne reste pas en panne, mais en réalité, je suis un peu déçu car c'est la 1ère fois que je découvre un problème de ce genre... Une commande appliquée à la règle conformément à l'aide de Pb, et qui ne fonctionne pas toujours... C'est bizarre n'est ce pas?
Merci à tous
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Problème avec ComboBoxGadget

Message par GallyHC »

Bonjour,

Franchement, je ne penses pas que ce soit un bug, mais une mauvaise utilisation de ta part. Plusieurs fois, je me suis dit que j'avais trouvais un Bug dans "Purebasic", mais en approfondissant le problème à chaque fois, ce n'été qu'une mauvaise utilisation de ma part.

Avant de dire que cela est un Bug, fait des tests simple avec plusieurs combo est vérifie la véracité de tes propos.

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Problème avec ComboBoxGadget

Message par microdevweb »

Autant pour moi il est en effet bien stipulé dans la doc que GetGadgetText(#Gadget) renvoie dans le cadre d'un combo le text sélectionné. Faut'il pour cela qu'il le soit ce qui ce teste avec GetGadgetState()

Il est certainement plus facile de crier au bug que de regarder ses propres erreurs.

Pour ma part omega, je constate que tu ignore les conseils qui te sont dispenser et restes sur tes positions portant la faute sur PureBasic. Alors oui peut-être que GetGadgetText(#Gadget) est perfectible et je ne saurais te le dire puisque je ne l'utilise jamais pour un combo.

Car la première chose que je ferais toujours est de testé si un article est bel et bien sélectionné avec GetGadgetState qui retourne -1 si aucun article n'est sélectionné.

Maintenant puisque tu est sure de ton code et que la faute incombe à PureBasic d'après tes dires je ne voies pas qui pourra t'aider.

Pour mon compte je répond à l'agressivité par le silence et n'en dirais pas plus.

Bonne chance pour résoudre ton problème :?
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: Problème avec ComboBoxGadget

Message par boby »

Je ne t'oblige à rien, tu viens "demander" de l'aide, on te propose des solutions, tu préfère te braquer et rester sur tes positions.

Un Grand programmeur de ton niveau ne fait certainement pas d'erreur tu as raison, tu es probablement le plus grand utilisateur de pure basic et personne n'a trouvé un bug d'exploitation sur un gadget classique, encore une fois tu as raison, ton bug ne viens donc pas de ton code mais très certainement de pure basic.

Maintenant, je constate que je n'ai très certainement pas le niveau pour t'aider de quelque façon que ce soit, sache donc qu'à l'avenir je m'abstiendrai de t'outrager en essayant de mettre à contribution mon niveau au combien inférieur au tiens lors de tes découvertes majeur de problème lié à purebasic.

Avec mes plus plates et sincères excuse d'avoir offensé l'un des piliers du développement.
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Problème avec ComboBoxGadget

Message par microdevweb »

boby +1
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Problème avec ComboBoxGadget

Message par Ar-S »

Bon vu qu'Omega a semble t il corrigé son erreur tout seul sans poster de code, ça ne sert à rien de débattre pendant 4 ans.
@Omega : La prochaine fois ne poste pas de demande d'aide si tu n'as pas d'exemple concret à proposer. ça fait perdre plus de temps qu'autre chose aux personnes qui souhaitent t'aider.
Si tu n'arrives pas à nous pondre un code exemple reproduisant "le bug", PB n'y est probablement pour rien.
Je laisse cependant le topic ouvert (pour le moment) car j'aimerai tout de même (et je ne dois pas être le seul) que tu nous expliques au moins comment tu as résolu ton soucis.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
omega
Messages : 633
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Problème avec ComboBoxGadget

Message par omega »

Bonjour GallyHc
Franchement, je ne penses pas que ce soit un bug, mais une mauvaise utilisation de ta part. Plusieurs fois, je me suis dit que j'avais trouvais un Bug dans "Purebasic", mais en approfondissant le problème à chaque fois, ce n'été qu'une mauvaise utilisation de ma part. Avant de dire que cela est un Bug, fait des tests simple avec plusieurs combo est vérifie la véracité de tes propos.
Oui, c'est ce que je suis en train de faire, néanmoins je n'ai pas encore déclaré définitivement que c'est un bug de pb, non, j'ai seulement dit (peut être) que c'est un bug. En plus, je n'ai jamais dit que cela ne provienne pas d'une mauvaise utilisation de ma part, je suis en train de chercher, ligne par ligne, si je découvre une erreur de code, je ferais signe.

@Microdevweb
Pour ma part omega, je constate que tu ignore les conseils qui te sont dispenser et restes sur tes positions portant la faute sur PureBasic. Alors oui peut-être que GetGadgetText(#Gadget) est perfectible et je ne saurais te le dire puisque je ne l'utilise jamais pour un combo. Car la première chose que je ferais toujours est de testé si un article est bel et bien sélectionné avec GetGadgetState qui retourne -1 si aucun article n'est sélectionné.
C'est peut être pour cette raison que tu n'as pas eu ce cas. Si tu ne l'as jamais utilisé, c'est sûrement parce que tu n'as pas eu un cas où tu devais l'utiliser. Pour savoir quel est l'article qui a été sélectionné, on utilise forcément l'unique solution qui est: GetGadgetState(), mais pour savoir, à un moment donné, quel est l'article qui est affiché sur la combo, on utilise forcément l'unique solution qui est: GetGadgetText().
Maintenant puisque tu est sure de ton code et que la faute incombe à PureBasic d'après tes dires je ne voies pas qui pourra t'aider.
Je n'ai pas dit cela Microdevweb, je ne suis jamais sûr de mes codes, ni des codes des autres, l'erreur est humaine... La faute incombe à Purebasic ? Je n'en sais rien, pour le moment je cherche la cause exacte de cette erreur inattendue, plus tard on verra..
Pour mon compte je répond à l'agressivité par le silence et n'en dirais pas plus.
Non Microdevweb, tu as fait ce que tu as pu et je te remercie pour ça, je ne pense pas que j'ai été agressif ni avec toi ni avec personne d'autre, au contraire c'est moi qui reçoit des balles gratuites surtout de la part de Boby. Ne prends pas ça du mauvais côté, sinon je te présente mes excuses...
@Ar-s:
Bon vu qu'Omega a semble t il corrigé son erreur tout seul sans poster de code, ça ne sert à rien de débattre pendant 4 ans.
Je n'ai pas corrigé l'erreur Ar-s, sinon j'aurais édité (Résolu), j'ai utilisé une autre méthode, en programmation il y a toujours des astuces et des outils qui peuvent donner le même résultat. Donc, l'erreur existe toujours et la solution n'a pas été trouvée jusqu'à maintenant.
@Omega : La prochaine fois ne poste pas de demande d'aide si tu n'as pas d'exemple concret à proposer. ça fait perdre plus de temps qu'autre chose aux personnes qui souhaitent t'aider.
J'ai déjà expliqué que le code ne peut pas être affiché ici vu son volume qui dépasse la limite... Je suis en train de voir si je pourrais trouver un lien pour qu'il soit téléchargé
Je laisse cependant le topic ouvert (pour le moment) car j'aimerai tout de même (et je ne dois pas être le seul) que tu nous expliques au moins comment tu as résolu ton soucis.
Je n'ai pas attendu midi-14heures pour trouver une solution à mon problème, il y a plus de 20 jours que j'ai découvert ce bug et le code a été corrigé immédiatement après. Si j'ai posté ici ce problème c'est parce que j'ignore toujours pourquoi le GetGadgettext() ne fonctionne pas (toujours) sur un combo. Voici la solution que j'appliquée pour résoudre le problème:
Je reprends la procédure :

Code : Tout sélectionner

Procédure AfficherDoc()
numdoc$=GetgadgetText(#Numdoc) 
Debug numdoc$
...... Affichage du document ...
EndProcédure
J'ai tout simplement supprimé le GetGadgetText() et ça marche

Code : Tout sélectionner

Procédure AfficherDoc()
... Affichage du document ...
EndProcédure
Le numdoc$ existe depuis le moment de sa sélection sur le combo, il est déclaré en Global et donc sa valeur est mémorisée, si j'ai ajouté le GetGadgetText() au niveau de la procedure, c'est juste pour tester s'il y a vraiment un n° de document visible sur la combo, sinon il y a erreur (cela veut dire qu'aucun N° n'a été choisi pour affichage), mais maintenant, je teste seulement si numdoc$ contient qq chose sinon pas d'affichage.1

Je vous remercie
Win7 (x64) 64 bits Pb 5.72
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Problème avec ComboBoxGadget

Message par G-Rom »

Donc pour résumer , tu doutes qu'il y ai un bug , tu penses qu'il est possible que cela vienne de PB.
tu est incapable de fournir un code minimal qui reproduit le comportement cité en 1° topic.
on est en 2eme page et l'on doit, nous, devinez pourquoi le comportement avec un code non fonctionnel plus que minimal...
Excuse moi, mais, t'est pas une flèche toi ?
La flêche a écrit :pour le moment je cherche la cause exacte de cette erreur inattendue
Dans ce cas, soit du poste du code qui marche et qui créer les conditions du comportement cité, soit tu ne créer pas de topic ?
Met toi à notre place 2 minutes...

Bonne soirée.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Problème avec ComboBoxGadget

Message par Ollivier »

#BalanceTonCode
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Problème avec ComboBoxGadget

Message par Ar-S »

J'ai déjà expliqué que le code ne peut pas être affiché ici vu son volume qui dépasse la limite... Je suis en train de voir si je pourrais trouver un lien pour qu'il soit téléchargé
:? Tu fais un zip et tu le postes via
http://dl.free.fr/
https://www.mediafire.com/
et j'en passe...
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Problème avec ComboBoxGadget

Message par microdevweb »

omega a écrit : C'est peut être pour cette raison que tu n'as pas eu ce cas. Si tu ne l'as jamais utilisé, c'est sûrement parce que tu n'as pas eu un cas où tu devais l'utiliser. Pour savoir quel est l'article qui a été sélectionné, on utilise forcément l'unique solution qui est: GetGadgetState(), mais pour savoir, à un moment donné, quel est l'article qui est affiché sur la combo, on utilise forcément l'unique solution qui est: GetGadgetText().
Voila cela m'aura pris 5 minutes avec 34.463 (limite d'un combo) records et aucun bug

Code : Tout sélectionner

Enumeration 
  #MAIN_FORM
  #CB_ITEM
EndEnumeration
; prototypes of functions
Declare fill_cb()
Declare make_form()
Declare Event_cb()
Declare Exit()
Declare Start()
; functions
Procedure fill_cb()
  Protected n
  For n = 1 To 34463
    AddGadgetItem(#CB_ITEM,-1,"Item : "+Str(n))
  Next
EndProcedure

Procedure make_form()
  Protected returnedValue
  returnedValue = OpenWindow(#MAIN_FORM,0,0,800,600,"test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If(returnedValue)
    If ComboBoxGadget(#CB_ITEM,300,300,200,30)
      ; fill data
      fill_cb()
      ; put callback
      BindGadgetEvent(#CB_ITEM,@Event_cb())
    EndIf
    BindEvent(#PB_Event_CloseWindow,@Exit(),#MAIN_FORM)
  EndIf
  ProcedureReturn  returnedValue
EndProcedure

Procedure Event_cb()
  If GetGadgetState(#CB_ITEM)<> -1
    Debug GetGadgetText(#CB_ITEM)
  EndIf
EndProcedure

Procedure Exit()
  End
EndProcedure

Procedure Start()
  If make_form()
    Repeat : WaitWindowEvent() : ForEver
  EndIf
EndProcedure

; start software
Start()



Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: Problème avec ComboBoxGadget

Message par boby »

Code : Tout sélectionner

EnableExplicit
Enumeration
  #CMB
  #TXT1
  #TXT2
EndEnumeration
Declare Fill()
Declare Check()
Declare Thread(a)
If OpenWindow(0,0,0,200,200,"Combo",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  ComboBoxGadget(#CMB,10,10,100,20)
  TextGadget(#TXT1,10,50,100,20,"")
  TextGadget(#TXT2,10,90,100,20,"")
  Fill()
  BindGadgetEvent(#CMB,@Check())
  CreateThread(@Thread(),#NUL)
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

Procedure Fill()
  Protected loop
  For loop = 0 To 10000
    AddGadgetItem(#CMB,-1,"Element"+Loop)
  Next
EndProcedure

Procedure Check()
  If EventType() = #PB_EventType_Change
    SetGadgetState(#CMB,Random(10000))
    SetGadgetText(#TXT1,GetGadgetText(#CMB))
    SetGadgetText(#TXT2,GetGadgetItemText(#CMB,GetGadgetState(#CMB)))
    If Not GetGadgetText(#TXT1) = GetGadgetText(#TXT2)
      Debug "couille !"
    EndIf
  EndIf
EndProcedure
Procedure Thread(a)
  Repeat
    PostEvent(#PB_Event_Gadget,0,#CMB,#PB_EventType_Change)
    Delay(1)
  ForEver
EndProcedure
Je ne comprend, pas chez moi ça veux pas planter :-/
Avatar de l’utilisateur
omega
Messages : 633
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Problème avec ComboBoxGadget

Message par omega »

Bonjour à tous
------------------- IMPORTANT A LIRE ABSOLUMENT -------------------------
A. Tout d'abord je vous remercie tous sans exceptions, même ceux qui pensent que Omega a peut être besoin de voir un psychiatre...
B. Il faut qu'on soit d'accord sur un point important. Pour retrouver l'erreur, il faut faire ceci et dans l'ordre svp:
1. Télécharger le dossier complet ici: http://www.yaninformatique.com/omega.zip
2. Décompresser
3. Lancez le programme omega.pb
4. Allez directement au volet Fiche de stock
5. Sélectionner un produit
6. Changer la date début en commençant par (au moins) 14/08/2018
7. Cliquer sur le bouton <<Afficher>>
8. Regarder la liste affichée, chaque ligne contient le document et son n°, cliquer alors sur un n° de BL (normalement le bl sélectionné sera affiché)
9. Regarder le BL affiché, tout est correct sauf le n° de document qui est vide ou erroné !

Si vous retournez vers la fiche de stock et que vous choisirez un autre BL, ça va marcher ! Donc, le problème concerne seulement le 1er BL sélectionné.

J'espère que ce code va vous aider à trouver une explication, je vous remercie tous à l'avance et vous souhaite beaucoup de succès !

N. B. Je viens de remarquer une chose: le GetGadgetText() et le SetGadgetText() marchent bien sur tous les autres combos du programme à l'exception de la combo Numdoc du Bon de livraison.

Amusez-vous bien

Ehh ! N'oubliez pas de me donner votre avis sur ce petit code de gestion commerciale (je l'ai simplifié pour vous remettre uniquement la fenêtre des mouvements principaux)..

Omega
Dernière modification par omega le mar. 14/août/2018 21:04, modifié 1 fois.
Win7 (x64) 64 bits Pb 5.72
Verrouillé