| KGF_dll - nouvelles versions | |
|
+12JL35 Oscaribout bignono Pedro pascal10000 silverman Jicehel papydall Minibug Marc Yannick Klaus 16 participants |
|
Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 25 Avr 2017 - 1:27 | |
| J' ai un comportement pour le moins curieux.
J' applique les fonctions dans cet ordre :
- définition du début et de la fin de sélection - pliage des lignes - placer le curseur en début de ligne de sélection ( celle qui contient le [+] par setcursor)
dans ce cas seul la première ligne est replié
- aller à la ligne n°...(fonction 18)
dans ce cas, idem
- la même fonction avec ligne+1
pas de pliage | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 25 Avr 2017 - 1:47 | |
| As-tu affiché le contenu de ces 4 cellules du tableau selection% ?
Ou as-tu mal compris l'action du code 42 ? Ce code retourne ces valeurs, il ne les positionne pas ! Si tu veux plier par programme, il faut faire: - positionner le curseur dans la première ligne à plier par SyneditFunction code 18 - sélectionner le nombre de lignes que tu veux, par SyneditFunction code 14 - plier par SyneditFunction code 13 - repositionner le curseur sur la ligne initiale par SyneditFunction code 18
Si, par contre, tu veux plier une section de code selon une commande utilisateur (une commande d'un menu ou la touche fonction ctrl/P), il faut procéder comme suit: - récupérer les infos de sélection par SyneditFunction code 42 - ne rien faire si le code retour (res%) est <0 (erreur) ou 0 (rien n'est sélectionné) - faire le petit code posté ci-dessus pour déterminer le tableau debut% - plier par SyneditFunction code 13 - repositionner le curseur sur la ligne initiale par SyneditFunction code 18 avec debut%(1)
Et voilà. Ca marchera. Et, surtout, ne pas toucher au positionnement dans ce deuxième cas avant de plier - tu perdrais la sélection et de ce fait, le programme ne pliera qu'une seule ligne ! | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re Mar 25 Avr 2017 - 2:53 | |
| Je crois que tu m a mal lu. Je définis la position de debut de la sélection de l utilisateur par la fonction 42 Je replis les lignes par la 13 Je repositionne le curseur par la 18 sur la ligne de début mais là je constate que le pliage n a que la première ligne. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 25 Avr 2017 - 3:04 | |
| - Citation :
- Je définis la position de debut de la sélection de l utilisateur par la fonction 42
Mais non, justement ! Ce code 42 est fait pour retourner les limites de la zone sélectionnée, pas pour l'imposer ! Si la sélection est faite par l'utilisateur, alors fais ce que ke te dis: - récupérer les infos de sélection par SyneditFunction code 42 (ceci ne change rien visuellement, et ne modifie pas la sélection)- ne rien faire si le code retour (res%) est <0 (erreur) ou 0 (rien n'est sélectionné) - faire le petit code posté ci-dessus pour déterminer le tableau debut% il s'agit de - Code:
-
if selection%(3)>selection%(1) debut%(0) = selection%(2) debut%(1) = selection%(3) else if selection%(3)=selection%(1) if selection%(2)>=selection%(0) debut%(0) = selection%(2) debut%(1) = selection%(3) else debut%(0) = selection%(0) debut%(1) = selection%(1) end_if else debut%(0) = selection%(0) debut%(1) = selection%(1) end_if end_if - plier par SyneditFunction code 13 (tu obtiens la ligne de pliage, et toutes les lignes sélectionnées ont disparues. Le curseur est posé physiquement à l'endroit où était la fin du pliage)- repositionner le curseur sur la ligne initiale par SyneditFunction code 18 avec debut%(1) (et tu le retrouves sur la ligne de pliage) | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 25 Avr 2017 - 3:27 | |
| La séquence, pour prendre un compte le pliage d'une sélection de l'utilisateur, devrait être quelque chose comme: - Code:
-
dim selection%(3), debut%(1), res%
' Si la sélection est faite par l'utilisateur, alors fais ' récupérer les infos de sélection par SyneditFunction code 42 res% = dll_call3("SyneditFunction",SE%,42,adr(selection%)) ' (ceci ne change rien visuellement, et ne modifie pas la sélection) ' ne rien faire si le code retour (res%) est <0 (erreur) ou 0 (rien n'est sélectionné) if res%<=0 then exit_sub/return/... ' faire le petit code posté ci-dessus pour déterminer le tableau debut% ' il s'agit de if selection%(3)>selection%(1) debut%(0) = selection%(2) debut%(1) = selection%(3) else if selection%(3)=selection%(1) if selection%(2)>=selection%(0) debut%(0) = selection%(2) debut%(1) = selection%(3) else debut%(0) = selection%(0) debut%(1) = selection%(1) end_if else debut%(0) = selection%(0) debut%(1) = selection%(1) end_if end_if
' plier par SyneditFunction code 13 res% = dll_call3("SyneditFunction",SE%,13,0) ' (tu obtiens la ligne de pliage, et toutes les lignes sélectionnées ont disparues. ' Le curseur est posé physiquement à l'endroit où était la fin du pliage) ' repositionner le curseur sur la ligne initiale par SyneditFunction code 18 avec debut%(1) ' (et tu le retrouves sur la ligne de pliage) res% = dll_call3("SyneditFunction",SE%,18,debut%(1))
| |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 25 Avr 2017 - 10:14 | |
| Ben c' est bien ce que je dis. Tu viens de me faire exactement la démonstration de ce que je fais en un peu plus long. voilà ma fonction de pliage - Code:
-
' Plier/Déplier les lignes sub FolUnfoldLines() dim_local res%,i%,pos%
res% = dll_call3("SyneditFunction",ActiveSE%,42,adr(SynUserSelect%)) if SynUserSelect%(3)>SynUserSelect%(1) pos% = SynUserSelect%(1) else if SynUserSelect%(1)>SynUserSelect%(3) pos% = SynUserSelect%(3) else pos% = SynUserSelect%(1) end_if end_if if res%<>-1 res% = dll_call3("SyneditFunction",ActiveSE%,13,0) if res%=0 res% = dll_call3("SyneditFunction",ActiveSE%,18,pos%) end_if end_if end_sub voilà le code dans le synedit je sélectionne à la souris les lignes 1 à 3 (en commencant à la position (1-1) ) je clique sur plier et voilà le résultat on ne le voit pas sur la capture mais le curseur est bien en début de ligne 1, position (1-1) mais seul la ligne 1 est replié. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 25 Avr 2017 - 11:23 | |
| Nouvelle version: KGF.dll V7.51 du 25/04/2017
Nouveautés: - suite de restructuration générale (purement technique, sans incidence sur les fonctionnalités) - Synedit: après un pliage (ctrl/P ou SyneditFunction code 13), le curseur se place au début de la ligne de pliage
Modules modifiés: KGF.dll
La doc est inchangée. Les sources sont à jour.
@Yannick: J'ai choisi de faire ce positionnement directement dans la DLL. Donc, toute cette usine à gaz concernant le positionnement après pliage, tu peux l'oublier. Un simple SyneditFunction code 13 fait cela très bien. C'est d'ailleurs intégré dans la nouvelle version de Synedit_Editor que je publie également. | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| |
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 25 Avr 2017 - 13:39 | |
| Pour mémoire on aurait pu remplacer l' usine par ceci P%=min(T%(1),T%(3)) Min(X,Y) = le plus petit de X et Y et toujours bon à se rappeler, il existe sont pendant avec Max Max(X,Y) = le plus grand de X et Y Sinon...A quoi çà sert que Jack il se décarcasse ?... (vieille pub de Ducros ) | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 25 Avr 2017 - 17:21 | |
| Nouvelle version: KGF.dll V7.52 du 25/04/2017Nouveautés: - suite de restructuration générale (purement technique, sans incidence sur les fonctionnalités) - nouvelle fonction: SearchStringInAllTextFilesModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Cette nouvelle fonction prend en entrée un critère de recherche et un modèle de nom de fichier, éventuellement avec son chemin d'accès et des jokers * et ?. Elle va alors parcourir tous les fichiers du répertoire ciblé dont le nom correspond à la maquette et chercher toutes les occurrences du critère dans ces fichiers. Le résultat est hautement paramétrable: - choix de sortie (presse-papier, mémo, combo ou list) - chercher le critère entier ou chaque mot séparément - chercher le critère unquement en début de ligne ou n'importe où, dans la ligne - indiquer les numéros de ligne des endroits trouvés ou non La fonction est très rapide. Pour moi, j'ai généré un exe à partir du programme suivant, je l'ai placé dans un dossier et j'ai mis un raccourci vers cet outil sur le bureau. On peut spécifier un chemin de recherche avec le modèle, et la recherche aura lieu dans ce dossier. Le chemin peut être sélectionné par le bouton "...". Le résultat est présenté dans un objet LIST. Un clic sur une occurrence trouvée du critère affiche le chemin et nom complet du fichier concerné dans un EDIT en bas de la fenêtre, et ce résultat est également copié dans le presse-papier. De là, on peut facilement le coller dans un dialogue d'ouverture d'un outil quelconque, dans un code source etc. - Code:
-
' test_SearchStringInAllTextFiles.bas
label chercher, choix, folder
dim fic$, crit$, res%, ind%, s$, dir$, dirold$, i%, racine$, dossier$, temp$
dll_on "KGF.dll"
height 0,640 : width 0,470 alpha 1 : top 1,10 : left 1,10 : caption 1,"Modèle de fichier à utiliser:" edit 11 : top 11,30 : left 11,10 : width 11,400 alpha 2 : top 2,60 : left 2,10 : caption 2,"Critère à chercher:" edit 12 : top 12,80 : left 12,10 : width 12,400 button 3 : top 3,30 : left 3,415 : width 3,30 : font_bold 3 : caption 3,"..." : on_click 3,folder
list 20 : top 20,110 : left 20,10 : width 20,400 : height 20,400 : on_click 20,choix button 30 : top 30,520 : left 30,10 : caption 30,"Chercher" : on_click 30,chercher edit 31 : top 31,550 : left 31,10 : width 31,400
end
chercher: clear 20 text 31,"" fic$ = text$(11) crit$ = text$(12) dir$ = file_extract_path$(fic$) if dir$<>"" fic$ = mid$(fic$,len(dir$)+1,len(fic$)) dirold$ = dir_current$ dir_change dir$ end_if res% = dll_call6("SearchStringInAllTextFiles",adr(fic$),adr(crit$),1,0,3,handle(20)) if dir$<>"" then dir_change dirold$ message "Nombre d'occurrences trouvées: "+str$(res%) return choix: ind% = item_index(20) s$ = item_index$(20) while left$(s$,1)<>"(" ind% = ind% - 1 res% = dll_call2("SelectListBoxItem",handle(20),ind%) s$ = item_read$(20,ind%) end_while i% = instr(s$,">") text 31,dir$ + mid$(s$,i%+2,len(s$)) clipboard_string_copy text$(31) return
folder: if dossier$<>"" then racine$ = dossier$ temp$ = string$(255," ") res% = DLL_call4("FolderSelect",adr(racine$),adr(temp$),len(temp$),0) to_foreground 0 if res%=1 racine$ = trim$(temp$) + "\" text 11,racine$ end_if return | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 27 Avr 2017 - 1:20 | |
| Nouvelle version: KGF.dll V7.53 du 27/04/2017Nouveautés: - suite de restructuration générale (purement technique, sans incidence sur les fonctionnalités) - objet Synedit: nouveau bouton "Chercher toutes les occurrences..." dans la fenêtre de critère de recherches pour la fonction menu Edition/Recherche ou ctrl/FModules modifiés: KGF.dllLa doc est inchangée. Les sources seront à jour demain soir. C'est une évolution majeure de l'objet Synedit, qui reste totalement compatible avec les programmes qui l'utilisaient jusqu'à maintenant. Aucune modification du code Panoramic n'est requise - c'est une nouvelle fonctionnalité native de l'objet Synedit. Pour en voir un exemple, regarder la nouvelle version de Synedit_Editor, annoncée ici: https://panoramic.1fr1.net/t4079p125-synedit_editor-nouvelles-versions#64509Voir le dernier post de la page. Ce type de recherche peut servir, par exemple, à détecter toutes les définitions de SUB dans un code, ou tous les appels à une certaine fonction DLL, toute utilisation d'une variable spécifique etc. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Jeu 27 Avr 2017 - 18:56 | |
| Bonjour Klaus ! J'aurai voulu savoir s'il était possible de récupérer la ligne complète ou se situe le curseur dans SYNEDIT. J'ai bien la solution de récupérer le numéro de la ligne et ensuite charger le fichier dans un MEMO et récupérer la ligne dans le MEMO mais il y a peut être plus simple ? EDIT : Je viens trouver en testant la fonction res% = dll_call3("SyneditFunction",SE%,fun%,par%)J'ai utilisé le code 14 avec 1 en paramètres et ça fonctionne parfaitement. Désolé pour le dérangement. | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: question Jeu 27 Avr 2017 - 20:18 | |
| Klaus,
Actuellement pour choisir la couleur des "mots-clés" par exemple, on passe le nom de la couleur.
Ceci est il une obligation de Synedit ou peut on passer la valeur numérique de la couleur sous un format ou un autre ? | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 27 Avr 2017 - 22:25 | |
| - Citation :
- Actuellement pour choisir la couleur des "mots-clés" par exemple, on passe le nom de la couleur.
Ceci est il une obligation de Synedit ou peut on passer la valeur numérique de la couleur sous un format ou un autre ? Oui, actuellement, c'est fait ainsi. Il y a un large choix, avec des couleurs prédéfinies. Mais etant individualiste moi-même, je comprends l'envie de définir des couleurs non prévues. Je vais donc ajouter une ligne dans ma To-Do-List: - permettre la définition d'une couleur par #BBGGRR, donc la valeur RGB en hexa. Ce sera intégré dans le prochain développement. Actuellement, je suis en train de perfectionner le confort d'utilisation de la recherche globale qui, je crois, est un outil puissant ! | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 28 Avr 2017 - 0:26 | |
| Nouvelle version: KGF.dll V7.54 du 28/04/2017
Nouveautés: - suite de restructuration générale (purement technique, sans incidence sur les fonctionnalités) - objet Synedit: fonction de recherche globale: liste des résultats intégrée dans chaque fenêtre Synedit
Modules modifiés: KGF.dll
La doc est inchangée et sera mise à jour prochainement. Les sources seront mises à jour ultérieurement.
Cette modification est parfaitement opérationnelle et peut être utilisé par un programme Panoramic utilisant l'objet Synedit sans modification du code source.
Elle peut aussi être utilisée avec Synedit_Editor tel que contenu dans le programme actuel de distribution, cependant, cette distribution ne contient pas encore la version V7.54 de KGF.dll, mais seulement la V7.53 qui implémente déjà la recherche globale, mais affiche le résultat dans une fenêtre séparée. La version V7.54 peut être copiée simplement dans le dossier d'installation de Synedit_Editor pour pouvoir profiter du confort visuel bien plus grand de l'intégration de la liste des résultats de recherche dans la fenêtre Synedit.
Cette liste des résultats est initialement cachée pour chaque fenêtre Synedit. Elle n'apparaît qu'après l'exécution d'une recherche par le menu Edition/Recherche ou la touche ctrl/F, en utilisant le bouton "Chercher toutes les occurrences...". La liste des résultats apparaît alors dans la partie droite de la fenêtre. Un clic gauche sur une des lignes de résultat positionne le curseur sur la ligne correspondante dans la page Synedit. Un clic droit dans la liste des résultats la fait disparaître, jusqu'à la prochaine recherche. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Ven 28 Avr 2017 - 8:26 | |
| Bonjour Klaus !
Pourrais tu STP me donner un petit exemple pour SyneditFunction: code 41 et 19 ? Merci. | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 28 Avr 2017 - 9:56 | |
| @ Klaus Génial !!!Edit: Dommage que le height du List ne s' adapte pas à celui du Synedit. A moins que tu gardes la place pour autre chose. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 1 Mai 2017 - 18:36 | |
| Content que ma modif te plaise ! - Citation :
- Dommage que le height du List ne s' adapte pas à celui du Synedit.
C'est un simple oubli et qui sera corrige dans la version suivante (avec, en bas de la page juste sous la liste, un bouton "Fermer" n- même action que le clic droit) | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Lun 1 Mai 2017 - 18:55 | |
| Salut Klaus ! Ce qui est encore plus pratique c'est que les 2 recherches (la tienne et la mienne par 'repères') peuvent cohabiter sans aucun soucis. Ça c'est génial ! Comme dit Yannick il ne manque plus que l'adaptation a la hauteur du FORM et ce sera top ! - Spoiler:
Dernière édition par Laurent (Minibug) le Lun 1 Mai 2017 - 19:41, édité 1 fois | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 1 Mai 2017 - 19:09 | |
| Klaus, J' ai des créations de dossier bizarres et non commandées... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 1 Mai 2017 - 21:45 | |
| Nouvelle version: KGF.dll V7.55 du 01/05/2017Nouveautés: - suite de restructuration générale (purement technique, sans incidence sur les fonctionnalités) - objet Synedit: fonction de recherche globale: ajout d'un bouton "Fermer" et adaptation autmatique de la hauteurModules modifiés: KGF.dllLa doc est inchangée. Les sources sont à jour. Cette version apporte l'adaptation automatique en hauteur de la liste des résultats de recherche globale, et l'apparition d'un bouton de fermeture de cette liste de résutats (action identique au clic droit dans cette liste). @Laurent: - Citation :
- Comme dit Yannick il ne manque plus que l'adaptation a la hauteur du FORM et ce sera top !
Voilà qui est fait ! @Yannick: - Citation :
- J' ai des créations de dossier bizarres et non commandées.
Je ne pense pas que ça vienne de KGF.dll... | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Lun 1 Mai 2017 - 22:07 | |
| Klaus , je me permet une petite remarque... Lorsque l'on clique sur les résultats de la liste, ils n'apparaissent pas toujours en haut de page de SYNEDIT.c'est parfois déroutant. Tu devrais adopter la technique que j'ai appliqué sur ma recherche de 'repères'. Je descends d'abord tout à la fin en dernière ligne du source et j’effectue ensuite la recherche. Comme cela tu as toujours la ligne tout en haut du source ! Concernant la hauteur, tout est OK. Et le bouton FERMER est pratique lui aussi. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 1 Mai 2017 - 22:18 | |
| - Citation :
- Lorsque l'on clique sur les résultats de la liste, ils n'apparaissent pas toujours en haut de page de SYNEDIT.c'est parfois déroutant.
J'ai fait de sorte que la ligne visée soit dans le champ d'affichage, et que le curseur soit positionné au début de cette ligne. Mais je vais ajouter un code à SyneditFunction permettant de positionner n'importe quelle ligne en haut du champ d'affichage, ce qui pourra s'appliquer à l'évidente au cas décrit ici, mais qui aura une application plus générale. D'ailleurs, je te suggère de recharger la DLL, car je viens d'y appporter une modicication: la fonction SyneditConfigureHighlighter accepte maintenant une définition de couleur en format hexa sous forme $BBGGRR (un dollar suivi de 6 caractères hexa-décimaux), au lieu d'un nom de couleur prédéfinie. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Lun 1 Mai 2017 - 22:33 | |
| Ok je vais regarder dès que tu auras mis la doc à jour ! Klaus, penses tu qu'il sera possible d'utiliser les fonctions Synedit de KGF sur l'objet Synedit de Panoramic que Jack est en train d'ajouter ? | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 1 Mai 2017 - 22:37 | |
| - Citation :
- Klaus, penses tu qu'il sera possible d'utiliser les fonctions Synedit de KGF sur l'objet Synedit de Panoramic que Jack est en train d'ajouter ?
Non. il s'agit de mon implémentation de l'objet Synedit, antérieure à celle de Jack et totalement indépendante. | |
|
| |
Contenu sponsorisé
| Sujet: Re: KGF_dll - nouvelles versions | |
| |
|
| |
| KGF_dll - nouvelles versions | |
|