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
» Gestion d'un système client-serveur.
Version d'essai d'un objet IconComboBox - Page 3 Emptypar Pedro Aujourd'hui à 7:20

» item_index(résolu)
Version d'essai d'un objet IconComboBox - Page 3 Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Version d'essai d'un objet IconComboBox - Page 3 Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Version d'essai d'un objet IconComboBox - Page 3 Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Version d'essai d'un objet IconComboBox - Page 3 Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Version d'essai d'un objet IconComboBox - Page 3 Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Version d'essai d'un objet IconComboBox - Page 3 Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Version d'essai d'un objet IconComboBox - Page 3 Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Version d'essai d'un objet IconComboBox - Page 3 Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Version d'essai d'un objet IconComboBox - Page 3 Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Version d'essai d'un objet IconComboBox - Page 3 Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Version d'essai d'un objet IconComboBox - Page 3 Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Version d'essai d'un objet IconComboBox - Page 3 Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Version d'essai d'un objet IconComboBox - Page 3 Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Version d'essai d'un objet IconComboBox - Page 3 Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -21%
LEGO® Icons 10329 Les Plantes Miniatures, ...
Voir le deal
39.59 €

 

 Version d'essai d'un objet IconComboBox

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

Minibug


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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyMer 7 Mar 2018 - 18:32

Bonsoir Klaus

Je viens de faire un test avec res% = dll_call2("GetAllSelectedItemsFromIconListBox",ILB%,handle(mem%))
Et tout fonctionne parfaitement. C'est génial !

Je n'ai plus qu'a intégrer tout ça dans GPP et la nouvelle interface.

Pourrai tu juste STP m'expliquer cette partie :

Code:

if bin_and(user_event_wparam,hex("FF000000"))=hex("0A000000") : ' IconListBox
    if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then return
    index% =  bin_and(user_event_wparam,hex("0000FFFF"))
    UserILB% = user_event_lparam  : ' ici, on a l'identifiant de l'objet ayant généré l'évènement !
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyMer 7 Mar 2018 - 18:40

J'ai ajouté cette possibilité dans le programme de démo ci-dessous. Crée une IconListBox, sélectionne quelques lignes, puis clique sur "Sélection".
Voici le code:
Code:
' test_IconComboBox.bas


label creer, supprimer, UserEvent, creerL, supprimerL, selectionL

dim res%, ICB%, IL%, ILB%, no%, s$, WParam%, LParam%, index%, UserICB%, UserILB%
dim no_DoIcons%, no_DoIndent%, options%, no_memo%
dim cFond%    : cFond%  = hex("FFFFFF") : ' blanc
dim cFont%    : cFont%  = hex("000000") : ' noir
dim cSelect%  : cSelect% = hex("FF0000") : ' bleu

' dim ilb$ : ilb$ = "KGF.ilb"
dim ilb$ : ilb$ = "MonTest_32x32.ilb"


dll_on "KGF.dll"

on_user_event UserEvent

no% = no% + 1 : memo no% : no_memo% = no% : hide no% : bar_both no%

no% = no% + 1 : check no% : top no%,10 : no_DoIcons% = no% : caption no%,"Afficher icônes"
no% = no% + 1 : check no% : top no%,10 : left no%,130 : no_DoIndent% = no% : caption no%,"Indentation"

no% = no% + 1 : button no% : top no%,40 : caption no%,"Créer" : on_click no%,creer
no% = no% + 1 : button no% : top no%,40 : left no%,width(no%-1) : caption no%,"Supprimer" : on_click no%,supprimer

no% = no% + 1 : button no% : top no%,40 : left no%,left(no%-1)+width(no%-1)+100 : caption no%,"Créer" : on_click no%,creerL
no% = no% + 1 : button no% : top no%,40 : left no%,left(no%-1)+width(no%-1) : caption no%,"Supprimer" : on_click no%,supprimerL
no% = no% + 1 : button no% : top no%,40 : left no%,left(no%-1)+width(no%-1) : caption no%,"Sélection" : on_click no%,selectionL

' IL% = dll_call2("CreateImageList",16,16)
IL% = dll_call2("CreateImageList",32,32)
res% = dll_call2("LoadImageList",IL%,adr(ilb$))
end

UserEvent:
  if bin_and(user_event_wparam,hex("FF000000"))=hex("09000000") : ' IconComboBox
    if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then return
    index% =  bin_and(user_event_wparam,hex("0000FFFF"))
    UserICB% = user_event_lparam  : ' ici, on a l'identifiant de l'objet ayant généré l'évènement !
    s$ = string$(50," ")
    res% = dll_call3("GetItemOfIconComboBox",ICB%,index%,adr(s$))
    s$ = trim$(s$)
    message "clic dans IconComboBox ligne "+str$(index%)+" = "+s$
    return
  end_if
  if bin_and(user_event_wparam,hex("FF000000"))=hex("0A000000") : ' IconListBox
    if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then return
    index% =  bin_and(user_event_wparam,hex("0000FFFF"))
    UserILB% = user_event_lparam  : ' ici, on a l'identifiant de l'objet ayant généré l'évènement !
    s$ = string$(50," ")
    res% = dll_call3("GetItemOfIconListBox",ILB%,index%,adr(s$))
    s$ = trim$(s$)
    message "clic dans IconListBox ligne "+str$(index%)+" = "+s$
    return
  end_if
  return

creer:
  if ICB%<>0 then return
  options% = 0
  if checked(no_DoIcons%)=1 then options% = options% + 1
  if checked(no_DoIndent%)=1 then options% = options% + 2
  ICB% = dll_call3("CreateIconComboBox",handle(0),IL%,options%)
  res% = dll_call5("LocateIconComboBox",ICB%,20,80,200,0)
 
 if 1=2
  transp% = hex("FFFFFF")
  s$ = "Déjeuner"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),1,1,0,0)
  s$ = "Hors-d'oeuvres"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),4,1,0,1)
  s$ = "Pâté de campagne"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),7,1,0,2)
  s$ = "Radis/Beurre"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),10,1,0,2)
  s$ = "Plats"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),13,1,0,1)
  s$ = "Steak/frites"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),16,1,0,2)
  s$ = "Dîner"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),19,1,0,0)
 else
  s$ = "Déjeuner"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),2,1,0,0)
  s$ = "Hors-d'oeuvres"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),1,0,0,1)
  s$ = "Pâté de campagne"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),0,1,0,2)  : ' pas d'icône !
  s$ = "Radis/Beurre"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),1,0,0,2)
  s$ = "Plats"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),2,1,0,1)
  s$ = "Steak/frites"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),1,0,0,2)
  s$ = "Dîner"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),2,1,0,0)
 end_if
 
  res% = dll_call4("SetColorsForIconComboBox",ICB%,cFond%,cFont%,cSelect%)

  return

supprimer:
  ICB% = dll_call1("DeleteIconComboBox",ICB%)
  return


creerL:
  if ILB%<>0 then return
  options% = 0
  if checked(no_DoIcons%)=1 then options% = options% + 1
  if checked(no_DoIndent%)=1 then options% = options% + 2
  ILB% = dll_call3("CreateIconListBox",handle(0),IL%,options%)
  res% = dll_call5("LocateIconListBox",ILB%,240,80,200,300)
 
 if 1=2
  transp% = hex("FFFFFF")
  s$ = "Déjeuner"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),1,1,0,0)
  s$ = "Hors-d'oeuvres"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),4,1,0,1)
  s$ = "Pâté de campagne"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),7,1,0,2)
  s$ = "Radis/Beurre"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),10,1,0,2)
  s$ = "Plats"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),13,1,0,1)
  s$ = "Steak/frites"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),16,1,0,2)
  s$ = "Dîner"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),19,1,0,0)
 else
  s$ = "Déjeuner"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),2,1,0,0)
  s$ = "Hors-d'oeuvres"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),1,0,0,1)
  s$ = "Pâté de campagne"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),0,1,0,2)  : ' pas d'icône !
  s$ = "Radis/Beurre"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),1,0,0,2)
  s$ = "Plats"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),2,1,0,1)
  s$ = "Steak/frites"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),1,0,0,2)
  s$ = "Dîner"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),2,1,0,0)
 end_if

  res% = dll_call4("SetColorsForIconListBox",ILB%,cFond%,cFont%,cSelect%)
  res% = dll_call2("OptionsForIconListBox",ILB%,1)
 
  return
 
supprimerL:
  ILB% = dll_call1("DeleteIconListBox",ILB%)
  return

selectionL:
  res% = dll_call2("GetAllSelectedItemsFromIconListBox",ILB%,handle(no_memo%))
  message text$(no_memo%)
  return

et voici le résultat:
Version d'essai d'un objet IconComboBox - Page 3 Aa145
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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyMer 7 Mar 2018 - 18:47

oui j'ai remarqué !
J'ai d'ailleurs commencé à adapter le code à mes besoins. Wink

J'aimerai juste que tu m'expliques les 2 premières ligne de code de mon message ci dessus (commençant par if bin_and...).

Quant à UserILB il ne semble pas utilisé pour l'instant dans le programme ?
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyMer 7 Mar 2018 - 18:57

Regarde la doc en ligne ici:
http://klauspanoramic.esy.es/IconComboBoxIconListBox.html#IconComboBox_fr
ou la page correspondante dans KGF.chm.

Voici de quoi il retourne:
Il n'y a qu'un seul USER_EVENT disponible en Panoramic. Il transmet deux variables système: USER_EVENT_WPARAM et USER_EVENT_lLPARAM. J'utilise le premier pour signaler quelle partie de KGF.dll a généré le USER_EVENT (actuellement, il peut y avoir 10 origines différentes, et il y en aura d'autres). Chaque "origine" a un code d'identification qui est codé dans les 8 bits supérieurs des 32 bits de USER_EVENT_WPARAM. Dans notre cas, hex("09000000") signifie IconListBox". Les 8 bits suivants indiquent ce que l'objet en question veut signaler. Ici, hex("00010000") signifie "clic dans une ligne". Les 16 bits de droite contiennent le numéro de ligne visée par le clic. Et USER_EVENT_LPARAM contient l'identifiant de l'objet ayant généré le USER_EVENT. Dans notre cas, ça doit être identique à ILB%. Ceci te permet d'avoir plusieurs IcinListBox et de déterminer quelle IcinListBox a envoyé le USER_EVENT.

Donc, pour résumer, la première ligne active le traitement suivant s'il s'agit bien d'une IconListBox.
La deuxième ligne arrête le traitement s'il ne s'agit pas d'un clic. Ce dernier test est actuellement inutile, car seul le clic gauche génère un USER_EVENT. Mais plus tard, ça changera peut-être (clic droit, ...), et il est dont utile de prévoir cela dès le départ.
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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyMer 7 Mar 2018 - 19:06

Hummm je comprends mieux ! Très intéressant.
C'est une sacré mécanique que tu as mis en place !

Moi je n'irai pas si loin. Mais je vais continuer la reprise de GPP. drunken
J'ai remis le programme complètement à plat avec une nouvelle interface.
En fait je reprends tout depuis le début mais pour faire quelque chose de plus simple.
Avec une interface dans une seule fenêtre hors mis les fenêtres SYNEDIT d'édition gérées à part.

Avec tous ces nouveaux objets que tu as créés, je devrai pouvoir m'en sortir... Wink
Encore merci. king
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyMer 7 Mar 2018 - 20:28

Klaus, crois tu qu'il serai possible de changer l’icône ou le texte d'une ligne existante pour les 2 objets IconComboBox et IconListBox ?
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyMer 7 Mar 2018 - 20:44

Ah, les grands esprits se rencontrent... Wink C'est justement ce que je suis en train de coder. C'est pour ce soir...
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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyMer 7 Mar 2018 - 21:02

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

Klaus


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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyMer 7 Mar 2018 - 21:45

C'est fait avec la nouvelle version que viens de mettre en ligne. Tu peux changer séparément l'icône et/ou le libellé de n'importe quelle ligne d'un IconComboBox ou IconListBox.

Voici le programme de démo:
Code:
' test_IconComboBox.bas


label creer, supprimer, UserEvent, creerL, supprimerL, selectionL, changeL3

dim res%, ICB%, IL%, ILB%, no%, s$, WParam%, LParam%, index%, UserICB%, UserILB%
dim no_DoIcons%, no_DoIndent%, options%, no_memo%
dim cFond%    : cFond%  = hex("FFFFFF") : ' blanc
dim cFont%    : cFont%  = hex("000000") : ' noir
dim cSelect%  : cSelect% = hex("FF0000") : ' bleu

' dim ilb$ : ilb$ = "KGF.ilb"
dim ilb$ : ilb$ = "MonTest_32x32.ilb"


dll_on "KGF.dll"

on_user_event UserEvent

no% = no% + 1 : memo no% : no_memo% = no% : hide no% : bar_both no%

no% = no% + 1 : check no% : top no%,10 : no_DoIcons% = no% : caption no%,"Afficher icônes"
no% = no% + 1 : check no% : top no%,10 : left no%,130 : no_DoIndent% = no% : caption no%,"Indentation"

no% = no% + 1 : button no% : top no%,40 : caption no%,"Créer" : on_click no%,creer
no% = no% + 1 : button no% : top no%,40 : left no%,width(no%-1) : caption no%,"Supprimer" : on_click no%,supprimer

no% = no% + 1 : button no% : top no%,40 : left no%,left(no%-1)+width(no%-1)+100 : caption no%,"Créer" : on_click no%,creerL
no% = no% + 1 : button no% : top no%,40 : left no%,left(no%-1)+width(no%-1) : caption no%,"Supprimer" : on_click no%,supprimerL
no% = no% + 1 : button no% : top no%,40 : left no%,left(no%-1)+width(no%-1) : caption no%,"Sélection" : on_click no%,selectionL
no% = no% + 1 : button no% : top no%,40 : left no%,left(no%-1)+width(no%-1) : caption no%,"Change ligne 3" : on_click no%,changeL3

' IL% = dll_call2("CreateImageList",16,16)
IL% = dll_call2("CreateImageList",32,32)
res% = dll_call2("LoadImageList",IL%,adr(ilb$))
end

UserEvent:
  if bin_and(user_event_wparam,hex("FF000000"))=hex("09000000") : ' IconComboBox
    if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then return
    index% =  bin_and(user_event_wparam,hex("0000FFFF"))
    UserICB% = user_event_lparam  : ' ici, on a l'identifiant de l'objet ayant généré l'évènement !
    s$ = string$(50," ")
    res% = dll_call3("GetItemOfIconComboBox",ICB%,index%,adr(s$))
    s$ = trim$(s$)
    message "clic dans IconComboBox ligne "+str$(index%)+" = "+s$
    return
  end_if
  if bin_and(user_event_wparam,hex("FF000000"))=hex("0A000000") : ' IconListBox
    if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then return
    index% =  bin_and(user_event_wparam,hex("0000FFFF"))
    UserILB% = user_event_lparam  : ' ici, on a l'identifiant de l'objet ayant généré l'évènement !
    s$ = string$(50," ")
    res% = dll_call3("GetItemOfIconListBox",ILB%,index%,adr(s$))
    s$ = trim$(s$)
    message "clic dans IconListBox ligne "+str$(index%)+" = "+s$
    return
  end_if
  return

creer:
  if ICB%<>0 then return
  options% = 0
  if checked(no_DoIcons%)=1 then options% = options% + 1
  if checked(no_DoIndent%)=1 then options% = options% + 2
  ICB% = dll_call3("CreateIconComboBox",handle(0),IL%,options%)
  res% = dll_call5("LocateIconComboBox",ICB%,20,80,200,0)
 
 if 1=2
  transp% = hex("FFFFFF")
  s$ = "Déjeuner"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),1,1,0,0)
  s$ = "Hors-d'oeuvres"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),4,1,0,1)
  s$ = "Pâté de campagne"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),7,1,0,2)
  s$ = "Radis/Beurre"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),10,1,0,2)
  s$ = "Plats"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),13,1,0,1)
  s$ = "Steak/frites"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),16,1,0,2)
  s$ = "Dîner"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),19,1,0,0)
 else
  s$ = "Déjeuner"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),2,1,0,0)
  s$ = "Hors-d'oeuvres"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),1,0,0,1)
  s$ = "Pâté de campagne"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),0,1,0,2)  : ' pas d'icône !
  s$ = "Radis/Beurre"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),1,0,0,2)
  s$ = "Plats"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),2,1,0,1)
  s$ = "Steak/frites"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),1,0,0,2)
  s$ = "Dîner"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),2,1,0,0)
 end_if
 
  res% = dll_call4("SetColorsForIconComboBox",ICB%,cFond%,cFont%,cSelect%)

  return

supprimer:
  ICB% = dll_call1("DeleteIconComboBox",ICB%)
  return


creerL:
  if ILB%<>0 then return
  options% = 0
  if checked(no_DoIcons%)=1 then options% = options% + 1
  if checked(no_DoIndent%)=1 then options% = options% + 2
  ILB% = dll_call3("CreateIconListBox",handle(0),IL%,options%)
  res% = dll_call5("LocateIconListBox",ILB%,240,80,200,300)
 
 if 1=2
  transp% = hex("FFFFFF")
  s$ = "Déjeuner"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),1,1,0,0)
  s$ = "Hors-d'oeuvres"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),4,1,0,1)
  s$ = "Pâté de campagne"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),7,1,0,2)
  s$ = "Radis/Beurre"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),10,1,0,2)
  s$ = "Plats"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),13,1,0,1)
  s$ = "Steak/frites"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),16,1,0,2)
  s$ = "Dîner"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),19,1,0,0)
 else
  s$ = "Déjeuner"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),2,1,0,0)
  s$ = "Hors-d'oeuvres"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),1,0,0,1)
  s$ = "Pâté de campagne"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),0,1,0,2)  : ' pas d'icône !
  s$ = "Radis/Beurre"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),1,0,0,2)
  s$ = "Plats"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),2,1,0,1)
  s$ = "Steak/frites"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),1,0,0,2)
  s$ = "Dîner"
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),2,1,0,0)
 end_if

  res% = dll_call4("SetColorsForIconListBox",ILB%,cFond%,cFont%,cSelect%)
  res% = dll_call2("OptionsForIconListBox",ILB%,1)
 
  return
 
supprimerL:
  ILB% = dll_call1("DeleteIconListBox",ILB%)
  return

selectionL:
  res% = dll_call2("GetAllSelectedItemsFromIconListBox",ILB%,handle(no_memo%))
  message text$(no_memo%)
  return     
 
changeL3:
  res% = dll_call6("ChangeElementIconInIconListBox",ILB%,3,1,0,0,2)
  s$ = "Oeuf dur - mayonnaise"
  res% = dll_call3("ChangeElementTextInIconListBox",ILB%,3,adr(s$))
  return
 
Pour la IconListBox, il y a maintenant un bouton "Change ligne 3" qui change l'icône et le libellé de la ligne 3. La même chose peut être faite pour le IconComboBox, bien sûr.
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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyMer 7 Mar 2018 - 21:58

Peut être encore une idée Klaus...

Pouvoir simuler un clic sur une ligne par programme. Un peu à la façon du TRIGGER_CLICK.

Cela permettra par exemple de sélectionner des lignes au démarrage du programme par exemple...
Qu'est ce que tu en penses ?
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyMer 7 Mar 2018 - 22:53

J'ai corrigé un petit but dans la fonction SelectItemOfIconListBox, et maintenant, tu peux l'utiliser pour cela. Voici la démo, avec un bouton de clic sur la ligne 3:
Code:
' test_IconComboBox.bas                                                                                                                                                           
                                                                                                                                                                                 
                                                                                                                                                                                 
label creer, supprimer, UserEvent, creerL, supprimerL, selectionL, changeL3, selectL3                                                                                             
                                                                                                                                                                                 
dim res%, ICB%, IL%, ILB%, no%, s$, WParam%, LParam%, index%, UserICB%, UserILB%                                                                                                 
dim no_DoIcons%, no_DoIndent%, options%, no_memo%                                                                                                                                 
dim cFond%    : cFond%  = hex("FFFFFF") : ' blanc                                                                                                                               
dim cFont%    : cFont%  = hex("000000") : ' noir                                                                                                                                 
dim cSelect%  : cSelect% = hex("FF0000") : ' bleu                                                                                                                                 
                                                                                                                                                                                 
' dim ilb$ : ilb$ = "KGF.ilb"                                                                                                                                                     
dim ilb$ : ilb$ = "MonTest_32x32.ilb"                                                                                                                                             
                                                                                                                                                                                 
                                                                                                                                                                                 
dll_on "KGF.dll"                                                                                                                                                                 
width 0,700                                                                                                                                                                       
                                                                                                                                                                                 
on_user_event UserEvent                                                                                                                                                           
                                                                                                                                                                                 
no% = no% + 1 : memo no% : no_memo% = no% : hide no% : bar_both no%                                                                                                               
                                                                                                                                                                                 
no% = no% + 1 : check no% : top no%,10 : no_DoIcons% = no% : caption no%,"Afficher icônes"                                                                                       
no% = no% + 1 : check no% : top no%,10 : left no%,130 : no_DoIndent% = no% : caption no%,"Indentation"                                                                           
                                                                                                                                                                                 
no% = no% + 1 : button no% : top no%,40 : caption no%,"Créer" : on_click no%,creer                                                                                               
no% = no% + 1 : button no% : top no%,40 : left no%,width(no%-1) : caption no%,"Supprimer" : on_click no%,supprimer                                                               
                                                                                                                                                                                 
no% = no% + 1 : button no% : top no%,40 : left no%,left(no%-1)+width(no%-1)+100 : caption no%,"Créer" : on_click no%,creerL                                                       
no% = no% + 1 : button no% : top no%,40 : left no%,left(no%-1)+width(no%-1) : caption no%,"Supprimer" : on_click no%,supprimerL                                                   
no% = no% + 1 : button no% : top no%,40 : left no%,left(no%-1)+width(no%-1) : caption no%,"Sélection" : on_click no%,selectionL                                                   
no% = no% + 1 : button no% : top no%,40 : left no%,left(no%-1)+width(no%-1) : caption no%,"Change ligne 3" : on_click no%,changeL3                                               
no% = no% + 1 : button no% : top no%,40 : left no%,left(no%-1)+width(no%-1) : caption no%,"Clic ligne 3" : on_click no%,selectL3                                                 
                                                                                                                                                                                 
' IL% = dll_call2("CreateImageList",16,16)                                                                                                                                       
IL% = dll_call2("CreateImageList",32,32)                                                                                                                                         
res% = dll_call2("LoadImageList",IL%,adr(ilb$))                                                                                                                                   
end                                                                                                                                                                               
                                                                                                                                                                                 
UserEvent:                                                                                                                                                                       
  if bin_and(user_event_wparam,hex("FF000000"))=hex("09000000") : ' IconComboBox                                                                                                 
    if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then return                                                                                                   
    index% =  bin_and(user_event_wparam,hex("0000FFFF"))                                                                                                                         
    UserICB% = user_event_lparam  : ' ici, on a l'identifiant de l'objet ayant généré l'évènement !                                                                               
    s$ = string$(50," ")                                                                                                                                                         
    res% = dll_call3("GetItemOfIconComboBox",ICB%,index%,adr(s$))                                                                                                                 
    s$ = trim$(s$)                                                                                                                                                               
    message "clic dans IconComboBox ligne "+str$(index%)+" = "+s$                                                                                                                 
    return                                                                                                                                                                       
  end_if                                                                                                                                                                         
  if bin_and(user_event_wparam,hex("FF000000"))=hex("0A000000") : ' IconListBox                                                                                                   
    if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then return                                                                                                   
    index% =  bin_and(user_event_wparam,hex("0000FFFF"))                                                                                                                         
    UserILB% = user_event_lparam  : ' ici, on a l'identifiant de l'objet ayant généré l'évènement !                                                                               
    s$ = string$(50," ")                                                                                                                                                         
    res% = dll_call3("GetItemOfIconListBox",ILB%,index%,adr(s$))                                                                                                                 
    s$ = trim$(s$)                                                                                                                                                               
    message "clic dans IconListBox ligne "+str$(index%)+" = "+s$                                                                                                                 
    return                                                                                                                                                                       
  end_if                                                                                                                                                                         
  return                                                                                                                                                                         
                                                                                                                                                                                 
creer:                                                                                                                                                                           
  if ICB%<>0 then return                                                                                                                                                         
  options% = 0                                                                                                                                                                   
  if checked(no_DoIcons%)=1 then options% = options% + 1                                                                                                                         
  if checked(no_DoIndent%)=1 then options% = options% + 2                                                                                                                         
  ICB% = dll_call3("CreateIconComboBox",handle(0),IL%,options%)                                                                                                                   
  res% = dll_call5("LocateIconComboBox",ICB%,20,80,200,0)                                                                                                                         
                                                                                                                                                                                 
 if 1=2                                                                                                                                                                           
  transp% = hex("FFFFFF")                                                                                                                                                         
  s$ = "Déjeuner"                                                                                                                                                                 
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),1,1,0,0)                                                                                                                 
  s$ = "Hors-d'oeuvres"                                                                                                                                                           
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),4,1,0,1)                                                                                                                 
  s$ = "Pâté de campagne"                                                                                                                                                         
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),7,1,0,2)                                                                                                                 
  s$ = "Radis/Beurre"                                                                                                                                                             
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),10,1,0,2)                                                                                                                 
  s$ = "Plats"                                                                                                                                                                   
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),13,1,0,1)                                                                                                                 
  s$ = "Steak/frites"                                                                                                                                                             
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),16,1,0,2)                                                                                                                 
  s$ = "Dîner"                                                                                                                                                                   
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),19,1,0,0)                                                                                                                 
 else                                                                                                                                                                             
  s$ = "Déjeuner"                                                                                                                                                                 
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),2,1,0,0)                                                                                                                 
  s$ = "Hors-d'oeuvres"                                                                                                                                                           
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),1,0,0,1)                                                                                                                 
  s$ = "Pâté de campagne"                                                                                                                                                         
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),0,1,0,2)  : ' pas d'icône !                                                                                               
  s$ = "Radis/Beurre"                                                                                                                                                             
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),1,0,0,2)                                                                                                                 
  s$ = "Plats"                                                                                                                                                                   
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),2,1,0,1)                                                                                                                 
  s$ = "Steak/frites"                                                                                                                                                             
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),1,0,0,2)                                                                                                                 
  s$ = "Dîner"                                                                                                                                                                   
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),2,1,0,0)                                                                                                                 
 end_if                                                                                                                                                                           
                                                                                                                                                                                 
  res% = dll_call4("SetColorsForIconComboBox",ICB%,cFond%,cFont%,cSelect%)                                                                                                       
                                                                                                                                                                                 
  return                                                                                                                                                                         
                                                                                                                                                                                 
supprimer:                                                                                                                                                                       
  ICB% = dll_call1("DeleteIconComboBox",ICB%)                                                                                                                                     
  return                                                                                                                                                                         
                                                                                                                                                                                 
                                                                                                                                                                                 
creerL:                                                                                                                                                                           
  if ILB%<>0 then return                                                                                                                                                         
  options% = 0                                                                                                                                                                   
  if checked(no_DoIcons%)=1 then options% = options% + 1                                                                                                                         
  if checked(no_DoIndent%)=1 then options% = options% + 2                                                                                                                         
  ILB% = dll_call3("CreateIconListBox",handle(0),IL%,options%)                                                                                                                   
  res% = dll_call5("LocateIconListBox",ILB%,240,80,200,300)                                                                                                                       
                                                                                                                                                                                 
 if 1=2                                                                                                                                                                           
  transp% = hex("FFFFFF")                                                                                                                                                         
  s$ = "Déjeuner"                                                                                                                                                                 
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),1,1,0,0)                                                                                                                   
  s$ = "Hors-d'oeuvres"                                                                                                                                                           
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),4,1,0,1)                                                                                                                   
  s$ = "Pâté de campagne"                                                                                                                                                         
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),7,1,0,2)                                                                                                                   
  s$ = "Radis/Beurre"                                                                                                                                                             
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),10,1,0,2)                                                                                                                 
  s$ = "Plats"                                                                                                                                                                   
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),13,1,0,1)                                                                                                                 
  s$ = "Steak/frites"                                                                                                                                                             
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),16,1,0,2)                                                                                                                 
  s$ = "Dîner"                                                                                                                                                                   
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),19,1,0,0)                                                                                                                 
 else                                                                                                                                                                             
  s$ = "Déjeuner"                                                                                                                                                                 
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),2,1,0,0)                                                                                                                   
  s$ = "Hors-d'oeuvres"                                                                                                                                                           
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),1,0,0,1)                                                                                                                   
  s$ = "Pâté de campagne"                                                                                                                                                         
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),0,1,0,2)  : ' pas d'icône !                                                                                               
  s$ = "Radis/Beurre"                                                                                                                                                             
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),1,0,0,2)                                                                                                                   
  s$ = "Plats"                                                                                                                                                                   
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),2,1,0,1)                                                                                                                   
  s$ = "Steak/frites"                                                                                                                                                             
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),1,0,0,2)                                                                                                                   
  s$ = "Dîner"                                                                                                                                                                   
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),2,1,0,0)                                                                                                                   
 end_if                                                                                                                                                                           
                                                                                                                                                                                 
  res% = dll_call4("SetColorsForIconListBox",ILB%,cFond%,cFont%,cSelect%)                                                                                                         
  res% = dll_call2("OptionsForIconListBox",ILB%,1)                                                                                                                               
                                                                                                                                                                                 
  return                                                                                                                                                                         
                                                                                                                                                                                 
supprimerL:                                                                                                                                                                       
  ILB% = dll_call1("DeleteIconListBox",ILB%)                                                                                                                                     
  return                                                                                                                                                                         
                                                                                                                                                                                 
selectionL:                                                                                                                                                                       
  res% = dll_call2("GetAllSelectedItemsFromIconListBox",ILB%,handle(no_memo%))                                                                                                   
  message text$(no_memo%)                                                                                                                                                         
  return                                                                                                                                                                         
                                                                                                                                                                                 
changeL3:                                                                                                                                                                         
  res% = dll_call6("ChangeElementIconInIconListBox",ILB%,3,1,0,0,2)                                                                                                               
  s$ = "Oeuf dur - mayonnaise"                                                                                                                                                   
  res% = dll_call3("ChangeElementTextInIconListBox",ILB%,3,adr(s$))                                                                                                               
 return                                                                                                                                                                           
                                                                                                                                                                                 
SelectL3:                                                                                                                                                                         
  res% = dll_call2("SelectItemOfIconListBox",ILB%,3)                                                                                                                             
  return                                                                                                                                                                         
                                                                                                                                                                                                                                                                                                                                                             
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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyMer 7 Mar 2018 - 23:09

C'est parfait Klaus, là je crois qu'il y a tout ce qu'il faut !
Enfin... au moins jusqu’à demain... Wink

Bonne nuit ! Sleep Sleep Sleep Sleep
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyMer 14 Mar 2018 - 19:18

Bonsoir Klaus !

J'aurai besoin d'un petit coup de main stp...

J'essaie de mettre en place le LISTBOX que tu a créé mais j'ai quelques soucis. Suspect

1/ Je ne vois pas les icones s'afficher
2/ je n'arrive pas à désactiver la sélection multiple
3/ Je n'ai pas de retour des événements

Merci d'avance.

voici le code :
Code:
' ------------------------- DECLARATION DES VARIABLES --------------------------                       
DIM a% , b% , c% , d% , no%                                                    : ' Variables générales numériques
DIM t$                                                                          : ' Variables générales aphabétiques

DIM res% , index% , IL% , ilb$                                                  : ' Gestion pour la dll KGF

DIM TREE%

dim cFond%    : cFond%  = hex("FFFFFF") : ' blanc                                                                                                                             
dim cFont%    : cFont%  = hex("000000") : ' noir                                                                                                                               
dim cSelect%  : cSelect% = hex("FF0000") : ' bleu 

' --------------------------- DECLARATION DES LABELS ---------------------------
LABEL menu , evenement                                                          : ' Gestion des CLICS et evenements
                                                                                                   
' -------------------------- CHARGEMENT DE LA DLL KGF --------------------------
DLL_ON "KGF.dll"

ON_USER_EVENT evenement 

' ----------------------------- GESTION DES OBJETS -----------------------------
WIDTH no%,560 : HEIGHT no%,500 : COLOR no%,30,30,30 : BORDER_SMALL no% : no%=no%+1                                                                                                                                                        : '

IL%=DLL_CALL2("CreateImageList",32,32)
     
ilb$="D:\BASIC\GPP - 2.02\MonTest_32x32.ilb"                                                                                                                                         
res%=DLL_CALL2("LoadImageList",IL%,adr(ilb$))

TREE%=DLL_CALL3("CreateIconListBox",handle(0),IL%,3)                                                                                                                 
res%=DLL_CALL5("LocateIconListBox",TREE%,5,5,(WIDTH_CLIENT(0)-10),(HEIGHT_CLIENT(0)-10)) 
     
' --------------------------------- AFFICHAGE ----------------------------------
t$=file_find_first$ : res%=DLL_CALL6("AddItemToIconListBox",TREE%,adr(t$),4,1,0,2) : t$=file_find_next$
while t$<>"_"
    res%=dll_call6("AddItemToIconListBox",TREE%,adr(t$),4,1,0,1)
    t$=file_find_next$
end_while
file_find_close

res% = dll_call4("SetColorsForIconListBox",TREE%,cFond%,cFont%,cSelect%)                                                                                                       
res% = dll_call2("OptionsForIconListBox",TREE%,0) 

END

' ------------------------------ SOUS-PROGRAMMES -------------------------------
evenement:                                                                                                                                                                     
  IF BIN_AND(USER_EVENT_WPARAM,HEX("FF000000"))=HEX("0A000000")  : ' IconListBox                                                                                                 
    IF BIN_AND(USER_EVENT_WPARAM,HEX("00FF0000"))<>HEX("00010000") THEN RETURN                                                                                                 
    index%=BIN_AND(USER_EVENT_WPARAM,HEX("0000FFFF"))                                                                           
    t$ = string$(50," ")                                                                                                                                                       
    res% = dll_call3("GetItemOfIconListBox",TREE%,index%,adr(t$))                                                                                                               
    t$ = trim$(t$)                                                                                                                                                             
    message "clic dans IconListBox ligne "+str$(index%)+" = "+t$                                                                                                               
    return                                                                                                                                                                     
  end_if                                                                                                                                                                       
RETURN 

menu:

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

Klaus


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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyMer 14 Mar 2018 - 22:50

J'ai corrigé le bug de la confusion entre sélection simple et multiple. La nouvelle version est officiellement publiée partout.

La raison pour la non-réception des USER_EVENT est un problème de détection automatique du handle de la form 0. Normalement, ça marche bien. Dans quelques rares cas, le handle est mal déterminé. Et comme c'est vers ce handle que le USER_EVENT est envoyé... Alors, depuis longtemps, KGF.dll contient une fonction qui permet d'impose ce handle:
Code:
res% = dll_call1("SetMainFormHandle",handle(0))
Tu l'appeles immédiatement avant CreateIconListBox, et ça marchera.

Pour les icônes, je ne vois pas - un problème de chemin, peut-être ? Essaie avec KGF.ilb en créant un objet IL% avec 16,16 comme paramètres, pour voir.
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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyMer 14 Mar 2018 - 23:02

Merci Klaus.

Je viens de recharger et tester de nouveau. Tout semble OK cette fois.
Concernant les icônes, j'ai testé un autre fichier ilb puis de nouveau le premier et ça fonctionne aussi.
Le fichier ilb c'est celui que j'ai téléchargé sur ton Webdav et il fallait que je le 'débloque' comme à chaque fois pour la dll.
Merci Klaus.

Pour l'info je tente de faire un explorateur de fichiers 100% Panoramic avec icônes et couleurs persos.
Rien de très compliqué... juste un peu de réflexion, quelques bonnes idées, et la super dll KGF !

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

Klaus


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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyJeu 15 Mar 2018 - 0:01

Super ! Je suis content. Voilà une affaire qui roule !
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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyJeu 15 Mar 2018 - 0:07

Argfff !  J'ai encore un petit soucis. sûrement une erreur de ma part...

ATTENTION JE N AI MIS AUCUNE BARRIERE DE SECURITE - POUR L INSTANT LE CODE EST BRUT...

Lorsque je clique sur un des dossiers, l'affichage s'effectue correctement mais à la fin j'ai ce message.
Je ne comprends pas pourquoi ? En plus le programme ne plante pas. c'est juste dans la DLL KGF  !?

J'en reste là pour ce soir. On verra demain...  Sleep  Sleep  Sleep

Version d'essai d'un objet IconComboBox - Page 3 Sans_t34

voici le code dans son intégralité :

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

Klaus


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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyJeu 15 Mar 2018 - 0:58

Ca marchera beaucoup mieux comme ça:
Code:
' ------------------------- DECLARATION DES VARIABLES --------------------------                       
DIM a% , b% , c% , d% , no%                : ' Variables générales numériques
DIM t$                                    : ' Variables générales aphabétiques

DIM res% , index% , IL% , ilb$ , doss%            : ' Gestion pour la dll KGF

DIM TREE%

dim cFond%    : cFond%  = hex("FFFFFF") : ' blanc                                                                                                                             
dim cFont%    : cFont%  = hex("000000") : ' noir                                                                                                                               
dim cSelect%  : cSelect% = hex("FF0000") : ' bleu 

' --------------------------- DECLARATION DES LABELS ---------------------------
LABEL menu , evenement                  : ' Gestion des CLICS et evenements
                                                                                                   
' -------------------------- CHARGEMENT DE LA DLL KGF --------------------------
DLL_ON "KGF.dll"

ON_USER_EVENT evenement 

' ----------------------------- GESTION DES OBJETS -----------------------------
WIDTH no%,560 : HEIGHT no%,500 : COLOR no%,30,30,30 : BORDER_SMALL no% : no%=no%+1                                                                                                                                                        : '

' ----------------------------- CREATION DE L'IMAGELIST ------------------------
' (section déplacée ici par Klaus)
  IL%=DLL_CALL2("CreateImageList",15,15)
     
  ilb$="D:\BASIC\GPP - 2.02\lolo.ilb"                                                                                                                                         
  res%=DLL_CALL2("LoadImageList",IL%,adr(ilb$))


affichage("C:")
                                                                                                     
END

' ------------------------------ SOUS-PROGRAMMES -------------------------------
evenement:                                                                                                                                                                     
  IF BIN_AND(USER_EVENT_WPARAM,HEX("FF000000"))=HEX("0A000000")                                                                                                   
    IF BIN_AND(USER_EVENT_WPARAM,HEX("00FF0000"))<>HEX("00010000") THEN RETURN                                                                                                 
    index%=BIN_AND(USER_EVENT_WPARAM,HEX("0000FFFF"))                                                                           
    t$ = string$(50," ") : res% = dll_call3("GetItemOfIconListBox",TREE%,index%,adr(t$))                                                                                                               
    t$ = trim$(t$) : CAPTION 0,"Ligne "+str$(index%)+" = "+t$
   
    IF index%<=doss%
        res%=dll_call1("DeleteIconListBox",TREE%) : PAUSE 1000
        affichage(DIR_CURRENT$+chr$(92)+t$)    : ' <====== le backslash était "mangé" par le forum !
    END_IF                                                                                                                                                                                                                                                                                       
  END_IF                                                                                                                                                                       
RETURN 

' --------------------------------- AFFICHAGE ----------------------------------
SUB affichage(chem$)

  res% = dll_call1("SetMainFormHandle",handle(0))
  TREE%=DLL_CALL3("CreateIconListBox",handle(0),IL%,3)                                                                                                                 
  res%=DLL_CALL5("LocateIconListBox",TREE%,5,5,(WIDTH_CLIENT(0)-10),(HEIGHT_CLIENT(0)-10)) 
 
  DIR_CHANGE chem$ : CAPTION 0,DIR_CURRENT$ : doss%=0
 
  ' Affichage des dossiers
  t$=FILE_FIND_FIRST$
  IF t$<>"." THEN res%=DLL_CALL6("AddItemToIconListBox",TREE%,adr(t$),1,1,0,0)
  t$=FILE_FIND_NEXT$ 
 
  while t$<>"_"
      IF DIR_EXISTS(t$)=1 THEN res%=dll_call6("AddItemToIconListBox",TREE%,adr(t$),2,1,0,0) : doss%=doss%+1
      t$=FILE_FIND_NEXT$
  end_while
 
  FILE_FIND_CLOSE

  ' Affichage des fichiers
  t$=FILE_FIND_FIRST$
  IF t$<>"." THEN res%=DLL_CALL6("AddItemToIconListBox",TREE%,adr(t$),3,1,0,0)
  t$=FILE_FIND_NEXT$
 
  while t$<>"_"
      IF DIR_EXISTS(t$)<>1 THEN res%=dll_call6("AddItemToIconListBox",TREE%,adr(t$),4,1,0,0)
      t$=FILE_FIND_NEXT$
  end_while
 
  FILE_FIND_CLOSE

  res% = dll_call2("OptionsForIconListBox",TREE%,0)
  res% = dll_call4("SetColorsForIconListBox",TREE%,cFond%,cFont%,cSelect%)
   
END_SUB

menu:

RETURN

J'ai remplacé un backslash par chr$(92) - il était mangé par le forum.
Mais, surtout, j'ai sorti la création de l'objet IL% de la sub. Cet objet ne doit être créé qu'une seule fois, au démarrage. Puis, à chaque création de TREE%, on réutilise le même objet IL%. Sinon, comme tu en supprimes pas l'objet IL% avant de le recréer, tu empiles plein de copies de IL% en mémoire, et ça pla,nte à terme.

Il faut ajouter une sécurité importante:
- "inactive 0" au début de affichage
- "active 0" à la fin de affichage
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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyJeu 15 Mar 2018 - 7:45

Bonjour Klaus

Merci pour ton aide.

Ce qui est surprenant c'est que lors du 1er clic et seulement le premier j'ai toujours le même message
d'erreur de KGF. Ensuite sur les autres clics tout va bien.

Concernant INACTIVE 0 et ACTIVE 0 je les ai placé au début et à la fin de la SUB affichage().
J'ai tenté de les placer dans le sous-programme evenement mais rien n'y fait.
J'ai toujours un plantage sur le 1er clic. C'est bizarre non ?! Suspect
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyJeu 15 Mar 2018 - 12:21

Tel que c'est ici, je n'ai aucun message d'erreur. Et tant que la SUB n'a pas terminé son boulot, on ne peut pas cliquer sur une ligné déjà affichée, ce qui est essentiel.
Code:
' ------------------------- DECLARATION DES VARIABLES --------------------------                       
DIM a% , b% , c% , d% , no%                : ' Variables générales numériques
DIM t$                                    : ' Variables générales aphabétiques

DIM res% , index% , IL% , ilb$ , doss%            : ' Gestion pour la dll KGF

DIM TREE%

dim cFond%    : cFond%  = hex("FFFFFF") : ' blanc                                                                                                                             
dim cFont%    : cFont%  = hex("000000") : ' noir                                                                                                                               
dim cSelect%  : cSelect% = hex("FF0000") : ' bleu 

' --------------------------- DECLARATION DES LABELS ---------------------------
LABEL menu , evenement                  : ' Gestion des CLICS et evenements
                                                                                                   
' -------------------------- CHARGEMENT DE LA DLL KGF --------------------------
DLL_ON "KGF.dll"

ON_USER_EVENT evenement 

' ----------------------------- GESTION DES OBJETS -----------------------------
WIDTH no%,560 : HEIGHT no%,500 : COLOR no%,30,30,30 : BORDER_SMALL no% : no%=no%+1                                                                                                                                                        : '

' ----------------------------- CREATION DE L'IMAGELIST ------------------------
' (section déplacée ici par Klaus)
  IL%=DLL_CALL2("CreateImageList",15,15)
     
  ilb$="D:\BASIC\GPP - 2.02\lolo.ilb"                                                                                                                                         
  res%=DLL_CALL2("LoadImageList",IL%,adr(ilb$))


affichage("C:")
                                                                                                     
END

' ------------------------------ SOUS-PROGRAMMES -------------------------------
evenement:                                                                                                                                                                     
  IF BIN_AND(USER_EVENT_WPARAM,HEX("FF000000"))=HEX("0A000000")                                                                                                   
    IF BIN_AND(USER_EVENT_WPARAM,HEX("00FF0000"))<>HEX("00010000") THEN RETURN                                                                                                 
    index%=BIN_AND(USER_EVENT_WPARAM,HEX("0000FFFF"))                                                                           
    t$ = string$(50," ") : res% = dll_call3("GetItemOfIconListBox",TREE%,index%,adr(t$))                                                                                                               
    t$ = trim$(t$) : CAPTION 0,"Ligne "+str$(index%)+" = "+t$
   
    IF index%<=doss%
        res%=dll_call1("DeleteIconListBox",TREE%) : PAUSE 1000
        affichage(DIR_CURRENT$+chr$(92)+t$)    : ' <====== le backslash était "mangé" par le forum !
    END_IF                                                                                                                                                                                                                                                                                       
  END_IF                                                                                                                                                                       
RETURN 

' --------------------------------- AFFICHAGE ----------------------------------
SUB affichage(chem$)
             
  inactive 0
                 
  res% = dll_call1("SetMainFormHandle",handle(0))
  TREE%=DLL_CALL3("CreateIconListBox",handle(0),IL%,3)                                                                                                                 
  res%=DLL_CALL5("LocateIconListBox",TREE%,5,5,(WIDTH_CLIENT(0)-10),(HEIGHT_CLIENT(0)-10)) 
 
  DIR_CHANGE chem$ : CAPTION 0,DIR_CURRENT$ : doss%=0
 
  ' Affichage des dossiers
  t$=FILE_FIND_FIRST$
  IF t$<>"." THEN res%=DLL_CALL6("AddItemToIconListBox",TREE%,adr(t$),1,1,0,0)
  t$=FILE_FIND_NEXT$ 
 
  while t$<>"_"
      IF DIR_EXISTS(t$)=1 THEN res%=dll_call6("AddItemToIconListBox",TREE%,adr(t$),2,1,0,0) : doss%=doss%+1
      t$=FILE_FIND_NEXT$
  end_while
 
  FILE_FIND_CLOSE

  ' Affichage des fichiers
  t$=FILE_FIND_FIRST$
  IF t$<>"." THEN res%=DLL_CALL6("AddItemToIconListBox",TREE%,adr(t$),3,1,0,0)
  t$=FILE_FIND_NEXT$
 
  while t$<>"_"
      IF DIR_EXISTS(t$)<>1 THEN res%=dll_call6("AddItemToIconListBox",TREE%,adr(t$),4,1,0,0)
      t$=FILE_FIND_NEXT$
  end_while
 
  FILE_FIND_CLOSE

  res% = dll_call2("OptionsForIconListBox",TREE%,0)
  res% = dll_call4("SetColorsForIconListBox",TREE%,cFond%,cFont%,cSelect%)
   
  active 0
 
END_SUB

menu:

RETURN
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: re   Version d'essai d'un objet IconComboBox - Page 3 EmptyJeu 15 Mar 2018 - 13:09

J' ai fait un essai et je n' ai pas de message de retour en cliquant sur l' objet.
Qu' ai je fait de mal ?

Code:
hide 0
variables()
constantes()
labels()
init()
gui()
RedimensionForm0()
on_user_event UserEvent
show 0
end

sub variables()
  dim no%
 
  dim index%
  dim UserILB%
  dim res%
  dim s$
end_sub

sub constantes()
  dim_local i%
 
  dim Kgf$ : Kgf$="C:\KGF\KGF.dll"
  dim Ilb$ : Ilb$="C:\KGF\KGF.ilb"
 
  dim Fra%(3)  : for i%=1 to 3 : no%=no%+1 : Fra%(i%)=no% : next i%
  dim RetList% : no%=no%+1 : RetList%=no%
 
  dim IL% 
  dim ILB%
end_sub

sub labels()
  label clic
  label change
  label dclic
  label resize
  label shutdown
  label UserEvent
end_sub

sub init()
  dll_on Kgf$
 
  IL% = dll_call2("CreateImageList",16,16)                                                                                                                                         
  res% = dll_call2("LoadImageList",IL%,adr(ilb$))
end_sub

sub gui()
  dim_local i%

  height 0,600
  width 0,900
  top 0,(screen_y-height(0))/2
  left 0,(screen_x-width(0))/2
  color 0,0,0,255
     
  font_name 0,"Arial"
  font_size 0,8
  caption 0,"Storys Book"

  for i%=1 to 3 : panel Fra%(i%) : next i%
 
  ILB% = dll_call3("CreateIconListBox",handle(0),IL%,3)                                                                                                                   
  s$ = "Déjeuner"                                                                                                                                                                 
  res% = dll_call6("AddItemToIconListBox",ILB%,adr(s$),1,0,0,0)
   
  on_resize 0,resize
  on_close 0,shutdown 
end_sub

clic:
return

change:
return

dclic:
return

resize:
  RedimensionForm0()
return

shutdown:
  ILB% = dll_call1("DeleteIconListBox",ILB%)
return

UserEvent:
  if bin_and(user_event_wparam,hex("FF000000"))=hex("0A000000") : ' IconListBox                                                                                                   
      if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then return                                                                                                   
      index% =  bin_and(user_event_wparam,hex("0000FFFF"))                                                                                                                         
      UserILB% = user_event_lparam  : ' ici, on a l'identifiant de l'objet ayant généré l'évènement !                                                                               
      s$ = string$(50," ")                                                                                                                                                         
      res% = dll_call3("GetItemOfIconListBox",ILB%,index%,adr(s$))                                                                                                                 
      s$ = trim$(s$)                                                                                                                                                               
      message "clic dans IconListBox ligne "+str$(index%)+" = "+s$
      return                                                                                                                                                                                                                                                                                       
  end_if                                                                                                                                                                         
return

sub RedimensionForm0()

  height Fra%(1),28
  width Fra%(1),width_client(0)-10
  top Fra%(1),5
  left Fra%(1),5

  res% = dll_call5("LocateIconListBox",ILB%,5,top(Fra%(1))+height(Fra%(1))+5,300,height_client(0)-76)
 
  height Fra%(2),height_client(0)-76
  width Fra%(2),width_client(0)-315
  top Fra%(2),top(Fra%(1))+height(Fra%(1))+5
  left Fra%(2),310
 
  height Fra%(3),28
  width Fra%(3),width_client(0)-10
  top Fra%(3),height_client(0)-33
  left Fra%(3),5 
end_sub

scratch
Revenir en haut Aller en bas
Klaus

Klaus


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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyJeu 15 Mar 2018 - 13:24

Rien... tu tombes sur le même problème que MiniBug: dans certains cas, KGF.dll de détermine pas correctement le handle de la form 0. Or, l'objet IconListBox en a besoin pour envoyer le USER_EVENT.

Pour cela, depuis longtemps, il y a une fonction dans KGF.dll:
Code:
res% = dll_call1("SetMainFormHandle",handle(0))
Tu insères cet appel juste avant l'appel de CreateIconListBox, et tout marchera bien.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: re   Version d'essai d'un objet IconComboBox - Page 3 EmptyJeu 15 Mar 2018 - 13:27

Cela ne viendrait il pas du redimensionnement du form 0 ?
scratch
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: re   Version d'essai d'un objet IconComboBox - Page 3 EmptyJeu 15 Mar 2018 - 13:29

Very Happy
J' ai fait comme tu as dit et tout est rentré dans l' ordre.
Merci Klaus.
Revenir en haut Aller en bas
Minibug

Minibug


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

Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 EmptyJeu 15 Mar 2018 - 18:29

Bonsoir Klaus !

J'ai repris ton code d'Aujourd'hui à 12:21 et j'ai même rechargé la DLL.
Lors du premier clic sur la LISTBOX j'ai toujours la même erreur ! et seulement la première fois.
Après tout fonctionne correctement.  Suspect

As tu essayé de cliqué sur l'un des dossiers pour voir si tu rencontrais la même erreur ?

EDIT : Salut Yannick, ça fait plaisir de te voir ! cheers
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Contenu sponsorisé





Version d'essai d'un objet IconComboBox - Page 3 Empty
MessageSujet: Re: Version d'essai d'un objet IconComboBox   Version d'essai d'un objet IconComboBox - Page 3 Empty

Revenir en haut Aller en bas
 
Version d'essai d'un objet IconComboBox
Revenir en haut 
Page 3 sur 4Aller à la page : Précédent  1, 2, 3, 4  Suivant
 Sujets similaires
-
» version instantanée du 10 mai 2010: objet TIMER
» Nouvelle version de mon pseudo-objet GLIST
» Version instantanée V 0.9.28i9 possédant l'objet SYNEDIT
» D.I.C version Sub
» Détermine si oui ou non un objet est PARENT d'un autre objet

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: