| [Résolu] Soucis IconListBox de KGF | |
|
|
|
Auteur | Message |
---|
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Sam 31 Oct 2020 - 22:44 | |
| Oui effectivement dans l'absolu c'est mieux. Après c'est comme tu veux Klaus. Si ce n'est pas compliqué à mettre en oeuvre... Merci pour ta disponibilité. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Dim 1 Nov 2020 - 1:36 | |
| En tout cas, je vais analyser cela demain. Je ne pense pas que ce soit très compliqué... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Dim 1 Nov 2020 - 12:52 | |
| Je pense que j'ai réglé le problème. Je viens de mettre une nouvelle version en ligne (via mon site). Le clic droit sur un objet IconListBox est désactivé par défaut. Une nouvelle fonction permet de l'activer. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Dim 1 Nov 2020 - 13:51 | |
| Merci klaus c'est parfait ! Pas contre j'ai toujours ce problème de sélection que je traîne depuis très longtemps... Et je n'arrive pas à trouver la solution. Voila la situation : Normalement dans la liste on doit avoir 2 états : - Désélection avec le fond en gris et le texte en noir (ligne 1) - Sélection avec le fond en rouge et le texte en gras et en blanc (pas d'exemple) Sauf que si je clique très rapidement et un peu n'importe comment sur les lignes du ListBox il m'arrive d'avoir des états différents... Soit le texte de la ligne reste en blanc et fond gris ou le texte en noir et fond rouge. (lignes 2 et 3) Ce qui ne devrait pas arriver ! Il n'y a pas d'incidence sur l'affichage des fenêtres mais c'est un peu ennuyeux... Ci-joint la partie concernant le traitement de la ListBox. Tu pourra constater que les 3 lignes de traitement de KGF se suivent. Y a t il quelque chose que j'ai loupé ? - Spoiler:
- Code:
-
' § - Evenement liste sous_programmes IF LP%=LB_ssp% : ' Gestion de la liste des sous-programmes OFF_USER_EVENT u$=string$(50," ") : ' Initialisation de la variable contenant le nom du sous-programme res%=dll_call3("GetItemOfIconListBox",LB_ssp%,index%,adr(u$)) : ' u$=trim$(u$) : ' Retrait des espaces res%=dll_call2("GetAllSelectedItemsFromIconListBox",LB_ssp%,handle(MEM_ssp%)) : ' t$=LEFT$(ITEM_READ$(MEM_ssp%,COUNT(MEM_ssp%)),1) : ' On récupére le fichier du MEMO_ssp
IF t$="-" : ' Si la chaine est vide (-) res%=dll_call5("SetItemFontColorOfIconListBox",LB_ssp%,index%,0,0,0) : ' res%=dll_call6("SetItemFontAttributesOfIconListBox",LB_ssp%,index%,0,0,0,0) : ' On désactive l'affichage dans la liste res%=dll_call6("ChangeElementIconInIconListBox",LB_ssp%,index%,2,0,0,0) : ' FOR z%=2 TO 10 : ' On boucle sur les fenêtres des sous-programmes IF TRIM$(CAPTION$(PAN_tab%(z%)))=u$ : ' Si le nom de la fenêtre corresponds à u$ t$=LEFT$(u$,LEN(u$)-6)+"."+MID$(u$,LEN(u$)-3,3) : ' Reconstruction du nom du fichier correspondant au sous-programme FILE_SAVE EDI_syn%(z%),dossier_temp$+t$ : ' Sauvegarde du fichier correspondant au sous-programme aff_syn%(z%)=0 : HIDE PAN_tab%(z%) syn_active%=1 : fer_fen%=z% : ' EXIT_FOR : ' On sort de la boucle END_IF : ' Fin NEXT z% : ' Next c%=0 : ' Initialisation de c% FOR b%=2 TO 10 : ' On boucle sur les fenêtres des sous-programmes IF aff_syn%(b%)=1 : c%=c%+1 : EXIT_FOR : END_IF : ' Calcule combien de fenêtres sont affichée NEXT b% : ' Next IF c%=0 THEN desactive_option_ssp() : type_syn%=0 : ' Si aucune fenêtre d'affiché alors init des variables ELSE : ' Sinon FOR b%=2 TO 10 : ' On boucle sur les fenêtres des sous-programmes IF aff_syn%(b%)=1 AND CAPTION$(PAN_tab%(b%))=u$ THEN ON_USER_EVENT evenement : TIMER_ON TIM% : RETURN : ' On teste s'il n'y a pas déja un sous-programme du même nom déjà ouvert NEXT b% : ' Next res%=dll_call5("SetItemFontColorOfIconListBox",LB_ssp%,index%,255,255,255) : ' res%=dll_call6("SetItemFontAttributesOfIconListBox",LB_ssp%,index%,1,0,0,0) : ' On active l'affichage dans la liste res%=dll_call6("ChangeElementIconInIconListBox",LB_ssp%,index%,1,0,0,0) : '
FOR z%=2 TO 10 : ' On boucle sur toutes les fenêtres des sous-programmes IF aff_syn%(z%)=0 : ' Si la fenêtre correspondante n'est pas utilisé (=0) aff_syn%(z%)=1 : SHOW PAN_tab%(z%) : ' On passe le flag d'affichage de la fenêtre z% à 1 et on affiche l'onglet correspondant syn_active%=z% : fer_fen%=z% : ' On initialise le numéro de la fenêtre active CAPTION PAN_tab%(z%),u$ : CAPTION ALP_syn%(z%),u$ : ' On renomme le titre de la fenêtre avec le sous-programme correspondant t$=LEFT$(u$,LEN(u$)-6)+"."+MID$(u$,LEN(u$)-3,3) : ' Reconstruction du nom du fichier correspondant au sous-programme FILE_LOAD EDI_syn%(z%),dossier_temp$+t$ : ' Chargement du fichier correspondant au sous-programme EXIT_FOR : ' On sort de la boucle END_IF : ' Fin NEXT z% : ' Next END_IF : ' Fin
pour terminer voila une copie d'écran d'un affichage correct avec les 2 premières lignes sélectionnées. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Dim 1 Nov 2020 - 14:07 | |
| Je pense que ton problème vient du fait que to bloques bien le USER_EVENT lors de sa réception, tu traites tout et tu le rétablis à la fin. C'est très bien.
Sauf que, si tu cliques trop vite, il se peut que tu cliques sur une autre ligne alors que le traitement du USER_EVENT est encore en cours. Donc, l'évènement ON_CLICK survient, alors que le USER_EVENT correspondant est "avalé". Ceci provoque bien sur un traitement différent sur les lignes cliquées.
Pour l'heure, une seule solution: ne pas cliquer trop vite. Désolé.
Cependant, je vais créer une fonction permettant de désactiver tout clic sur la box ou de le réactiver. Il te suffira alors de désactiver les clicks au début du USER_EVENT et de les réactiver à la fin. Ceci remplacera alors la désactivation du USER_EVENT pour l'objet IconLIstBox. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Dim 1 Nov 2020 - 15:10 | |
| - Klaus a écrit:
- Pour l'heure, une seule solution: ne pas cliquer trop vite. Désolé.
Tout à fait ! - Klaus a écrit:
- Cependant, je vais créer une fonction permettant de désactiver tout clic sur la box ou de le réactiver.
Oui si cela est possible c'est surement la meilleur solution mais il n'y a pas d'urgence ! Merci pour ton retour. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Dim 1 Nov 2020 - 16:24 | |
| J'ai fait une version "temporaire" (sans changement de numéro de version, sans nouvelle documentation). Elle est disponible via mon site. Elle contient une nouvelle fonction: - Code:
-
res% = dll_call2("LockIconListBox",ILB%,allow%) paramètre allow%: 0 = bloquer la box 1 = débloquer la box Donc, tout au début du USER_EVENT pour la box, tu fais: - Code:
-
res% = dll_call2("LockIconListBox",ILB%,0) au lieu du USER_EVENT_OFF et à la fin, tu fais: - Code:
-
res% = dll_call2("LockIconListBox",ILB%,1) au lieu du USER_EVENT_ON,... Tiens-moi au courant du résultat... | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Dim 1 Nov 2020 - 22:55 | |
| Bonsoir Klaus ! Je viens juste de voir ton message. Je testerai demain... Encore merci et Bonne nuit ! | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Lun 2 Nov 2020 - 8:23 | |
| Bonjour Klaus, Après téléchargement de KGF et quelques tests cela ne fonctionne toujours pas. J'ai toujours les mêmes soucis... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Lun 2 Nov 2020 - 9:45 | |
| | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Lun 2 Nov 2020 - 10:00 | |
| J'ai fait une correction supplémentaire. Si tu veux bien essayer... | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Lun 2 Nov 2020 - 13:05 | |
| bonjour Klaus
j'ai essayé mais ça ne fonctionne pas.
Je tenté plusieurs façons de faire et maintenant j'ai des soucis d'affichage même en reprenant le code de base ! Je ne comprends pas ?!
Bon je reprends le travail. je reviens en fin d'après midi pour la suite... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Lun 2 Nov 2020 - 14:50 | |
| Nouvelle tentative à télécharger sur mon site.
Désolé pour ce Stop-And-Go, mais je ne vois guère comment faire autrement. | |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Lun 2 Nov 2020 - 15:44 | |
| @minibug - Code:
-
rem ============================================================================ rem BlockInput de la user32.dll rem The BlockInput function blocks keyboard and mouse input events from reaching rem applications. rem ============================================================================
label event dim ret% button 10 : top 10,100 : left 10,200 : font_bold 10 : caption 10,"Cliquer" font_size 10,18 : width 10,100 : on_click 10,event alpha 20 : top 20, 200 : left 20,20: font_bold 20 : font_size 20,18 dll_on "user32" end rem ============================================================================ Event: ' block the mouse and keyboard input caption 20,"La souris et le clavier sont bloqués" ret% = dll_call1("BlockInput",1) ' wait 5 seconds before unblocking it pause 5000 ' unblock the mouse and keyboard input caption 20,"La souris et le clavier sont à nouveau actifs" ret% = dll_call1("BlockInput",0) return rem ============================================================================
Sinon inactive le form le temps du traitement pour espérer "tuer" les clics parasites | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Lun 2 Nov 2020 - 16:33 | |
| Merci pour l'info, Silverman !
J'ai intégré cela à KGF.dll pour l'objet IconListBox, pendant le temps qu'un clic gauche est traité. La nouvelle version est téléchargeable sur mon site. Je suis curieux de connaître le résultat... | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Lun 2 Nov 2020 - 17:09 | |
| merci à tous les 2 de vous pencher sur mon problème...
la dernière version que j'ai testé dans l'après midi ne fonctionnait pas. je vais donc tenter celle-ci.
je reviens dans quelques minute pour le résultat... | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Lun 2 Nov 2020 - 17:27 | |
| Bon ben ça ne fonctionne toujours pas...
Désolé. | |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Lun 2 Nov 2020 - 17:50 | |
| Donc BlockInput de la user32.dll ne fonctionne pas... J'ai peut-être un autre truc dans ma besace, j'essaye de le retrouver. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Mar 3 Nov 2020 - 0:21 | |
| Non, ce n'est pas forcément que BlockInput ne marche pas.
J'ai passé du temps pour creuser le problème, et je suis arrivé à une conclusion. Je mettrai la sloution en oeuvre demain.
Le problème est le suivant: 1. on reçoit un clic gauche. 2. je fais tous les contrôles nécessaires. 3. le bloque par BlockInput. 4. j'applique la logique interne du traitement du clic gauche pour une IconListBox à l'intérieur de la routine OnClick de KGF.dll. 5. puis, j'envoie le USER_EVENT. 6. finalement, je débloque par BlockInput.
Ca paraissait logique, au premier regard. Sauf que ça ne l'est pas? Ou, du moins, ce n'est logique que pour un traitemnt Panoramic "court" du USERèEVENT. Or, à l'évidence, le traitement en Panoramic est nettement plus long que ma routine OnClick dans KGF.dll nécessite pour terminer son traitement. Du coup, je débloque au niveau de KGF.dll, alors que le USER_EVENT est toujours en cours, et le suivant redéclenche cette routine, et, comme elle n'est pas réentrante, il y a un gros cafouillage.
La solution: Je bloquerai bien comme en (3), maie je ne débloquerai plus comme en (6). Et je créerai une nouvelle fonction que tu appeleras à la fin de ta routine USER_EVENT pour signaler à KGF.dll de débloquer. Ainsi, on synchronerisera les traitements dans la DLL et dans le programme Panoramic, et il ne devrait plus y avoir de problèmes.
Ca viendra demain... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Mar 3 Nov 2020 - 1:53 | |
| C'est fait. Il y a juste 1 ligne à ajouter dans ton code, juste avant le RETURN de ta routine USER_EVENT: - Code:
-
res% = sll_call1("UnblockIconListBox",ILB%) où ILB% représente l'identifiant de ton objet IconListBox. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Mar 3 Nov 2020 - 8:08 | |
| Bonjour Klaus, Je viens de voir les nouvelles avancés que tu as faites cette nuit. J'ai testé mais malheureusement cela ne marche toujours pas. J'ai testé plusieurs choses dans mon code mais rien ne change... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Mar 3 Nov 2020 - 8:23 | |
| En cliquant comme un "sauvage", je constate en effet des effets bizarres. Je vais approfondir cela... | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Mar 3 Nov 2020 - 10:31 | |
| Oui c'est vrai qu'il faut vraiment y aller comme un 'bourrin' comme dirait notre ami Jean Claude... Au passage un petit bonjour à toi Jean Claude. En espérant te revoir bientôt ! | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Mar 3 Nov 2020 - 12:15 | |
| J'ai mis une nouvelle version en ligne dans mon site. Chez moi, je n'arrive plus à produire ce phénomène parasite. Pourrais-tu essayer ? | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [Résolu] Soucis IconListBox de KGF Mar 3 Nov 2020 - 12:29 | |
| j'ai rechargé la dll et testé de nouveau mais toujours pareil chez moi !
Quand tu dis que tu n'arrives plus à produire ce phénomène parasite, est ce que c'est depuis GPP ou depuis tes sources ?
Est ce que je dois laisser les paramètres précédents que tu as donné ou repartir avec le code de base ?
Je me demande d'ailleurs si mon code est bien optimisé de ce point de vu là ? Il faudrait peut être que je sépare les traitements des différents éléments de ON_EVENT avec des sous-programmes.
as tu testé sur GPP pour voir le résultat ? | |
|
| |
Contenu sponsorisé
| Sujet: Re: [Résolu] Soucis IconListBox de KGF | |
| |
|
| |
| [Résolu] Soucis IconListBox de KGF | |
|