Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| KGF_dll - nouvelles versions | |
|
+8JL35 Marc papydall Jicehel Yannick pascal10000 Minibug Klaus 12 participants | |
Auteur | Message |
---|
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mer 17 Fév 2016 - 9:57 | |
| Bonjour Klaus !
Concernant les commandes SYNEDIT
Lorsque l'on souhaite réinitialiser les couleurs des MOT CLE, CHAINES ou COMMENTAIRES par :
res% = dll_call4("SyneditConfigureHighlighter",Syn%(1),6,adr(s$),adr(c$))
Est ce que l'on est obligé de passer par un reinitialisation complete par la fonction :
res% = dll_call3("SyneditFunction",Syn%(1),3,adr(t$)) res% = dll_call4("SyneditConfigureHighlighter",Syn%(1),3,handle(571),0) etc...
Merci d'avance pour ta réponse | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 17 Fév 2016 - 13:06 | |
| Non, Minibug. Tous les codes fonction de SyneditConfigureHighlighter sont indépendants. Regarde comment c'est appelé dans Synedit_Editor.bas... | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mer 17 Fév 2016 - 14:45 | |
| Merci Klaus. Entre temps j'avais trouvé. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 17 Fév 2016 - 19:54 | |
| KGF.dll V6.00 du 17/02/2016Nouveautés: - nouveau code option 6 pour GetTreeViewInformation - nouvelles fonctions LoadTreeViewFromFile, SaveTreeViewToFile, ClearTreeViewModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Ces fonctions apportent sauvegarde et restauration d'un TreeView, ainsi qu'un moyen de connaître le nombre d'enfants d'un noeud. Voici une démo avec une petite appli de gestion de raccourcis: - Code:
-
' demo_raccourcis_avec_treeview.bas
' ce programme enregistre et lance des raccourcis, classés par thèmes
label close0, event, upd, del, new, load, empty, save if 1=2 label close0 label event label upd label del label new end_if
dim M1% : M1% = 0 - 1 dim kgf$ : kgf$ = "KGF.dll" dim res%, TV%, txt$, act%, lib$, lien$, typ%, cat%, niv%, p%, f$, ind% width 0,1000 : height 0,600 : on_close 0,close0 caption 0,"Gestion des raccourcis" dll_on kgf$ ' TV% = dll_call3("CreateTreeViewEx",handle(0),1,M1%) : ' créer le treeview TV% = dll_call3("CreateTreeView",handle(0),1,M1%) : ' créer le treeview res% = dll_call5("ResizeTreeView",TV%,10,10,400,500) : ' le dimensionner res% = dll_call4("SetTreeViewOptions",TV%,1,1,0) : ' libellés non éditables CreerStructure()
edit 17 : hide 17 : on_change 17,event res% = dll_call3("SetTreeViewEventReceiver",TV%,1,handle(17)) open_dialog 18 : filter 18,"Bibliothèques de raccourcis *.lrc|*.lrc" save_dialog 19 : filter 19,"Bibliothèques de raccourcis *.lrc|*.lrc"
panel 100 : top 100,10 : left 100,420 : width 100,500 : height 100,500
alpha 101 : parent 101,100 : left 101, 20 : top 101,20 : caption 101,"Libellé:" edit 102 : parent 102,100 : left 102,100 : top 102,20 : width 102,300
alpha 111 : parent 111,100 : left 111, 20 : top 111,50 : caption 111,"Lien:" edit 112 : parent 112,100 : left 112,100 : top 112,50 : width 112,300 alpha 121 : parent 121,100 : left 121, 20 : top 121,80 : caption 121,"Nature:" container_option 122 : parent 122,100 : left 122,100 : top 122,80 option 131 : parent 131,122 : top 131,20 : left 131,20 : caption 131,"Liens HTML" option 132 : parent 132,122 : top 132,40 : left 132,20 : caption 132,"Exécutables" option 133 : parent 133,122 : top 133,60 : left 133,20 : caption 133,"Adresses Mail" option 134 : parent 134,122 : top 134,80 : left 134,20 : caption 134,"Autres" button 151 : parent 151,100 : left 151,20 : top 151,200 : width 151,150 : caption 151,"Mettre à jour" on_click 151,upd button 152 : parent 152,100 : left 152,180 : top 152,200 : width 152,150 : caption 152,"Supprimer" on_click 152,del button 153 : parent 153,100 : left 153,340 : top 153,200 : width 153,150 : caption 153,"Créer" on_click 153,new button 154 : parent 154,100 : left 154,20 : top 154,240 : width 154,150 : caption 154,"Charger" on_click 154,load button 155 : parent 155,100 : left 155,180 : top 155,240 : width 155,150 : caption 155,"Vider" on_click 155,empty button 156 : parent 156,100 : left 156,340 : top 156,240 : width 156,150 : caption 156,"Sauver" on_click 156,save
mark_on 131 end close0: res% = dll_call2("DeleteTreeView",TV%,0) res% = dll_call1("KillProcessByHandle",handle(0)) return event: txt$ = text$(17) ind% = 0 ' message txt$ if left$(txt$,6)<>"click," then return res% = dll_call3("GetTreeViewInformation",TV%,6,0) ' message "nombre d'enfants="+str$(res%) if res%>0 text 102,"" text 112,"" mark_on 131 return end_if lien$ = string$(255," ") niv% = dll_call3("GetTreeViewInformation",TV%,5,adr(lien$)) if niv%<2 text 102,"" text 112,"" mark_on 131 return end_if lien$ = trim$(lien$) lib$ = string$(255," ") ind% = dll_call3("GetTreeViewInformation",TV%,2,adr(lib$)) lib$ = trim$(lib$) p% = instr(lien$,",") if p%>0 typ% = val(left$(lien$,p%-1)) lien$ = mid$(lien$,p%+1,len(lien$)) else typ% = val(lien$) lien$ = "" end_if text 102,lib$ text 112,lien$ mark_on 130+typ% return upd: if ind%=0 message "aucun élément sélectionné" return end_if lib$ = trim$(text$(102)) if lib$<>"" then res% = dll_call4("ChangeTreeViewNodeText",TV%,1,ind%,adr(lib$)) lien$ = str$(typ%)+","+trim$(text$(112)) res% = dll_call4("SetTreeViewOptions",TV%,1,5,adr(lien$)) return del: if ind%=0 message "aucun élément sélectionné" return end_if if message_confirmation_yes_no("Supprimer <"+text$(102)+"> ?")<>1 then return res% = dll_call1("DeleteTreeViewNode",TV%) text 102,"" text 112,"" ind% = 0 return new: lib$ = trim$(text$(102)) lien$ = trim$(text$(112)) if lib$="" message "Le libellé manque" return end_if if lien$="" message "Le lien manque" return end_if if checked(131)=1 then typ% = 1 if checked(132)=1 then typ% = 2 if checked(133)=1 then typ% = 3 if checked(134)=1 then typ% = 4 ChercherGroupe(typ%) res% = dll_call4("AddTreeViewChildNode",TV%,adr(lib$),15,148) lien$ = str$(typ%)+","+lien$ res% = dll_call4("SetTreeViewOptions",TV%,1,5,adr(lien$)) return load: f$ = file_name$(18) if f$="_" then return CorrigerNomFichier() if f$="_" message "Nom de fichier manquant" return end_if if file_exists(f$)=0 message "Librairie non trouvée" return end_if res% = dll_call2("LoadTreeViewFromFile",TV%,adr(f$)) return empty: if message_confirmation_yes_no("Vraiment tout effacer ?")<>1 then return res% = dll_call1("ClearTreeView",TV%) CreerStructure() return save: f$ = file_name$(18) if f$="_" then return CorrigerNomFichier() if f$="_" message "Nom de fichier manquant" return end_if if file_exists(f$)=1 if message_confirmation_yes_no("Librairie existe déjà. Remplacer ?")<>1 then return end_if res% = dll_call2("SaveTreeViewToFile",TV%,adr(f$)) return sub CreerStructure() txt$ = "Raccourcis" res% = dll_call4("AddTreeViewRootNode",TV%,adr(txt$),219,219) txt$ = "Liens HTML" res% = dll_call4("AddTreeViewChildNode",TV%,adr(txt$),141,141) lien$ = "1" res% = dll_call4("SetTreeViewOptions",TV%,1,5,adr(lien$)) res% = dll_call3("SelectTreeViewNode",TV%,0,0) txt$ = "Exécutables" res% = dll_call4("AddTreeViewChildNode",TV%,adr(txt$),252,252) lien$ = "2" res% = dll_call4("SetTreeViewOptions",TV%,1,5,adr(lien$)) res% = dll_call3("SelectTreeViewNode",TV%,0,0) txt$ = "Adresses Mail" res% = dll_call4("AddTreeViewChildNode",TV%,adr(txt$),260,260) lien$ = "3" res% = dll_call4("SetTreeViewOptions",TV%,1,5,adr(lien$)) res% = dll_call3("SelectTreeViewNode",TV%,0,0) txt$ = "Autres" res% = dll_call4("AddTreeViewChildNode",TV%,adr(txt$),255,255) lien$ = "4" res% = dll_call4("SetTreeViewOptions",TV%,1,5,adr(lien$)) end_sub sub ChercherGroupe(n%) dim_local n1% res% = dll_call3("SelectTreeViewNode",TV%,0,0) cat% = dll_call3("NavigateTreeView",TV%,6,0) : ' premier enfant n1% = 1 while n1%<n% cat% = dll_call3("NavigateTreeView",TV%,4,0) : ' soeur suivante n1% = n1% + 1 end_while end_sub
sub CorrigerNomFichier() dim_local ext$ ext$ = lower$(file_extract_extension$(f$)) if ext$<>".lrc" if ext$<>"" then f$ = left$(f$,len(f$)-len(ext$)) f$ = f$ + ".lrc" end_if if f$=".lrc" then f$ = "_" end_sub
Et voici un fichier démo.lrc contenant uen version qu'un peut charger par le bouton "Charger": - Code:
-
0 0,-2147483643,218,218 Raccourcis
1,-2147483643,140,140 Liens HTML 1 2,-2147483643,14,147 Forum Panoramic 1,http://panoramic.1fr1.net/ 2,-2147483643,14,147 Aide KGF.dll 1,http://klauspanoramic.olympe.in/KGF.html?SommaireIndex.html 1,-2147483643,251,251 Exécutables 2 1,-2147483643,259,259 Adresses Mail 3 1,-2147483643,254,254 Autres 4 2,-2147483643,14,147 Info à supprimer 4,essai #END | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 18 Fév 2016 - 16:51 | |
| KGF.dll V6.01 du 18/02/2016Nouveautés: - restructuration technique interne pour l'objet TreeView (sans conséquences pour le codage Panoramic) - nouvelle fonction ExtractImageFromImageList - extension de fonctionnement de fonction AddImageToImageListModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. La fonction ExtractImageFromImageList permet d'extraire n'importe quelle image individuelle d'un objet ImageList et de la placer, soit dans un fichier BMP, soit dans le presse-papier. De plus, optionnellement, l'image extraite peut être supprimée dans l'objet ImageList, après extraction. La fonction AddImageToImageList prenait une image contenue dans un fichier pour l'ajouter à un objet ImageList. Maintenant, elle est également capable de prendre une image présente dans le presse-papier, sans passer par un fichier. Voici une petite démo qui extrait 16 icônes 16x16 pixels d'une librairie d'images (prévu pour fonctionner avec KGF.ilb): - Code:
-
' test_ExtractImageFromImageList.bas
' Ce programme est prévu pour KGF.ilb. ' Pour une autre libairie, changer dimensions, nombre et positions des picture.
dim IL%, res%, i%, f$
dll_on "KGF.dll"
open_dialog 99 : filter 99,"Bibliothèque d'images *.ilb|*.ilb"
for i%=1 to 16 picture i% : top i%,10 : left i%,10+i%*20 : height i%,16 : width i%,16 next i%
f$ = file_name$(99) if f$="_" then terminate
IL% = dll_call2("CreateImageList",16,16) res% = dll_call2("LoadImageList",IL%,adr(f$)) if res%<0 message "Erreur ouverture" terminate end_if
for i%=1 to 16 res% = dll_call5("ExtractImageFromImageList",IL%,i%,1,1,0) if res%<0 message "Erreur extraction" terminate end_if clipboard_paste i% display pause 200 next i%
end
| |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Dim 21 Fév 2016 - 11:49 | |
| Klaus, concernant les fenêtre SYNEDIT, y a t il un nombre maximum de fenêtre que l'on peut ouvrir simultanément ?
Par exemple pour panoramic, je suis sur un projet et je souhaite partager mon programme en plusieurs fenêtres :
Fenetre 1 : Le menu principal Fenetre 2 : Option graphique Fenetre 3 : .....
Dans un tel cas ( C'est juste un exemple), y a t il une limite au nombre de ces fenetres ?
Merci d'avance pour ta réponse | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 21 Fév 2016 - 12:22 | |
| Oui, il y a une limite. le système est limité à 100 fenêtres Synedit. Ca laisse de la marge... | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Dim 21 Fév 2016 - 12:28 | |
| Oui effectivement !
J'espérais une dizaine ou une vingtaine d'objets, donc bien au delà de mes espérance... Merci Klaus | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 21 Fév 2016 - 15:59 | |
| J' ai tenté cela : - Code:
-
TV% = dll_call3("CreateTreeViewEx",handle(pan%(1)),1,adr(imglist$)) res% = dll_call3("SetTreeViewEventReceiver",TV%,1,handle(TVinfo%)) res% = dll_call5("ResizeTreeView",TV%,M%,M%,M%,M%) txt$ = "G:\" res% = dll_call2("LoadFolderTreeToTreeView",TV%,adr(txt$)) res% = dll_call4("SetTreeViewOptions",TV%,1,7,2) res% = dll_call4("SetTreeViewOptions",TV%,1,8,3) mais rien l' emplacement de l' icone est blanc. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 21 Fév 2016 - 16:23 | |
| Première remarque: en cas de problème, après chaque appel, vérifie la valeur du code retourné. Systématiquement. Cmme ça, s'il y a une anomalie, tu sauras sur quelle ligne... - Citation :
- TV% = dll_call3("CreateTreeViewEx",handle(pan%(1)),1,adr(imglist$))
Est-ce que la variable imglist$ contient bien le chemin et le nom d'un fichier valide pour ça ? Est-ce que le fichier existe ? - Citation :
- res% = dll_call4("SetTreeViewOptions",TV%,1,7,2)
res% = dll_call4("SetTreeViewOptions",TV%,1,8,3) Tu établis l'icone 2 pour "dossier fermé" et l'icône 3 pour "dossier ouvert". Est-ce que c'est ce que tu veux ? Est-ce que ces icônes sont bien présentes dans le fichier bibliothèque ? Pourrais-tu essayer de placer ces lignes devant la ligne - Citation :
- res% = dll_call2("LoadFolderTreeToTreeView",TV%,adr(txt$))
Il peut y avoir une multitude de causes à ton problème. La principale est l'absence de la bibliothèque (ou chemin erronné), ou une bibliothèque invalide. Utilise les fonctions ImageList pour charger la bibliothèque dans un objet ImageList, avec la variable imglist$ telle que tu l'as dans le programme. Puis crée 2 pictures, extrais les icônes 2 et 3 et copie-les chacune dans un de ces picture. Est-ce qu'elles s'affichent ? | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 21 Fév 2016 - 17:47 | |
| Effectivement, l' ordre des déclarations est celui ci : - Code:
-
TV% = dll_call3("CreateTreeViewEx",handle(pan%(1)),1,imgl%) res% = dll_call3("SetTreeViewEventReceiver",TV%,1,handle(TVinfo%)) res% = dll_call5("ResizeTreeView",TV%,M%,M%,M%,M%) txt$ = "G:\" res% = dll_call4("SetTreeViewOptions",TV%,1,7,1) res% = dll_call4("SetTreeViewOptions",TV%,1,8,2) res% = dll_call2("LoadFolderTreeToTreeView",TV%,adr(txt$)) Peut-être devrais tu le signaler dans la doc ?... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 21 Fév 2016 - 18:34 | |
| D'accord, Ygeronimi. Je le ferai.
EDIT
C'est fait. La doc de la fonction LoadFolderTreetoTreeView a été complétée. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Dim 21 Fév 2016 - 19:34 | |
| Au secours Klaus ! J'ai un soucis avec res% = dll_call1("ClearTreeView",arbo%)voici l'image du message [img:eed0] https://servimg.com/view/17699291/24]Et la ligne 424 : res% = dll_call1("ClearTreeView",arbo%)Je ne comprends pas | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Dim 21 Fév 2016 - 19:48 | |
| Ca fonctionne Klaus ! Juste que je n'avais pas la dernière version. C'est un oubli de ma part. Désolé !!! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 21 Fév 2016 - 19:50 | |
| Moi non plus. Ceci marche parfaitement: - Code:
-
dim TV%, res%, M1%, dir$ M1% = 0 - 1
dll_on "KGF.dll"
TV% =dll_call3("CreateTreeViewEx",handle(0),1,M1%) res% = dll_call4("SetTreeViewOptions",TV%,0,1,0) res% = dll_call5("ResizeTreeView",TV%,M1%,M1%,M1%,M1%)
dir$ = dir_current$ res% = dll_call2("LoadFolderTreeToTreeView",TV%,adr(dir$))
message "on va effacer..."
res% = dll_call1("ClearTreeView",TV%)
end Est-ce que la variable arbo% est définie ? Le message d'erreur indique une erreur de Panoramic, avant même de rentrer dans la DLL. Essaie le petit code ci-dessus... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 22 Fév 2016 - 2:40 | |
| KGF.dll V6.02 du 22/02/2016Nouveautés: - nouvelles fonction: TakeObjectScreenshot et TakeObjectScreenshotExModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Voici une démo qui fait une capture d'un Scene2d: - Code:
-
' test_TakeObjectScreenshot.bas
dim res%, fic$ width 0,800 : height 0,600 left 0,250 : top 0,20 alpha 11 : top 11,80 : left 11,50 : caption 11,"Scene2d original:" scene2d 1 : width 1,300 : height 1,200 left 1,50 : top 1,100 color 1,255,0,0 button 2 : top 2,140 : left 2,80 : caption 2,"Mon bouton" alpha 12 : top 12,80 : left 12,360 : caption 12,"Picture avec une copie:" picture 3 : width 3,300 : height 3,200 left 3,360 : top 3,100 alpha 13 : top 13,320 : left 13,360 : caption 13,"Picture avec un extrait:" picture 4 : width 4,100 : height 4,60 left 4,360 : top 4,340 display
dll_on "KGF.dll"
' prendre la photo du scene2d entier: res% = dll_call2("TakeObjectScreenshot",handle(1),0) clipboard_paste 3 ' prendre la photo d'un extrait du scene2d: res% = dll_call6("TakeObjectScreenshotEx",handle(1),0,70,20,100,60) clipboard_paste 4
' ou: ' fic$ = "MonFichierBmp.bmp" ' res% = dll_call2("TestKGF",handle(1),adr(fic$)) ' file_load 3,fic$
end
Ca marche avec tous les objets ayant un handle. Dans cette démo, le deuxième paramètre est passé comme 0 (zéro). Dans ce cas, la capture est placée dans le presse-papier. Sinon, on passe adr(fic$), avec fic$ contenant un chemin et nom de fichier BMP, et la capture sera déposée dans ce fichier. La version TakeObjectScreenshotEx de cette fonction permet, en plus, de spécifier un rectangle d'extraction pour l'objet ciblé. Dans le cas d'un Scene2d, ceci peut permettre de capturer juste un sprite, par exemple. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Lun 22 Fév 2016 - 10:52 | |
| Bonjour Klaus ! J'ai une petite surprise ce matin sur l'arborescence en utilisant GPP sur un autre PC. Je fais en sorte que lorsque je clique sur l'arborescence, le texte s'affiche en gras et lorsque je clique a nouveau j'ai une variable qui mémorise la position dans l'arborescence et passe le texte en normal et active en gras la nouvelle ligne cliquée. En fait on dirait que lorsque je repasse le texte en normal, il reste "un bout" de texte en gras derriere ! Je n'ai pas ce problème sur mon autre PC avec la même version de PANO et KGF et GPP. Bizarre non " /> | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 22 Fév 2016 - 11:04 | |
| Bizarre, ta capture - on n'y voit rien ! Et non, je n'ai pas d'explication facile. Ce qui marche sur une machine doit marcher sur une autre, si l'environnement logiciel est le même: même version de Panoramic et même version de KGF.dll. Je n'utilise aucune ressource externe.
EDIT
On s'est croisé... Je vois beaucoup mieux, maintenant. Et cette image me donne une piste de réflexion... Je vais voir ça ! | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Lun 22 Fév 2016 - 11:06 | |
| oupsss !
Petit soucis avec la capture... Maintenant c'est mieux ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 22 Fév 2016 - 13:31 | |
| KGF.dll V6.03 du 22/02/2016Nouveautés: - correction d'un même bug dans les 3 fonctions créant des noeuds et dans TreeViewFunction ( ceci concerne l'enregistrement des libellés et du texte utilisateur) - amélioration de l'affichage "customisé" des libellés des noeudsModules modifiés: KGF.dllLa doc est inchangée. Les sources sont à jour. Voici la petite démo: - Code:
-
' test_treeview.bas
label close0, TV1_event
dim res%, TV1%, txt$, ind%, child%, img$, ClickFlag%, s$, p%, noeud%, PM% dim OldCell$, NewCell$ dim M1% : m1% = 0 - 1
dll_on "KGF.dll"
on_close 0,close0
edit 17 : hide 17 : on_change 17,TV1_event
img$ = "C:\Users\klausgunther\Documents\Mes projets\Mes projets Delphi\KGF\TestImageList.dat" if message_confirmation_yes_no("Optimiser le double-clic ?")=1 TV1% = dll_call3("CreateTreeViewEx",handle(0),1,adr(img$)) else TV1% = dll_call3("CreateTreeView",handle(0),1,adr(img$)) end_if if message_confirmation_yes_no("Libelles éditables ?")=1 res% = dll_call4("SetTreeViewOptions",TV1%,1,1,0) else res% = dll_call4("SetTreeViewOptions",TV1%,0,1,0) end_if
' res% = dll_call5("ResizeTreeView",TV1%,40,10,400,300) res% = dll_call5("ResizeTreeView",TV1%,M1%,M1%,M1%,M1%)
txt$ = "Racine" ind% = dll_call4("AddTreeViewRootNode",TV1%,adr(txt$),1,1) txt$ = "Enfant 1" child% = dll_call4("AddTreeViewChildNode",TV1%,adr(txt$),2,1) txt$ = "Enfant 1a" res% = dll_call4("AddTreeViewChildNode",TV1%,adr(txt$),3,1) res% = dll_call3("SelectTreeViewNode",TV1%,ind%,0) txt$ = "Enfant 2" res% = dll_call4("AddTreeViewChildNode",TV1%,adr(txt$),4,1) res% = dll_call3("SelectTreeViewNode",TV1%,child%,0) txt$ = "Insertion devant enfant 1" if res%<=child% then child% = child% + 1 res% = dll_call5("InsertTreeViewNode",TV1%,0,adr(txt$),5,1)
res% = dll_call3("SelectTreeViewNode",TV1%,res%,0) res% = dll_call4("SetTreeViewOptions",TV1%,1,4,3) : ' texte de la ligne sélectionné en gras et italique
res% = dll_call3("SelectTreeViewNode",TV1%,child%,0) txt$ = "Insertion après enfant 1" res% = dll_call5("InsertTreeViewNode",TV1%,1,adr(txt$),4,1) ' res% = dll_call3("SelectTreeViewNode",TV1%,child%,0) ' res% = dll_call1("DeleteTreeViewNode",TV1%)
' res% = dll_call2("DeleteTreeView",TV1%,0)
res% = dll_call3("SetTreeViewEventReceiver",TV1%,1,handle(17))
width 0,width(0) + 300 memo 18 : left 18,610 : width 18,200 : height 18,400 : bar_both 18
message "On va changer la 5ème ligne..." newcell$ = "azerty" res% = dll_call4("ChangeTreeViewNodeText",TV1%,1,4,adr(NewCell$)) res% = dll_call3("SelectTreeViewNode",TV1%,4,0) s$ = "Ce noeud a été créé le "+date$+" à "+time$+" heures" res% = dll_call4("SetTreeViewOptions",TV1%,1,5,adr(s$)) item_add 18,"" res% = dll_call3("GetTreeViewInformation",TV1%,0,0) item_add 18,"Nombre total de noeud: "+str$(res%) res% = dll_call3("GetTreeViewInformation",TV1%,1,0) item_add 18,"Indice du noeud sélectionné: "+str$(res%) s$ = string$(255,"*") res% = dll_call3("GetTreeViewInformation",TV1%,2,adr(s$)) item_add 18,"texte du noeud sélectionné: "+trim$(s$) item_add 18,"" res% = dll_call4("SetTreeViewOptions",TV1%,1,2,255*256*256) : ' tout le texte en bleu res% = dll_call4("SetTreeViewOptions",TV1%,1,3,255) : ' texte de la ligne sélectionné en rouge res% = dll_call4("SetTreeViewOptions",TV1%,1,4,3) : ' texte de la ligne sélectionné en gras et italique res% = dll_call3("SelectTreeViewNode",TV1%,0,1)
if 1=2 PM% = dll_call1("CreateTVPopupMenu",handle(17)) s$ = "popup ligne 1" res% = dll_call4("CreateTVPopupMenuItem",PM%,1,0,adr(s$)) s$ = "popup ligne 2" res% = dll_call4("CreateTVPopupMenuItem",PM%,1,0,adr(s$)) res% = dll_call4("SetTreeViewOptions",TV1%,1,9,PM%) : ' popup menu end_if
end
close0: res% = dll_call2("DeleteTreeView",TV1%,0) ' res% = dll_call1("DeleteTVPopupMenu",PM%) return TV1_event: s$ = text$(17) item_add 18,"TV1: "+s$ res% = dll_call4("SetTreeViewOptions",TV1%,2,5,0) if res%>0 s$ = string$(res%," ") res% = dll_call3("GetTreeViewInformation",TV1%,5,adr(s$)) s$ = trim$(s$) if len(s$)>0 then item_add 18," "+s$ end_if
if left$(s$,8)="editing," s$ = mid$(s$,9,len(s$)) p% = instr(s$,",") noeud% = val(left$(s$,p%-1)) OldCell$ = mid$(s$,p%+1,len(s$)) ' item_add 18,"Old "+str$(noeud%)+": "+OldCell$ return end_if if left$(s$,7)="edited," : ' exemple: on interdit la saisie d'un "$" s$ = mid$(s$,8,len(s$)) p% = instr(s$,",") noeud% = val(left$(s$,p%-1)) NewCell$ = mid$(s$,p%+1,len(s$)) p% = instr(NewCell$,"$") while p%>0 NewCell$ = mid$(NewCell$,1,p%-1)+mid$(NewCell$,p%+1,len(NewCell$)) p% = instr(NewCell$,"$") end_while res% = dll_call4("ChangeTreeViewNodeText",TV1%,2,0,adr(NewCell$)) item_add 18,"New "+str$(noeud%)+": "+NewCell$ return end_if return
| |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Lun 22 Fév 2016 - 14:30 | |
| Ok, c'est parfait ! Comme d'habitude, clair, net et précis. Merci Klaus. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 22 Fév 2016 - 14:34 | |
| | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Lun 22 Fév 2016 - 15:08 | |
| Ah non je n'ai pas regarder !
Quel peut être l’intérêt dans le cas de GPP ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 22 Fév 2016 - 15:27 | |
| Ben, tu pourrais mémoriser dans cette chaîne, pour chaque noeud, des attributs particuliers, avec des CR LF comme séparateurs. Bien sûr, tu peux aussi les mettre dans un ou plusieurs tableaux Panoramic. Mais en cas de suppression, il y a tout le travail de purge à faire. Par contre, si c'est géré dans le TreeView, tout cela est automatique. Tu peux, lors d'un clic sur un neud, récupérer automatiquement cette chaîne UserText et la décomposer les valeurs en utilisant une DLIST ou un composant StringList de KGF.dll, à l'aide de la fonction AddStringListItem, sachant que tu récupères autant de lignes que de valeurs séparées par CR LF.
Tu pourrais aussi utiliser n'importe quel caractère comme séparateur et utiliser les fonctions KGFDelimitedText... pour extraire tel ou tel paramètre.
Cela peut aussi servir à mémoriser, pour chaque noeud, un texte d'aide ou toute autre information spécifique à ce noeud. Pour KGF.dll, c'est juste un texte libre, propre à chaque noeud. Par défaut, chaque noeud a une chaîne vide comme UserText. Regarde ma petite démo ci-dessus: une des lignes a un UserText non vide, et il s'affiche en cliquant dessus...
En plus, si tu sauvegardes un TreeView déjà peuplé, tu peux le restituer plus tard, tel qu'il était. Y compris ses propriétés UserText - c'est automatique.
Voilà. Je voulais juste que tu aies les billes en main pour faire tes choix.
EDIT
Dans le cas d'un TreeView chargé avec l'arborescence de dossiers, on pourrait mettre en UserText, deux valeurs qui pourraient être le nombre de fichiers du dossier et la taille globale des fichiers du dossier... | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Lun 22 Fév 2016 - 15:55 | |
| D'accord, je comprends mieux le principe. Ce qui serait top ce serai de conserver tous les parametres standards des objets (top, left, largeur, hauteur, caption, etc...). Par contre comment identifier les separateurs (tu parles de CR LF ) comment cela se code ? C'est bête mais je ne connais que de nom ! Habituellement j'utilise ou des formats delimité ou des sépérateurs (; ou / etc) ou bien dans le cas présent un grid. Le problème c'est que dans cette variable il y aura des chaines comme les CAPTIONs ou les HINTs. Donc pour les séparateurs, je dois oublier... | |
| | | Contenu sponsorisé
| Sujet: Re: KGF_dll - nouvelles versions | |
| |
| | | | KGF_dll - nouvelles versions | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |