FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» PanExpress : l'éditeur Panoramic avec création d'objet
par Marc Aujourd'hui à 1:24

» Demande pour Jack concernant PanExpress
par Marc Hier à 23:56

» Calculatrice
par joeeee2017 Hier à 9:35

» EPP_V01 éditeur pour Panoramic
par Jean Claude Hier à 8:51

» Planétarium virtuel.
par Jean Claude Lun 17 Sep 2018 - 18:14

» Petit coucou en passant !
par Minibug Dim 16 Sep 2018 - 15:03

» bug SEVERE fnc+sub : variables globales corrompus
par silverman Dim 16 Sep 2018 - 13:38

» Verrouiller un form en avant plan
par silverman Dim 16 Sep 2018 - 12:50

» Fin de l'aventure.
par Pedro Alvarez Sam 15 Sep 2018 - 18:16

» Demande d'explications Sur File_Write & File_writeln
par Jack Sam 15 Sep 2018 - 17:26

» MEMO avec des possibilités de commande
par Oscaribout Mer 12 Sep 2018 - 1:06

» La théorie du chaos
par jean_debord Mar 11 Sep 2018 - 9:30

» Orbites de l’ensemble de Mandelbrot
par Jean Claude Lun 10 Sep 2018 - 21:08

» Version instantanée V 0.9.29i2 du 4/09/2018
par silverman Mer 5 Sep 2018 - 10:15

» Plantage lors de l'exécution de EXIT_SUB
par Jack Lun 3 Sep 2018 - 18:59

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2018
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
CalendrierCalendrier

Partagez | 
 

 Version d'essai d'un objet IconComboBox

Aller en bas 
Aller à la page : 1, 2, 3, 4  Suivant
AuteurMessage
Klaus

avatar

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

MessageSujet: Version d'essai d'un objet IconComboBox   Dim 4 Mar 2018 - 0:55

J'ai fait un ouvel objet: IconComboBox.

C'est comme une combo normale, mais chaque ligne a une icône prise dans une ImageList (voir les fonctions ImageList de KGF.dll pour cela). En plus, les éléments peuvent être décalés (indentés), un peu à la manière d'une vue arborescente. Un clic dans une de ces lignes déclenche un USER_EVENT qui donne le numéro de ligne.

En voici une démo:
Code:
' test_IconComboBox.bas


label creer, supprimer, UserEvent

dim res%, ICB%, IL%, no%, s$, WParam%, LParam%, index%, UserICB%
dim ilb$ : ilb$ = "KGF.ilb"


dll_on "KGF.dll"

on_user_event UserEvent


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

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

UserEvent:
  if bin_and(user_event_wparam,hex("FF000000"))<>hex("09000000") then return
  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 ligne "+str$(index%)+" = "+s$
  return

creer:
  if ICB%<>0 then return
  ICB% = dll_call2("CreateIconComboBox",handle(0),IL%)
  res% = dll_call5("LocateIconComboBox",ICB%,20,50,200,0)
  
  s$ = "Déjeuner"
  res% = 17
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),1,2,3,0)
  s$ = "Hors-d'oeuvres"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),4,5,6,1)
  s$ = "Pâté de campagne"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),7,8,9,2)
  s$ = "Radis/Beurre"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),10,11,12,2)
  s$ = "Plats"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),13,14,15,1)
  s$ = "Steak/frites"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),16,17,18,2)
  s$ = "Dîner"
  res% = dll_call6("AddItemToIconComboBox",ICB%,adr(s$),19,20,21,0)

  return

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

C'est encore en train d'évoluer, mais ça permet déjà d'avoir une bonne idée. Le programme de démo utilise KGF.ilb comme ImageList (disponible sur le WebDav), mais n'importe quel fichier ILB fera l'affaire.

Voici brièvement le format d'appel des fonctions existantes:
Code:
ÎCB% = dll_call2("CreateIconComboBox",handle(dest%,IL%) : ' IL% : identifiant d'une image list avec les icônes
res% = dll-call5("LocateIconComboBox",ICB%, x%,y%,w%,h%)
ICB% = dll-call1("DeleteIconComboBox",ICB%)
res% = dll_call6("AddItemToIconComboBox",ICB%,adr(txt$),ico1%,ico2%,ico3%, indent%) : ' icox%: index des icônes dans IL%  indent%: indentation  res%=index de la ligne ajoutée
res% = dll_call3("GetItemOfIconComboBox",ICB%, index%, adr(txt$))  : ' txt$: reçoit le libellé de la ligne cliquée
res% = dll_call2("SelectItemOfIconComboBox",ICB%,index%)


Dernière édition par Klaus le Dim 4 Mar 2018 - 11:23, édité 3 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Minibug

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Dim 4 Mar 2018 - 1:11

Encore une nouveauté ! cheers
Klaus j'arrive pas à te suivre. Çà va trop vite !!! drunken bounce king

Ah oui l'ilb. Il faut que je m'y remette alors...
J'ai toutes mes icones en BMP et comme mes programmes évoluent régulièrement, mes icones aussi !

STP, rappelle moi où je peux trouver le programme qui permet la création d'une bibliothèque ILB ?
Tu as bien du le mettre quelques part... Wink

Merci klaus
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Klaus

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Dim 4 Mar 2018 - 1:18

Citation :
rappelle moi où je peux trouver le programme qui permet la création d'une bibliothèque ILB ?
Dans mon WebDav, dossier DLLs, sous-dossier IcoLibrary. Laà il y a aussi une copie de KGF.ild (370 icônes actuellement).

Citation :
Klaus j'arrive pas à te suivre. Çà va trop vite !!!
Désolé, je suis actuellement dans une phase créative...

EDIT

Juste une petite remarque:
Pour la démo, j'utilise KGF.ilb, facilement téléchargeable sur mon WebDav. Mais n'importe quelle ILB fait l'affaire. KGF.ilb a des icônes de 16x16 pixels, mais on peut faire les dimensions qu'in veut, sachant que:
1. toutes les icônes d'une ILB doivent avoir les mêmes dimensions
2. les dimensions des images déterminent la hauteur des lignes de la combo
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Minibug

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Dim 4 Mar 2018 - 2:01

Bon ben ILB c'est pas pour moi !

J’essaie de faire une bibliothèque à partir de mes icônes (qui sont en fait des images BMP)
Il me semblait qu'on pouvait les utiliser tel que mais je n'y arrive pas !

Je me souviens avoir déjà essayé il y a un an ou 2, mais je n'y arrive pas ! Suspect
Entre la création d'une biblio et l'insertion des icônes, il ne se passe pas grand chose !

ILB C'est vraiment pas pour moi ! dommage... scratch
Tant pis, je reprendrai ça plus tard. Maintenant au lit...
Sleep Sleep Sleep
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Klaus

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Dim 4 Mar 2018 - 11:24

J'ai simplifié l'appel à CreateIconComboBox, en supprimant un des paramètres. Plus besoin de passer spécifiquement le handle de la form 0. Le code au début et la mini-doc des fonctions sont actualisés.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Minibug

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Dim 4 Mar 2018 - 20:39

Bonsoir Klaus,

Concernant la bibliothèque ILB, Quels sont les formats d'image autorisés pour les images à intégrer à la bibliothèque ?
Est ce que l'on peut utilisé les fichiers BMP ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Klaus

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Dim 4 Mar 2018 - 21:16

Tel que le programme est fait, ce sont des fichier *.ICO qui sont accecptés.

Mais un fichier ILB est beaucoup plus général que ça. La seule contrainte (et de taille !) est que toutes les images doivent avoir les mêmes dimensions. Peu importe des dimensions: 16x16, 32x32 etc pour les icônes, mais en fait tu peux faire 400x300, ou 1500x2000 etc, comme tu veux.

Cependant, dans ce cas, tu ne peux pas utiliser IcoLibrary pour la créer. Il te faut faire un petit programme Panoramic qui crée une ImageList via KGF.dll:
Code:
res% = dll_call2("CreateImageList",w%,h%)
en spécifiant largeur et hauteur. Puis, tu crées un picture dans lequel tu charges n'importe quelle image. Sugegstion: fais un OPEN_DIALOG avec Filter "Images|*.bmp;*.jpg;*.gif;*.png" et tu utilises
Code:
res% = dll_call1("LoadAnyImageFile",adr(nom$))
tout simplement pour charger l'image dans le presse-papier. A partir de là, tu peux utiliser:
Code:
res% = dll_call2("ResizePicture",w%,h%)
pour ajuster la taille de l'image du presse-papier à la taille imposée pour ton ImageList. Puis, tu utilises
Code:
res% = dll_call4("AddImageToImageList",IL%,0,trans%,RGB%)
pour ajouter l'image du presse-papier (car le deuxième paramètre est zéro !) dans ton ImageList.
Tu répètes ce cycle autant de fois que nécessaire, puis tu utilises
Code:
res% = dll_call2("SaveImageList",IL%,adr(fic$))
pour enregistrer ton ImageList dans un fichier ILB.

Et voilà - le tour est joué. Bien entendu, tu peux utiliser plus tard
Code:
res% = dll_call2("LoadImageList",IL%,adr(fic$))
pour recharger ce fichier dans une ImageList et ajouter d'autres images, etc.

Tout ça, c'est disponible et opérationnel dans KGF.dll.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Minibug

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Dim 4 Mar 2018 - 21:22

Bon je vais regarder ça alors !
Merci pour tes explications. Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Minibug

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Dim 4 Mar 2018 - 23:06

Désolé Klaus mais je n'y arrive pas !  Décidément je ne suis pas doué avec l'ILB. drunken Suspect

Voila le code que j'utilise en cherchant à ouvrir un fichier BMP de 15*15 comme tu me l'a suggérer.
J'ai encore du louper quelque chose car j'ai un ACCES VIOLATION lors du rechargement du fichier !

Code:

DIM res% , nom$ , ILB% , fic$

DLL_ON "KGF.dll"

ILB% = dll_call2("CreateImageList",15,15)

PICTURE 1 : LEFT 1,5 : TOP 1,5 : WIDTH 1,15 : HEIGHT 1,15
OPEN_DIALOG 2 : Filter 2,"Images|*.bmp;*.jpg;*.gif;*.png"

nom$=FILE_NAME$(2) : FILE_LOAD 1,nom$

res% = dll_call1("LoadAnyImageFile",adr(nom$))
res% = dll_call4("AddImageToImageList",ILB%,ADR(nom$),0,0)

fic$="D:\BASIC\GPP - 2.02\biblio.ilb"
res% = dll_call2("SaveImageList",ILB%,adr(fic$))

END
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Klaus

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Dim 4 Mar 2018 - 23:26

Ben, oui... tu n'as pas appelé CreateImageList. Donc, c'est normal.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Minibug

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Dim 4 Mar 2018 - 23:30

Euh ben je sais pas !

C'est quoi alors la 3eme ligne du programme : ILB% = dll_call2("CreateImageList",15,15)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Klaus

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Dim 4 Mar 2018 - 23:43

Oups... j'ai manqué ça... je vais regarder !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Minibug

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Lun 5 Mar 2018 - 0:02

Merci Klaus. Désolé pour le dérangement...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Klaus

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Lun 5 Mar 2018 - 0:18

Cela ne me dérange pas - faut jamais hésiter de me "pousser" en avant !

Tiens, essaie cet outil en Panoramic:
Code:
' ManageImageList.bas

label creer, charger, sauver, fermer, chargerimage
dim IL%, res%, no%, no_largeur%, no_hauteur%, no_open%, no_save%
dim w%, h%, f$

no% = no% + 1 : open_dialog no% : no_open% = no%
no% = no% + 1 : save_dialog no% : no_save% = no%

no% = no% + 1 : alpha no% : caption no%,"Largeur:"
no% = no% + 1 : spin no% : no_largeur% = no% : width no%,50
  left no%,50 : min no%,16 : max no%,800 : position no%,16
  
no% = no% + 1 : alpha no% : caption no%,"Hauteur:" : left no%,150
no% = no% + 1 : spin no% : no_hauteur% = no% : width no%,50
  left no%,200 : min no%,16 : max no%,600 : position no%,16
  
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%,left(no%-1)+width(no%-1) : caption no%,"Charger" : on_click no%,charger
no% = no% + 1 : button no% : top no%,40 : left no%,left(no%-1)+width(no%-1) : caption no%,"Sauver" : on_click no%,sauver
no% = no% + 1 : button no% : top no%,40 : left no%,left(no%-1)+width(no%-1) : caption no%,"Fermer" : on_click no%,fermer

no% = no% + 1 : button no% : top no%,70 : caption no%,"Image" : on_click no%,chargerimage

dll_on "KGF.dll"


end


creer:
  if IL%<>0 then return
  inactive no_largeur% : inactive no_hauteur%
  w% = position(no_largeur%)
  h% = position(no_hauteur%)
  IL% = dll_call2("CreateImageList",w%,h%)
  return
  
charger:
  if IL%=0 then return
  filter no_open%,"Librairies (ILB)|*.ilb"
  f$ = file_name$(no_open%)
  if f$="_" then return
  if file_exists(f$)=0
    message "Non trouvé"
    return
  end_if
  res% = dll_call2("LoadImageList",IL%,adr(f$))
  message str$(res%)+" images chargées"
  return
  
sauver:
  if IL%=0 then return
  filter no_save%,"Librairies (ILB)|*.ilb"
  f$ = file_name$(no_save%)
  if f$="_" then return
  if file_exists(f$)=1
    if message_confirmation_yes_no("Existe déjà. Remplacer ?")<>1 then return
  end_if
  res% = dll_call2("SaveImageList",IL%,adr(f$))
  return
  
fermer:
  if IL%=0 then return
  res% = dll_call1("DeleteImageList",IL%)
  IL% = 0
  active no_largeur%
  active no_hauteur%
  return
  
chargerimage:
  filter no_open%,"Images|*.bmp;*.jpg;*.gif;*.png"
  f$ = file_name$(no_open%)
  if f$="_" then return
  if file_exists(f$)=0
    message "Non trouvé"
    return
  end_if
  res% = dll_call1("LoadAnyImageFile",adr(f$))
  res% = dll_call2("ResizePicture",w%,h%)
  ' ======= ici, pas de couleur de transparence !
  res% = dll_call4("AddImageToImageList",IL%,0,0,0)
  return  
  

Commence par choisir tes dimensions d'image.
Puis clique sur "Créer" ==> il va créer la ImageList en mémoire
Puis, autant de fois que nécessaire, utilise le bouton "Image" pour choisir une image à intégrer.
Lorsque c'est fini, utilise le bouton "Sauver" pour choisir un nom de fichier extension ilb.
Finalement, clique sur "Fermer" pour libérer la ressource.

Tu peux reprendre ce fichier par "Créer", puis "Charger" et continuer d'ajouter des images par "Image", etc.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Lun 5 Mar 2018 - 0:31

Je viens de publier officiellement une version avec ces 3 objets, et avec la doc complète.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Lun 5 Mar 2018 - 1:09

Je suis en train d'expérimenter différentes tailles d'images. Pas de problème pour 16x16, mais d'autres perturbent l'affichage. Je travaille dessus...  En attendant, fais des essais avec 16x16, ou éventuellement 32x32. Mais il n'y a pas de plantage, ni dans le programme démo, ni dans la DLL, ni dans le petit outil Panoramic de maintenance d'une ILB.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Lun 5 Mar 2018 - 1:29

D'après ce que je peux trouver, techniquement, l'objet à la base de mon IconComboBox est bloqué sur des images de 16x16 pixels. Ceci est codé en dur dans l'objet et ne peut être changé. Je continue à chercher, mais il est peu probable de trouver une solution à cela. C'est tout simplement une question de conception de l'objet utilisé qui est un TComboBoxEx.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Minibug

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Lun 5 Mar 2018 - 7:30

Bonjour Klaus !

Je viens de tester ton outil et effectivement cela fonctionne.

Par contre j'ai essayé de récupérer le fichier ILB avec ton programme IcoLibrary.exe qui tu m'a conseillé sur le WEBDAV et lors du chargement du fichier ILB ça plante !

Voila pourquoi je n'y arrivais pas hier soir. drunken
Bon, là ce matin j'ai pas trop de temps, mais je regarderai ce soir en rentrant.

Encore merci Klaus.


Dernière édition par Minibug le Lun 5 Mar 2018 - 20:14, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Klaus

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Lun 5 Mar 2018 - 8:49

Tiens, j'ai trouvé une solution poour l'affichage d'images autres que 16x16 pixels ! J'ai encore un peu de travail à faire, mais je pense que ce sera opérationnel ce soir !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 5 Mar 2018 - 19:49

Bravo Klaus !

Trois objets qui vont rendre nos interfaces encore plus sympa.
cheers
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Lun 5 Mar 2018 - 21:40

Je publie ce soir une nouvelle version de KGF.dll qui réimplémente partiellement cet objet, justement.

J'ai supprimé cette notion de "3 icônes", mais j'ai rendu possible d'avoir des icônes de dimensions différentes des 16x16 pixels habituels. Bien entendu, cela change la hauteur des lignes...

J'ai maintenu la possibilité d'indentation des textes pour avoir une représentation similaire à une arborescence.

J'ai ajouté la possibilité de gérer une couleur de transparence, séparément pour chaque icône.

Le nouveau programme de démo permet, avant la création de l'objet, de sélectionner la présence ou non dez icônes, et l'utilisation ou non de l'indentation. Voici le nouveau programme:
Code:
' test_IconComboBox.bas


label creer, supprimer, UserEvent

dim res%, ICB%, IL%, no%, s$, WParam%, LParam%, index%, UserICB%
dim no_DoIcons%, no_DoIndent%, options%, transp%
' dim ilb$ : ilb$ = "KGF.ilb"
dim ilb$ : ilb$ = "MonTest_32x32.ilb"


dll_on "KGF.dll"

on_user_event UserEvent

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

' 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") then return
  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 ligne "+str$(index%)+" = "+s$
  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)
  
  res% = 17
  
 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

  return

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


Et voici ce que ça donne, avec une ILB de 32x32 pixels:


La 3ème ligne est intentionnellement programmée sans icône.
Le fichier MonTest_32x32.ilb contenant les 2 icônes 32x32 qui sont Android et le crane, sont déposées dans mon WebDav, dossier DLLs, sous-dossier IcoLibrary.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Minibug

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Lun 5 Mar 2018 - 22:00

Je viens de tester. C'est vraiment très bien Klaus.
Bravo ! cheers

J'en ai profité pour utiliser les bibliothèques ILB. Wink

EDIT :
Au fait Klaus, crois tu qu'il serait possible de mettre des icônes et l'indentation sur l'objet ScrollPanel ?
En fait cela éviterai la création des PICTUREs et des ALPHAs.
Ça serait super pratique ! drunken
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Klaus

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Lun 5 Mar 2018 - 22:26

Tu veux dire "placer un objet IconComboBox" sur un ScrollPanel ? Mai oui, c'est possible ! Tu places un objet quelconque sur un ScrollPanel en donnant son handle, n'est-ce pas ? Or, il y a une fonction ... oups - je viens de me rendre compte que j'ai oublié la fonction GetIconComboBoxHandle ! Ce sera fait tout de suite. Ensuite, tu pourras le faire sans problème !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Minibug

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Lun 5 Mar 2018 - 22:35

Heu, plutôt qu'un COMBO je le voyais plutôt comme un LIST avec icônes et indentation !

En fait ça serai de créer un objet IconList comme tu as créé un objet IconComboBox...

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Klaus

avatar

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

MessageSujet: Re: Version d'essai d'un objet IconComboBox   Lun 5 Mar 2018 - 23:38

IconList - c'est une idée. Je vais étudier la question.

En attendant, on a maintenant la fonction
Code:
res% = dll_call1("GetIconComboBoxHandle",ICB%)
qui retourne le handle. La doc suivra, mais la fonction est simple à utiliser.

Bon, c'est parti pour IconList...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé




MessageSujet: Re: Version d'essai d'un objet IconComboBox   

Revenir en haut Aller en bas
 
Version d'essai d'un objet IconComboBox
Revenir en haut 
Page 1 sur 4Aller à la page : 1, 2, 3, 4  Suivant
 Sujets similaires
-
» After effect CS4
» Version PDMS 12.0.SP6
» Offre promotionnelle : SnagIT 7.25 en version gratuite !
» Comment envoyer une détection chez avira avec Antivir 9 français - Version Classic
» Offre exceptionnelle : True Image 10 en version gratuite et complète

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: