FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Je teste PANORAMIC V 1 beta 1
[Résolu] Soucis IconListBox de KGF - Page 3 Emptypar papydall Aujourd'hui à 2:48

» bouton dans autre form que 0
[Résolu] Soucis IconListBox de KGF - Page 3 Emptypar leclode Hier à 13:59

» KGF_dll - nouvelles versions
[Résolu] Soucis IconListBox de KGF - Page 3 Emptypar Klaus Hier à 11:41

» Gestion d'un système client-serveur.
[Résolu] Soucis IconListBox de KGF - Page 3 Emptypar Klaus Hier à 10:23

» PANORAMIC V 1
[Résolu] Soucis IconListBox de KGF - Page 3 Emptypar papydall Sam 4 Mai 2024 - 3:43

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
[Résolu] Soucis IconListBox de KGF - Page 3 Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
[Résolu] Soucis IconListBox de KGF - Page 3 Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
[Résolu] Soucis IconListBox de KGF - Page 3 Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
[Résolu] Soucis IconListBox de KGF - Page 3 Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
[Résolu] Soucis IconListBox de KGF - Page 3 Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
[Résolu] Soucis IconListBox de KGF - Page 3 Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
[Résolu] Soucis IconListBox de KGF - Page 3 Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
[Résolu] Soucis IconListBox de KGF - Page 3 Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
[Résolu] Soucis IconListBox de KGF - Page 3 Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
[Résolu] Soucis IconListBox de KGF - Page 3 Emptypar jjn4 Lun 22 Avr 2024 - 13:43

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-45%
Le deal à ne pas rater :
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre 14 couverts – ...
339 € 622 €
Voir le deal

 

 [Résolu] Soucis IconListBox de KGF

Aller en bas 
3 participants
Aller à la page : Précédent  1, 2, 3
AuteurMessage
Klaus

Klaus


Nombre de messages : 12289
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

[Résolu] Soucis IconListBox de KGF - Page 3 Empty
MessageSujet: Re: [Résolu] Soucis IconListBox de KGF   [Résolu] Soucis IconListBox de KGF - Page 3 EmptyMar 3 Nov 2020 - 12:49

Normalement, il suffit de placer
Code:
res% = dll_call1("UnblockIconListBox",LB_ssp%)
juste avant le RETURN de ta routine USER_EVENT. LB_ssp est l'identifiant de ta IconListBox.

Je teste avec ceci (ça vient de chez toi):
Code:
' test_Minibug_IconListBox.bas

label UserEvent

dim res%, no%, PAN_menu%(10), for%(10), t$, CONT_ssp%, IL%, chemin$, LB_ssp%
dim txt$, i%, cnt%, index%, LP%, WP%

for%(0) = 0
no% = 17
chemin$ = ""
cnt% = 0
full_space 0

dll_on "KGF.dll"
on_user_event UserEvent

      PANEL no% : HIDE no% : PARENT no%,FOR%(0) : TOP no%,52 : COLOR no%,60,60,60 : show no%                                                : ' Création du MENU OBJETS dans la fenetre principale
        WIDTH no%,WIDTH_CLIENT(FOR%(0))-1 : HEIGHT no%,HEIGHT_CLIENT(FOR%(0))-52 : PAN_menu%(3)=no% : no%=no%+1                  : '     

        CONTAINER no% : PARENT no%,PAN_menu%(3) : LEFT no%,8 : TOP no%,2 : WIDTH no%,257 : HEIGHT no%,572                        : ' Positionnement des CONTAINERS d'affichage des SSP
            COLOR no%,60,60,60 : FONT_COLOR no%,230,230,230  : FONT_NAME no%,"Segoe UI" : FONT_SIZE no%,12                        : ' Mep couleur, police, taille et titre des CONTAINERs
            ' datas()
            t$="  "+t$+"  "                                                                                              : ' Lecture des informations CONTAINERs et HINTs
            CAPTION no%,t$ : CONT_ssp%=no% : no%=no%+1
                                                                       
            '  --------------- CREATION DE L'IMAGELIST ---------------
            IL%=DLL_CALL2("CreateImageList",15,15)                                                                                : '
'            t$=chemin$+"\ilb\gestssp.ilb"                                                                                          : '                                   
            t$=chemin$+"KGF.ilb"                                                                                          : '                                   
            res%=DLL_CALL2("LoadImageList",IL%,adr(t$))                                                                            : '
 
            ' --------------- CREATION DU LISTBOX (liste des sous-programmes) ----------------
            res%=dll_call1("SetMainFormHandle",handle(0))                                                                          : '
            LB_ssp%=DLL_CALL3("CreateIconListBox",handle(CONT_ssp%),IL%,1)                                                        : '
                                                                                                                               
            t$="Segoe UI" : res%=DLL_CALL3("SetDefaultFontOfIconListBox",LB_ssp%,ADR(t$),10)                                      : '
            res%=DLL_CALL5("LocateIconListBox",LB_ssp%,5,20,(WIDTH_CLIENT(CONT_ssp%)-10),(HEIGHT_CLIENT(CONT_ssp%)-25))            : '
            res%=dll_call2("OptionsForIconListBox",LB_ssp%,1)                                                                      : '
            res%=dll_call2("SetMultiSelectionLimitOfIconListBox",LB_ssp%,9)                                                        : '
            res%=dll_call4("SetColorsForIconListBox",LB_ssp%,HEX("909090"),HEX("000000"),HEX("000090")) 
           
for i%=1 to 20           
  txt$ = "aaaaaaaaaaaaaaaa "+str$(i%)           
  res% = dll_call6("AddItemToIconListBox",LB_ssp%,adr(txt$),17, 17, 18, 0)
next i%
             
end       

UserEvent:
  LP% = user_event_lparam
  WP% = user_event_wparam
  if bin_and(WP%,hex("FF000000"))=hex("0A000000")  : ' un IconListBox ?
    if bin_and(WP%,hex("00FF0000"))<>hex("00010000") then return  : ' pas un clic dans une ligne ?
    if LP%<>LB_ssp% then return                                                          : ' pas le ICB attendu ?
    index% =  bin_and(WP%,hex("0000FFFF"))
   
    off_user_event        : ' *********** désactiver les USER_EVENT en cas de longs traitements
   
    cnt% = cnt% + 1
    caption 0,"Click no "+str$(cnt%)+" dans ligne "+str$(index%)                                : ' récupérer le numéro de la ligne cliquée
   
    res% = dll_call1("UnblockIconListBox",LB_ssp%)
    on_user_event UserEvent    : ' *********** résactiver les USER_EVENT
   
    return
  end_if 
  return
                                                                              : '
                                  :

Là, tu peux cliquer comme tu veux - tout marche bien.

Maintenant, je n'ai pas franchement la disponibilité pour installer GPP, en comprendre le fonctionnement et tester en grandeur nature. Tu peux cependant faire la chose suivante: dans ta routine USER_EVENT, tu peux désactiver l'essentiel du traitement en ne gardant que le squelette (désactiver tout ce qui est après le OFF_USER_EVENT et avant l'appel de la fonction UnblockIconListBox) en insérant trois lignes, à l'image de dl'example ci-dessous
Code:
UserEvent:
  LP% = user_event_lparam
  WP% = user_event_wparam
  if bin_and(WP%,hex("FF000000"))=hex("0A000000")  : ' un IconListBox ?
    if bin_and(WP%,hex("00FF0000"))<>hex("00010000") then return  : ' pas un clic dans une ligne ?
    if LP%<>LB_ssp% then return                                                          : ' pas le ICB attendu ?
    index% =  bin_and(WP%,hex("0000FFFF"))
   
    off_user_event        : ' *********** désactiver les USER_EVENT en cas de longs traitements
if 1=2    : ' ####################### pour désactiver la suite
    cnt% = cnt% + 1
    caption 0,"Click no "+str$(cnt%)+" dans ligne "+str$(index%)                                : ' récupérer le numéro de la ligne cliquée
end_if    : ' ####################### fin de la désactivation
pause 500    : ' ##################### simuler un traitement d'une certaine longueur...
    res% = dll_call1("UnblockIconListBox",LB_ssp%)
    on_user_event UserEvent    : ' *********** résactiver les USER_EVENT
   
    return
  end_if 
  return


Là, s'il y a encore un problème d'affichage, ce sea alors lié à la DLL. Sinon, il faudrait voir dans ton code...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

[Résolu] Soucis IconListBox de KGF - Page 3 Empty
MessageSujet: Re: [Résolu] Soucis IconListBox de KGF   [Résolu] Soucis IconListBox de KGF - Page 3 EmptyMar 3 Nov 2020 - 12:53

Ok Klaus,

je regarde ça tout à l'heure.
Là je dois repartir...
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


Nombre de messages : 12289
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

[Résolu] Soucis IconListBox de KGF - Page 3 Empty
MessageSujet: Re: [Résolu] Soucis IconListBox de KGF   [Résolu] Soucis IconListBox de KGF - Page 3 EmptyMar 3 Nov 2020 - 13:11

Moi aussi. La tournée des médecins...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

[Résolu] Soucis IconListBox de KGF - Page 3 Empty
MessageSujet: Re: [Résolu] Soucis IconListBox de KGF   [Résolu] Soucis IconListBox de KGF - Page 3 EmptyMar 3 Nov 2020 - 17:26

Ok Klaus, ton test est plutôt concluant chez moi...

Le problème  c'est que je rajoute un traitement quand une ligne est sélectionnée :

res%=dll_call5("SetItemFontColorOfIconListBox",LB_ssp%,index%,255,255,255)                                                      res%=dll_call6("SetItemFontAttributesOfIconListBox",LB_ssp%,index%,1,0,0,0)
res%=dll_call6("ChangeElementIconInIconListBox",LB_ssp%,index%,1,0,0,0)  

Et quand une ligne est désélectionnée :

res%=dll_call5("SetItemFontColorOfIconListBox",LB_ssp%,index%,0,0,0)
res%=dll_call6("SetItemFontAttributesOfIconListBox",LB_ssp%,index%,0,0,0,0)
res%=dll_call6("ChangeElementIconInIconListBox",LB_ssp%,index%,2,0,0,0)

Et j'ai bien l'impression que c'est dans ce cas de figure qu'il y a un soucis.

En plus j'ai essayé de rajouter ces lignes dans ton exemple (repris de mon code).
Mais j'ai un décalage dans le traitement ?!

Du coup je n'ai pas pu tester.

Voici le code avec mes rajouts :

Code:


' test_Minibug_IconListBox.bas

label UserEvent

dim res%, no%, PAN_menu%(10), for%(10), t$, CONT_ssp%, IL%, chemin$, LB_ssp%
dim txt$, i%, cnt%, index%, LP%, WP%

DIM u$ ,MEM_ssp%

for%(0) = 0
no% = 17
chemin$ = ""
cnt% = 0
full_space 0

dll_on "D:\PROGRAMMATION\GPP2\dll\KGF.dll"
on_user_event UserEvent

      PANEL no% : HIDE no% : PARENT no%,FOR%(0) : TOP no%,52 : COLOR no%,60,60,60 : show no%                                                : ' Création du MENU OBJETS dans la fenetre principale
        WIDTH no%,WIDTH_CLIENT(FOR%(0))-1 : HEIGHT no%,HEIGHT_CLIENT(FOR%(0))-52 : PAN_menu%(3)=no% : no%=no%+1                  : '    

        CONTAINER no% : PARENT no%,PAN_menu%(3) : LEFT no%,8 : TOP no%,2 : WIDTH no%,257 : HEIGHT no%,572                        : ' Positionnement des CONTAINERS d'affichage des SSP
            COLOR no%,60,60,60 : FONT_COLOR no%,230,230,230  : FONT_NAME no%,"Segoe UI" : FONT_SIZE no%,12                         : ' Mep couleur, police, taille et titre des CONTAINERs
            t$="  "+t$+"  "  : CAPTION no%,t$ : CONT_ssp%=no% : no%=no%+1
            
         ' MEMO des sous-programmes                                                                                                                      
         MEMO no% : HEIGHT no%,200 : HIDE no% : MEM_ssp%=no% : no%=no%+1        : '

                                                                      
            '  --------------- CREATION DE L'IMAGELIST ---------------
            IL%=DLL_CALL2("CreateImageList",15,15)                                                                                : '
'            t$=chemin$+"\ilb\gestssp.ilb"                                                                                          : '                                  
            t$=chemin$+"KGF.ilb"                                                                                          : '                                  
            res%=DLL_CALL2("LoadImageList",IL%,adr(t$))                                                                            : '
 
            ' --------------- CREATION DU LISTBOX (liste des sous-programmes) ----------------
            res%=dll_call1("SetMainFormHandle",handle(0))                                                                          : '
            LB_ssp%=DLL_CALL3("CreateIconListBox",handle(CONT_ssp%),IL%,1)                                                        : '
                                                                                                                              
            t$="Segoe UI" : res%=DLL_CALL3("SetDefaultFontOfIconListBox",LB_ssp%,ADR(t$),10)                                      : '
            res%=DLL_CALL5("LocateIconListBox",LB_ssp%,5,20,(WIDTH_CLIENT(CONT_ssp%)-10),(HEIGHT_CLIENT(CONT_ssp%)-25))            : '
            res%=dll_call2("OptionsForIconListBox",LB_ssp%,1)                                                                      : '
            res%=dll_call2("SetMultiSelectionLimitOfIconListBox",LB_ssp%,9)                                                        : '
            res%=dll_call4("SetColorsForIconListBox",LB_ssp%,HEX("909090"),HEX("000000"),HEX("000090"))
          
for i%=1 to 20          
  txt$ = "aaaaaaaaaaaaaaaa "+str$(i%)          
  res% = dll_call6("AddItemToIconListBox",LB_ssp%,adr(txt$),17, 17, 18, 0)
next i%
            
end      

UserEvent:
  LP% = user_event_lparam
  WP% = user_event_wparam
  if bin_and(WP%,hex("FF000000"))=hex("0A000000")  : ' un IconListBox ?
    if bin_and(WP%,hex("00FF0000"))<>hex("00010000") then return  : ' pas un clic dans une ligne ?
    if LP%<>LB_ssp% then return                                                          : ' pas le ICB attendu ?
    index% =  bin_and(WP%,hex("0000FFFF"))
  
    off_user_event        : ' *********** désactiver les USER_EVENT en cas de longs traitements                
                
                
         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)                                                : '  
         ELSE        
            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)  
        END_IF
  
  
  
  
    cnt% = cnt% + 1
    caption 0,"Click no "+str$(cnt%)+" dans ligne "+str$(index%)+"  "+t$                                : ' récupérer le numéro de la ligne cliquée
  
    res% = dll_call1("UnblockIconListBox",LB_ssp%)
    on_user_event UserEvent    : ' *********** résactiver les USER_EVENT
  
    return
  end_if
  return

Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


Nombre de messages : 12289
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

[Résolu] Soucis IconListBox de KGF - Page 3 Empty
MessageSujet: Re: [Résolu] Soucis IconListBox de KGF   [Résolu] Soucis IconListBox de KGF - Page 3 EmptyMar 3 Nov 2020 - 17:44

Ok. J'ai pris ton code et je vais m'amuser avec...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12289
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

[Résolu] Soucis IconListBox de KGF - Page 3 Empty
MessageSujet: Re: [Résolu] Soucis IconListBox de KGF   [Résolu] Soucis IconListBox de KGF - Page 3 EmptyMar 3 Nov 2020 - 17:56

Ben... je ne vois pas où est le problème.

Je peux cliquer à n'importe quelle vitesse, n'importe où, ça se passe bien. Une ligne nouvellement sélectionnée change de couleur et la police est blanche, une ligne désélectionnée reprend sa couleur initiale et la police est noire. ET, comme il est indiqué par
Code:
            res%=dll_call2("SetMultiSelectionLimitOfIconListBox",LB_ssp%,9)
seules 9 lignes peuvent être sélectionnées en même temps. Une tentative de sélectionner une 10ème ligne est simplement ignorée.

Pour moi, ça marche. Voici ce que ça donne:
[Résolu] Soucis IconListBox de KGF - Page 3 Aa142

C'est correct, non ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

[Résolu] Soucis IconListBox de KGF - Page 3 Empty
MessageSujet: Re: [Résolu] Soucis IconListBox de KGF   [Résolu] Soucis IconListBox de KGF - Page 3 EmptyMar 3 Nov 2020 - 18:44

Ben chez moi, il y a un décalage dans les traitements...

J'ai rechargé la dll plusieurs fois croyant que cela venait de là mais non.


EDIT :

Ca y est je viens de comprendre, c'était à cause des icônes.
Je n'avais pas remis le bon chemin... Embarassed

Donc effectivement de cette façon ça fonctionne parfaitement.
Il va donc falloir que je reprenne mon code pour trouver d'ou cela provient.

Un grand merci Klaus pour le temps passé et ta patience... Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


Nombre de messages : 12289
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

[Résolu] Soucis IconListBox de KGF - Page 3 Empty
MessageSujet: Re: [Résolu] Soucis IconListBox de KGF   [Résolu] Soucis IconListBox de KGF - Page 3 EmptyMar 3 Nov 2020 - 20:53

Ouf ! Content qu'on avance ! Je suivrai cela de près, car tu as mis le doigt sur un problème majeur de gestion de procédures travaillant simultanément de façon asynchrone, et comme aucune de ces procédures n'est réentrante, il est essentiel, capital, qu'on trouve le moyen de sécuriser tout cela. Il en va de la crédbilité de KGF.dll, bien au-dela de IconListBox, et j'y tiens particulièrement !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

[Résolu] Soucis IconListBox de KGF - Page 3 Empty
MessageSujet: Re: [Résolu] Soucis IconListBox de KGF   [Résolu] Soucis IconListBox de KGF - Page 3 EmptyMar 3 Nov 2020 - 21:20

Bon eh bien je suis content que tu sois content ! lol! lol!

Plus sérieusement, j'ai isolé les lignes qui posaient problèmes.
Il s'agit des dernières lignes dans le sous-programme dont une : TRIGGER_CLICK

Bon il y a encore un tout petit peu de parasitage mais seulement à haute intensité de clics et sans incidence sur le résultat.
Puisque c'est seulement la couleur et l'option texte qui dans ce cas ne sont pas synchro, mais cela reste moins grave.

Je vais quand même continué mes recherches pour essayer d'isoler complètement ses éléments perturbateurs.

Merci Klaus pour tes conseils. Tu trouves toujours une solution...
Vraiment bravo pour ta ténacité et merci pour ta disponibilité. flower
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Contenu sponsorisé





[Résolu] Soucis IconListBox de KGF - Page 3 Empty
MessageSujet: Re: [Résolu] Soucis IconListBox de KGF   [Résolu] Soucis IconListBox de KGF - Page 3 Empty

Revenir en haut Aller en bas
 
[Résolu] Soucis IconListBox de KGF
Revenir en haut 
Page 3 sur 3Aller à la page : Précédent  1, 2, 3
 Sujets similaires
-
» [Résolu] Aide sur fonctions IconListBox de KGF
» Premières expérimentations et petits soucis
» Pour une coche "résolu" RESOLU
» Les soucis de la 27i9
» Un soucis avec MENU_ITEM_ADD_IMG !

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: