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 | |
|
+6papydall Marc jean_debord Minibug JP06 Klaus 10 participants | |
Auteur | Message |
---|
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Dim 17 Déc 2023 - 10:01 | |
| - Citation :
- Je suis en train de le faire évoluer, pour définit la largeur et/ou la hauteur des boutons et pour pouvoir afficher plusieurs lignes ou colonnes de boutons.
Extra! Excellente idée ! - Citation :
- Citation :
A vérifier : la commande ButtonGlyph ne fonctionne que si au moins 4 onglets sont créés.
Réponse : Oui, c'est normal. Il faut bien les 4 images pour constituer. D'ailleurs, dans mon post avec la liste des commandes, il est bien spécifie... Quiproquo : je parlais de 4 ONGLETS, pas de 4 images. Par exemple, le glyphe ne fonctionne pas avec ce script : - Code:
-
Label,0,Tab 1; AddTab,Tab 2; AddTab,Tab 3; Glyph,0,android.bmp; Glyph,1,android(90).bmp; Glyph,2,android(180).bmp; Glyph,3,android(270).bmp; ButtonGlyph,1; Si tu ajoutes un onglet, cela fonctionne. Pour résumer, en dessous de 4 onglets, la fonction glyph est inopérante. Merci Klaus et bonne continuation ! Edit : J'ajoute un source avec l'anomalie et un sans l'anomalie : Pas de glyphe : - Code:
-
dim res%, KT%, s$, hnd%
dll_on "KGF.dll" KT% = dll_call1("CreateKGFTab",handle(0))
memo 1 hide 1 item_add 1,"Label,0,Tab 1;" item_add 1,"AddTab,Tab 2;" item_add 1,"AddTab,Tab 3;" item_add 1,"Glyph,0,android.bmp;" item_add 1,"Glyph,1,android(90).bmp;" item_add 1,"Glyph,2,android(180).bmp;" item_add 1,"Glyph,3,android(270).bmp;" item_add 1,"ButtonGlyph,0;"
res% = dll_call2("ConfigureKGFTab",KT%,handle(1))
end Glyphe présent : - Code:
-
dim res%, KT%, s$, hnd%
dll_on "KGF.dll" KT% = dll_call1("CreateKGFTab",handle(0))
memo 1 hide 1 item_add 1,"Label,0,Tab 1;" item_add 1,"AddTab,Tab 2;" item_add 1,"AddTab,Tab 3;" item_add 1,"AddTab,Tab 4;" item_add 1,"Glyph,0,android.bmp;" item_add 1,"Glyph,1,android(90).bmp;" item_add 1,"Glyph,2,android(180).bmp;" item_add 1,"Glyph,3,android(270).bmp;" item_add 1,"ButtonGlyph,0;"
res% = dll_call2("ConfigureKGFTab",KT%,handle(1))
end | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 17 Déc 2023 - 10:53 | |
| Merci, Marc.
J'ai trouvén et je l'ai corrigé. Ca fonctionne maintenant... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 17 Déc 2023 - 12:34 | |
| J'ai déposé une version améliorée permettant des boutons en lignes ou colonnes multiples dans toutes les positions (haut, hauche, bas ou droite). Tout s'ajuste automatiquement. On peut aussi maiintenant ajuster la taille de l'icône (glyph) entre 8 et 64 pixels, par la commande glyphsize. Voici la nouvelle liste des commandes de script: - Code:
-
parent,<handle>; handle de l'objegt dans lequel le TKGFTab doit apparaître left,<position>; position gauche en pixels du TKGFTab top,<position>; position haute en pixels du TKGFTab width,<dimension>; largeur en pixels du TKGFTab height,<dimension>; hauteur en pixels du TKGFTab label,<ind>,<libellé>; index et libelle d'un bouton existant addtab,<libellé>; libellé du nouveau bouton inserttab,<ind>,<libellé>; index d'un bouton existant pour l'insertion et le nouveau libellé deletetab,<Ind>; index du bouton et de la feuille à supprimer insertcontrol,<ind>,<contrôle>; indice de la page, contrôle (integer(Control) ou Object_Internal(n) ou handle ) glyph,<ind>,<fichier>; index (0...3) de la partie du glupf à charger par l'image dans le fichier buttonglyph,<ind>; index du bouton dans lequel installer le glyph assemblé avec 4 images tabhandles; (retourne la liste des handles des pages) buttonheight,<dimension>; hauteur des boutons buttonwidth,<dimension>; largeur des boutons buttonposition,<choix>; choix de la position des boutons (0...3) tabcolor,<ind>,<couleur>; index d'une page et sa culeur de fond (RGB en hexa précédé par un "$") tabactivate,<ind>,<état>; index d'une page et etat d'activation (1=inactive <>0 = active) multirow,<choix>; gérer les boutons sur lignes/clonnes multiples 0=désactivé 1=activé glyphsize,<dimension>; définir la taille des icônes (défaut: 16 pixels)
Le programme de démo a été adapté, en ajoutant un bouton "Alphabet" créant 26 onglets avec de petits boutons portant juste une lettre comme libellé: - Code:
-
' test_KGFTab.bas
label close0, demo, alphabet, script, test
dim res%, KT%, s$, hnd%, i%
dll_on "KGF.dll"
full_space 0 : on_close 0,close0 memo 1 : top 1,10 : left 1,900 : width 1,300 : height 1,400 : bar_both 1 button 2 : top 2,440 : left 2,900 : caption 2,"Démo" : on_click 2,demo button 3 : top 3,440 : left 3,900+width(2) : caption 3,"Script" : on_click 3,script button 4 : top 4,470 : left 4,900 : caption 4,"Alphabet" : on_click 4,alphabet button 5 : top 5,470 : left 5,900+width(2) : caption 5,"Test" : on_click 5,test
memo 10 : hide 10 end
close0: KT% = dll_call1("DeleteKGFTab",KT%) return demo: KT% = dll_call1("DeleteKGFTab",KT%) KT% = dll_call1("CreateKGFTab",handle(0))
clear 1 item_add 1,"; ligne commentaire" item_add 1,"Width,500;" item_add 1,"Height,400;" item_add 1,"Label,0,Clients;" item_add 1,"AddTab,Products;" item_add 1,"AddTab,Wagons;" item_add 1,"InsertTab,1,Insertion;" item_add 1,"GlyphSize,24;" Item_add 1,"Glyph,0,android.bmp; définir le glyph 0" Item_add 1,"Glyph,1,android(90).bmp; définir le glyph 1" Item_add 1,"Glyph,2,android(180).bmp; définir le glyph 2" Item_add 1,"Glyph,3,android(270).bmp; définir le glyph 3" Item_add 1,"ButtonGlyph,1; installer les 4 glyphes dans le bouton 2ème bouton" item_add 1,"TabHandles; retourner la liste des handles des TABs" item_add 1,"TabColor,2,$FF; colorer la 3ème page en rouge (valeur RBG en hexa précédée par $)" gosub script return
alphabet: KT% = dll_call1("DeleteKGFTab",KT%) KT% = dll_call1("CreateKGFTab",handle(0))
clear 1 item_add 1,"Width,300;" item_add 1,"Height,400;" item_add 1,"ButtonWidth,30;" item_add 1,"Label,0,A;" for i%=2 to 26 item_add 1,"AddTab,"+chr$(64+i%)+";" next i% item_add 1,"MultiRow,1;" gosub script return script: res% = dll_call2("ConfigureKGFTab",KT%,handle(1)) if res%>0 then message "Erreur dans le script à la ligne "+str$(res%)+chr$(13)+chr$(10)+item_read$(1,res%) if res%<0 then message "Erreur inattendue dans le script" return test: ' récupére les handles des pages dans un memo invisible s$ = string$(500," ") res% = dll_call2("GetKGFTabHandles",KT%,adr(s$)) ' message s$ text 10,s$ ' ce qui suit, marche pour tous les objets fenêtrés (ayant un handle) comme Edit, Button, Memo, ... Edit 14 : Text 14,"Premier edit" Top 14,80 : Left 14,50 hnd% = val(item_read$(10,2)) res% = DLL_call3("SetFormParent",handle(14),hnd%,0) ' ce qui suit, peut être utilisé pour les objets ALPHA (remplacer ALPHA par Panel) panel 20 : width 20,100 : height 20,20 caption 20,"Démo ALPHA" top 20,30 : left 20,50 hnd% = val(item_read$(10,3)) res% = DLL_call3("SetFormParent",handle(20),hnd%,0) ' pour les autres objets sans handle (PICTURE, ...), ' les placer dans un PANEL et coller le PANEL dans le KGFTab. panel 21 : width 21,32 : height 21,32 : top 21,30 : left 21,100 picture 22 : parent 22,21 : width 22,32 : height 22,32 : stretch_on 22 file_load 22,"android.bmp" hnd% = val(item_read$(10,4)) res% = DLL_call3("SetFormParent",handle(21),hnd%,0) return
Après avoir cliqué sur "Alphabet", on a les 26 onglets en haut. Alors, effacer le script et saisir: MultiRow,1; puis cliquer sur "Script" ==> les onglets sont à gauche. MultiRow,2; puis cliquer sur "Script" ==> les onglets sont en bas MultiRow,3; puis cliquer sur "Script" ==> les onglets sont à droite. MultiRow,4; puis cliquer sur "Script" ==> les onglets reviennent en haut. En cliquant sur "Démo", on a une icône de 24 x 24 pixels. Ceci est obtenu enn insérant une commande GlyphSize,24;avant la première commande Glyph. Mais si on insère à cet endroit également une commande ButtonHeight,68;on peut même avoir une commande GlyphSize,64;et avoir de très grandes icônes. Voici ce qu cela donne: Ceci est obtenu avec le script suivant: - Code:
-
; ligne commentaire Width,500; Height,400; Label,0,Clients; AddTab,Products; AddTab,Wagons; InsertTab,1,Insertion; ButtonHeight,68; ButtonWidth,120; GlyphSize,64; Glyph,0,android.bmp; définir le glyph 0 Glyph,1,android(90).bmp; définir le glyph 1 Glyph,2,android(180).bmp; définir le glyph 2 Glyph,3,android(270).bmp; définir le glyph 3 ButtonGlyph,1; installer les 4 glyphes dans le bouton 2ème bouton TabHandles; retourner la liste des handles des TABs TabColor,2,$FF; colorer la 3ème page en rouge (valeur RBG en hexa précédée par $)
| |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Dim 17 Déc 2023 - 20:58 | |
| Merci Klaus ! - Citation :
- Après avoir cliqué sur "Alphabet", on a les 26 onglets en haut.
Alors, effacer le script et saisir: MultiRow,1; puis cliquer sur "Script" ==> les onglets sont à gauche. MultiRow,2; puis cliquer sur "Script" ==> les onglets sont en bas MultiRow,3; puis cliquer sur "Script" ==> les onglets sont à droite. MultiRow,4; puis cliquer sur "Script" ==> les onglets reviennent en haut.
Je pense que tu voulais dire ButtonPosition,... au lieu de MultiRow. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 17 Déc 2023 - 23:42 | |
| Oups... Oui, parfaitement ! Merci pour le rectificatif !
Je pense que je tiens là un bel outil... Il est même possible de placer un KGFTab sur une page d'un KGFTab ! Et tous oes objets Panoramic placés dans ces pages gardent toutes leurs possibilités de gestion avec leurs attributs et leurs évènements. C'est juste en remplaçant des objets CONTAINER_TAB et TAN de Panoramic. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 18 Déc 2023 - 17:20 | |
| J'ai déposé une nouvelle version de KGF.dll. Elle apporte deux ajouts importants à KGFTab: - on peut placer un KGFTab dans une page d'un autre KGFTab ! - le clic sur un bouton de sélection de page peut générer un USER_EVENT !Les commandes de script ont été adaptées à cela: - Code:
-
parent,<handle>; handle de l'objegt dans lequel le TKGFTab doit apparaître left,<position>; position gauche en pixels du TKGFTab top,<position>; position haute en pixels du TKGFTab width,<dimension>; largeur en pixels du TKGFTab height,<dimension>; hauteur en pixels du TKGFTab label,<ind>,<libellé>; index et libelle d'un bouton existant addtab,<libellé>; libellé du nouveau bouton inserttab,<ind>,<libellé>; index d'un bouton existant pour l'insertion et le nouveau libellé deletetab,<Ind>; index du bouton et de la feuille à supprimer insertcontrol,<ind>,<contrôle>; indice de la page, contrôle (integer(Control) ou Object_Internal(n) ou handle ) glyph,<ind>,<fichier>; index (0...3) de la partie du glupf à charger par l'image dans le fichier buttonglyph,<ind>; index du bouton dans lequel installer le glyph assemblé avec 4 images tabpagehandles; (retourne la liste des handles des pages) buttonheight,<dimension>; hauteur des boutons buttonwidth,<dimension>; largeur des boutons buttonposition,<choix>; choix de la position des boutons (0...3) tabcolor,<ind>,<couleur>; index d'une page et sa culeur de fond (RGB en hexa précédé par un "$") tabactivate,<ind>,<état>; index d'une page et etat d'activation (1=inactive <>0 = active) multirow,<choix>; gérer les boutons sur lignes/clonnes multiples 0=désactivé 1=activé glyphsize,<dimension>; définir la taille des icônes (défaut: 16 pixels) userevent,<handle>; définir le handle de destination pour l'envoi d'u USER_EVENT Le programme de démo aussi. Les boutons de fonction ont été réorganisés. Les boutons "Démo", "Alphabet" et le nouveau bouton "Alphabet dans Démo" sont organisés en colonne, et à droite de ces boutons, il y a les boutons "Script" pour "Démo" et "Alphabet" et le bouton "Test" pour "Démo" Le bouton "Alphabet dans Démo" crée les deux objets KGFTab simultanément, puis colle Alphabet dans la première page de Démo, avec les boutons collés à gauche. Dès lors, on peut cliquer sur tous les boutons - ils sont tous actifs. Et le UserEvent a été activé pour les deux objets, et chaque clic est intercepté et analysé. Voici le code: - Code:
-
' test_KGFTab.bas
label close0, UserEvent, demo, alphabet, scriptdemo, scriptalphabet, alphabetdansdemo, test
dim res%, KTdemo%, KTalphabet%, s$, hnd%, i%, handleKT% dim UserEvent_Type%, UserEvent_Action%, UserEvent_Detail%
dll_on "KGF.dll"
full_space 0 : on_close 0,close0 memo 1 : top 1,10 : left 1,900 : width 1,300 : height 1,400 : bar_both 1 button 2 : top 2,440 : left 2,900 : width 2,110 : caption 2,"Démo" : on_click 2,demo button 3 : top 3,440 : left 3,1010 : width 3,100 : caption 3,"Script démo" : on_click 3,scriptdemo button 4 : top 4,470 : left 4,900 : width 4,110 : caption 4,"Alphabet" : on_click 4,alphabet button 5 : top 5,470 : left 5,1010 : width 5,100 : caption 5,"Script alphabet" : on_click 5,scriptalphabet button 6 : top 6,440 : left 6,left(3)+width(3) : caption 6,"Test Démo" : on_click 6,test button 7 : top 7,500 : left 7,900 : width 7,110 : caption 7,"Alphabet dans Démo" : on_click 7,alphabetdansdemo
memo 10 : hide 10
on_user_event UserEvent end
close0: KTdemo% = dll_call1("DeleteKGFTab",KTdemo%) KTalphabet% = dll_call1("DeleteKGFTab",KTalphabet%) return UserEvent: ' message "UserEvent "+hex$(user_event_wparam)+" "+str$(user_event_lparam) UserEvent_Type% = bin_and(User_event_wparam,hex("FF000000")) UserEvent_Action% = bin_and(User_event_wparam,hex("00FF0000")) UserEvent_Detail% = bin_and(User_event_wparam,hex("0000FFFF")) if UserEvent_Type%<>hex("18000000") then return : ' pas venant d'un KGFTab ? if UserEvent_Action%=hex("00010000") : ' traier l'évènement "sélection d'un onglet" if user_event_lparam=KTdemo% : ' sélection dans KTdemo message "Sélection de l'onglet "+str$(UserEvent_Detail%)+" dans Démo" return end_if if user_event_lparam=KTalphabet% : ' sélection dans KTalphabet message "Sélection de l'onglet "+str$(UserEvent_Detail%)+" dans Alphabet" return end_if end_if if user_event_lparam=KTdemo% then message "UserEvent inconnu: Action="+hex$(UserEvent_Action%)+" pour objet Démo" if user_event_lparam=KTalphabet% then message "UserEvent inconnu: Action="+hex$(UserEvent_Action%)+" pour objet Alphabet" return demo: KTdemo% = dll_call1("DeleteKGFTab",KTdemo%) KTalphabet% = dll_call1("DeleteKGFTab",KTalphabet%) KTdemo% = dll_call1("CreateKGFTab",handle(0)) DefinirDemo() gosub scriptdemo return
alphabet: KTdemo% = dll_call1("DeleteKGFTab",KTdemo%) KTalphabet% = dll_call1("DeleteKGFTab",KTalphabet%) KTalphabet% = dll_call1("CreateKGFTab",handle(0)) DefinirAlphabet() gosub scriptalphabet return alphabetdansdemo: KTdemo% = dll_call1("DeleteKGFTab",KTdemo%) KTalphabet% = dll_call1("DeleteKGFTab",KTalphabet%) ' créer Démo KTdemo% = dll_call1("CreateKGFTab",handle(0)) DefinirDemo() gosub scriptdemo ' créer Alphabet KTalphabet% = dll_call1("CreateKGFTab",handle(0)) DefinirAlphabet() gosub scriptalphabet ' récupérer le handle de Alphabet handleKT% = dll_call1("GetKGFTabHandle",KTalphabet%) ' récupére les handles des pages de démo dans un memo invisible s$ = string$(500," ") res% = dll_call2("GetKGFTabPageHandles",KTdemo%,adr(s$)) text 10,s$ ' déplacer Alphabet vers (0,0) clear 1 item_add 1,"Top,0;" item_add 1,"Left,0;" item_add 1,"ButtonPosition,1;" gosub scriptalphabet ' ici, on place "alphabet" dans "Démo" page 1 (index 0) hnd% = val(item_read$(10,1)) res% = DLL_call3("SetFormParent",handleKT%,hnd%,0) return scriptdemo: res% = dll_call2("ConfigureKGFTab",KTdemo%,handle(1)) if res%>0 then message "Erreur dans le script à la ligne "+str$(res%)+chr$(13)+chr$(10)+item_read$(1,res%) if res%<0 then message "Erreur inattendue dans le script" return scriptalphabet: res% = dll_call2("ConfigureKGFTab",KTalphabet%,handle(1)) if res%>0 then message "Erreur dans le script à la ligne "+str$(res%)+chr$(13)+chr$(10)+item_read$(1,res%) if res%<0 then message "Erreur inattendue dans le script" return test: ' récupére les handles des pages dans un memo invisible s$ = string$(500," ") res% = dll_call2("GetKGFTabPageHandles",KTdemo%,adr(s$)) ' message s$ text 10,s$ ' ce qui suit, marche pour tous les objets fenêtrés (ayant un handle) comme Edit, Button, Memo, ... Edit 14 : Text 14,"Premier edit" Top 14,80 : Left 14,50 hnd% = val(item_read$(10,2)) res% = DLL_call3("SetFormParent",handle(14),hnd%,0) ' ce qui suit, peut être utilisé pour les objets ALPHA (remplacer ALPHA par Panel) panel 20 : width 20,100 : height 20,20 caption 20,"Démo ALPHA" top 20,30 : left 20,50 hnd% = val(item_read$(10,3)) res% = DLL_call3("SetFormParent",handle(20),hnd%,0) ' pour les autres objets sans handle (PICTURE, ...), ' les placer dans un PANEL et coller le PANEL dans le KGFTab. panel 21 : width 21,32 : height 21,32 : top 21,30 : left 21,100 picture 22 : parent 22,21 : width 22,32 : height 22,32 : stretch_on 22 file_load 22,"android.bmp" hnd% = val(item_read$(10,4)) res% = DLL_call3("SetFormParent",handle(21),hnd%,0) return sub DefinirDemo() clear 1 item_add 1,"; ligne commentaire" item_add 1,"Width,500;" item_add 1,"Height,400;" item_add 1,"Label,0,Clients;" item_add 1,"AddTab,Products;" item_add 1,"AddTab,Wagons;" item_add 1,"InsertTab,1,Insertion;" item_add 1,"GlyphSize,24;" Item_add 1,"Glyph,0,android.bmp; définir le glyph 0" Item_add 1,"Glyph,1,android(90).bmp; définir le glyph 1" Item_add 1,"Glyph,2,android(180).bmp; définir le glyph 2" Item_add 1,"Glyph,3,android(270).bmp; définir le glyph 3" Item_add 1,"ButtonGlyph,1; installer les 4 glyphes dans le bouton 2ème bouton" item_add 1,"TabPageHandles; retourner la liste des handles des TABs" item_add 1,"TabColor,2,$FF; colorer la 3ème page en rouge (valeur RBG en hexa précédée par $)" item_add 1,"UserEvent,"+str$(handle(0))+"; activer la génération du USER_EVENT" end_sub
sub DefinirAlphabet() clear 1 item_add 1,"Left,510;" item_add 1,"Width,300;" item_add 1,"Height,375;" item_add 1,"ButtonWidth,30;" item_add 1,"Label,0,A;" for i%=2 to 26 item_add 1,"AddTab,"+chr$(64+i%)+";" next i% item_add 1,"MultiRow,1;" item_add 1,"UserEvent,"+str$(handle(0))+"; activer la génération du USER_EVENT" end_sub
Voici ce que ça donne, avec la première page de Démo sélectionnée: Et les commandes sont comme ceci: Maintenant, l'objet me semble complet et exploitable. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 19 Déc 2023 - 1:07 | |
| Petite amélioration de KGFTab: maintenant, l'insertion d'un objet dans une page quelconque du KGFTab se fait par le script - plus besoin de recourir à la fonction SetWindowParent de KGF.dll ! Voici les commandes script adaptées: - Code:
-
parent,<handle>; handle de l'objet dans lequel le TKGFTab doit apparaître left,<position>; position gauche en pixels du TKGFTab top,<position>; position haute en pixels du TKGFTab width,<dimension>; largeur en pixels du TKGFTab height,<dimension>; hauteur en pixels du TKGFTab label,<ind>,<libellé>; index et libelle d'un bouton existant addtab,<libellé>; libellé du nouveau bouton inserttab,<ind>,<libellé>; index d'un bouton existant pour l'insertion et le nouveau libellé deletetab,<Ind>; index du bouton et de la feuille à supprimer glyph,<ind>,<fichier>; index (0...3) de la partie du glupf à charger par l'image dans le fichier buttonglyph,<ind>; index du bouton dans lequel installer le glyph assemblé avec 4 images tabpagehandles; (retourne la liste des handles des pages) buttonheight,<dimension>; hauteur des boutons buttonwidth,<dimension>; largeur des boutons buttonposition,<choix>; choix de la position des boutons (0...3) tabcolor,<ind>,<couleur>; index d'une page et sa culeur de fond (RGB en hexa précédé par un "$") tabactivate,<ind>,<état>; index d'une page et etat d'activation (1=inactive <>0 = active) multirow,<choix>; gérer les boutons sur lignes/clonnes multiples 0=désactivé 1=activé glyphsize,<dimension>; définir la taille des icônes (défaut: 16 pixels) userevent,<handle>; définir le handle de destination pour l'envoi d'u USER_EVENT insertcontrol,<ind>,<handle>; insérer dans la page ind le contrôle dont le handle est indiqué Et voici le code du programme de démo: - Code:
-
' test_KGFTab.bas
label close0, UserEvent, demo, alphabet, scriptdemo, scriptalphabet, alphabetdansdemo, test dim res%, KTdemo%, KTalphabet%, s$, hnd%, i%, handleKT% dim UserEvent_Type%, UserEvent_Action%, UserEvent_Detail%
dll_on "KGF.dll"
full_space 0 : on_close 0,close0 memo 1 : top 1,10 : left 1,900 : width 1,300 : height 1,400 : bar_both 1 button 2 : top 2,440 : left 2,900 : width 2,110 : caption 2,"Démo" : on_click 2,demo button 3 : top 3,440 : left 3,1010 : width 3,100 : caption 3,"Script démo" : on_click 3,scriptdemo button 4 : top 4,470 : left 4,900 : width 4,110 : caption 4,"Alphabet" : on_click 4,alphabet button 5 : top 5,470 : left 5,1010 : width 5,100 : caption 5,"Script alphabet" : on_click 5,scriptalphabet button 6 : top 6,440 : left 6,left(3)+width(3) : caption 6,"Test Démo" : on_click 6,test button 7 : top 7,500 : left 7,900 : width 7,110 : caption 7,"Alphabet dans Démo" : on_click 7,alphabetdansdemo
memo 10 : hide 10
on_user_event UserEvent end
close0: KTdemo% = dll_call1("DeleteKGFTab",KTdemo%) KTalphabet% = dll_call1("DeleteKGFTab",KTalphabet%) return UserEvent: ' message "UserEvent "+hex$(user_event_wparam)+" "+str$(user_event_lparam) UserEvent_Type% = bin_and(User_event_wparam,hex("FF000000")) UserEvent_Action% = bin_and(User_event_wparam,hex("00FF0000")) UserEvent_Detail% = bin_and(User_event_wparam,hex("0000FFFF")) if UserEvent_Type%<>hex("18000000") then return : ' pas venant d'un KGFTab ? if UserEvent_Action%=hex("00010000") : ' traier l'évènement "sélection d'un onglet" if user_event_lparam=KTdemo% : ' sélection dans KTdemo message "Sélection de l'onglet "+str$(UserEvent_Detail%)+" dans Démo" return end_if if user_event_lparam=KTalphabet% : ' sélection dans KTalphabet message "Sélection de l'onglet "+str$(UserEvent_Detail%)+" dans Alphabet" return end_if end_if if user_event_lparam=KTdemo% then message "UserEvent inconnu: Action="+hex$(UserEvent_Action%)+" pour objet Démo" if user_event_lparam=KTalphabet% then message "UserEvent inconnu: Action="+hex$(UserEvent_Action%)+" pour objet Alphabet" return demo: KTdemo% = dll_call1("DeleteKGFTab",KTdemo%) KTalphabet% = dll_call1("DeleteKGFTab",KTalphabet%) KTdemo% = dll_call1("CreateKGFTab",handle(0)) DefinirDemo() gosub scriptdemo return
alphabet: KTdemo% = dll_call1("DeleteKGFTab",KTdemo%) KTalphabet% = dll_call1("DeleteKGFTab",KTalphabet%) KTalphabet% = dll_call1("CreateKGFTab",handle(0)) DefinirAlphabet() gosub scriptalphabet return alphabetdansdemo: KTdemo% = dll_call1("DeleteKGFTab",KTdemo%) KTalphabet% = dll_call1("DeleteKGFTab",KTalphabet%) ' créer Démo KTdemo% = dll_call1("CreateKGFTab",handle(0)) DefinirDemo() gosub scriptdemo ' créer Alphabet KTalphabet% = dll_call1("CreateKGFTab",handle(0)) DefinirAlphabet() gosub scriptalphabet ' récupérer le handle de Alphabet handleKT% = dll_call1("GetKGFTabHandle",KTalphabet%) ' récupére les handles des pages de démo dans un memo invisible s$ = string$(500," ") res% = dll_call2("GetKGFTabPageHandles",KTdemo%,adr(s$)) text 10,s$ ' déplacer Alphabet vers (0,0) clear 1 item_add 1,"Top,0;" item_add 1,"Left,0;" item_add 1,"ButtonPosition,1;" gosub scriptalphabet ' ici, on place "alphabet" dans "Démo" page 1 (index 0) hnd% = val(item_read$(10,1)) clear 1 item_add 1,"InsertControl,0,"+str$(handleKT%)+"; insérer Alphabet dans page 1 de Démo" Gosub scriptdemo return scriptdemo: res% = dll_call2("ConfigureKGFTab",KTdemo%,handle(1)) if res%>0 then message "Erreur dans le script à la ligne "+str$(res%)+chr$(13)+chr$(10)+item_read$(1,res%) if res%<0 then message "Erreur inattendue dans le script" return scriptalphabet: res% = dll_call2("ConfigureKGFTab",KTalphabet%,handle(1)) if res%>0 then message "Erreur dans le script à la ligne "+str$(res%)+chr$(13)+chr$(10)+item_read$(1,res%) if res%<0 then message "Erreur inattendue dans le script" return test: clear 1 ' ce qui suit, marche pour tous les objets fenêtrés (ayant un handle) comme Edit, Button, Memo, ... Edit 14 : Text 14,"Premier edit" Top 14,80 : Left 14,50 item_add 1,"InsertControl,1,"+str$(handle(14))+"; insérer Edit 14 dans page 2 de Démo" ' ce qui suit, peut être utilisé pour les objets ALPHA (remplacer ALPHA par Panel) panel 20 : width 20,100 : height 20,20 caption 20,"Démo ALPHA" top 20,30 : left 20,50 item_add 1,"InsertControl,2,"+str$(handle(20))+"; insérer Panel 20 dans page 3 de Démo" ' ce qui suit est sécifique aux ALPHA, la dimensioin du panel est donnée directement par celles du alpha alpha 23 : caption 23,"Ceci est un autre essai de ALPHA" panel 24 : width 24,width(23) : height 24,height(23) : parent 23,24 top 24,60 : left 24,50 item_add 1,"InsertControl,2,"+str$(handle(24))+"; insérer Panel 24 dans page 3 de Démo" ' pour les autres objets sans handle (PICTURE, ...), ' les placer dans un PANEL et coller le PANEL dans le KGFTab. panel 21 : width 21,32 : height 21,32 : top 21,30 : left 21,100 picture 22 : parent 22,21 : width 22,32 : height 22,32 : stretch_on 22 file_load 22,"android.bmp" item_add 1,"InsertControl,3,"+str$(handle(21))+"; insérer Panel 21 dans page 4 de Démo" Gosub scriptdemo return sub DefinirDemo() clear 1 item_add 1,"; ligne commentaire" item_add 1,"Width,500;" item_add 1,"Height,400;" item_add 1,"Label,0,Clients;" item_add 1,"AddTab,Products;" item_add 1,"AddTab,Wagons;" item_add 1,"InsertTab,1,Insertion;" item_add 1,"GlyphSize,24;" Item_add 1,"Glyph,0,android.bmp; définir le glyph 0" Item_add 1,"Glyph,1,android(90).bmp; définir le glyph 1" Item_add 1,"Glyph,2,android(180).bmp; définir le glyph 2" Item_add 1,"Glyph,3,android(270).bmp; définir le glyph 3" Item_add 1,"ButtonGlyph,1; installer les 4 glyphes dans le bouton 2ème bouton" item_add 1,"TabPageHandles; retourner la liste des handles des TABs" item_add 1,"TabColor,2,$FF; colorer la 3ème page en rouge (valeur RBG en hexa précédée par $)" item_add 1,"UserEvent,"+str$(handle(0))+"; activer la génération du USER_EVENT" end_sub
sub DefinirAlphabet() clear 1 item_add 1,"Left,510;" item_add 1,"Width,300;" item_add 1,"Height,375;" item_add 1,"ButtonWidth,30;" item_add 1,"Label,0,A;" for i%=2 to 26 item_add 1,"AddTab,"+chr$(64+i%)+";" next i% item_add 1,"MultiRow,1;" item_add 1,"UserEvent,"+str$(handle(0))+"; activer la génération du USER_EVENT" end_sub
Maintenant, l'insertion du KGFTab nommé Alphabet dans celui nommé Démo se fait simplement comme ceci: - Code:
-
... ' ici, on place "alphabet" dans "Démo" page 1 (index 0) clear 1 item_add 1,"InsertControl,0,"+str$(handleKT%)+"; insérer Alphabet dans page 1 de Démo" Gosub scriptdemo return scriptdemo: res% = dll_call2("ConfigureKGFTab",KTdemo%,handle(1)) if res%>0 then message "Erreur dans le script à la ligne "+str$(res%)+chr$(13)+chr$(10)+item_read$(1,res%) if res%<0 then message "Erreur inattendue dans le script" return
ou, simplement: - Code:
-
... ' ici, on place "alphabet" dans "Démo" page 1 (index 0) clear 1 item_add 1,"InsertControl,0,"+str$(handleKT%)+"; insérer Alphabet dans page 1 de Démo" res% = dll_call2("ConfigureKGFTab",KTdemo%,handle(1)) ...
C'est beaucoup plus cohérent et plus simple. EDIT le 19/12/2023 à 9:22Au lieu de passer le script à la fonction ConfigureKGFTab via un mémo, on peut aussi le passer par un LIST, une COMBO et surtout par une variable string, le la manière suivante: - Code:
-
res% = dll_call2("ConfigureKGFTab",KTdemo%,handle(memo%)) ou res% = dll_call2("ConfigureKGFTab",KTdemo%,handle(list%)) ou res% = dll_call2("ConfigureKGFTab",KTdemo%,handle(combo%)) ou res% = dll_call2("ConfigureKGFTab",KTdemo%,adr(script$)) Dans le dernier cas, on peut même passer plusieurs lignes de commande dans un script par string, à condition de les séparer par chr$(13)+chr$(10). Exemple: - Code:
-
s$ = "Width,500;"+chr$(13)+chr$(10) s$ = s$ + "Height,600;"+chr$(13)+chr$(10) s$ = s$ + "ButtonPosition,2;" res% = dll_call2("ConfigureKGFTab",KTdemo%,adr(scripts$)) | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 23 Déc 2023 - 18:27 | |
| Voici un cadeau de Noël à ma façon: KGF.dll V9.96 du 23/12/2023Nouveautés: - Nouvelle fonction: StartProgram - KGFTab: nouvelle commande Script: ButtonColor,<ind>,<couleur>Modules modifiés: KGF.dllLa doc est inchangée - elle suivra. StartProgram:Cette fonction lance un programme, quelqu'il soit, avec les paramères suivants: - Code:
-
res% = dll_call4("StartProgram",adr(fic$),adr(par$),adr(dir$),borderless) fic$ = nnom du programme, éventuellement avec chemin partiel ou absolu par$ = le ou les paramètres pour le prohtramme fic$ dir$ = dossier dans lequel le programme doit s'exécuter borderless = 0 ou 1 pour gérer l'apparence KGFTab commande ButtonColor; On peut maintenant affecter une couleur spécifique à chaque bouton, via la valeur RGB de la couleur. En passant la couleur -1 ou $FFFFFFFF, le bouton reprend sa couleur par défaut. Voici la nouvelle liste des commandes script: - Code:
-
parent,<handle>; handle de l'objet dans lequel le TKGFTab doit apparaître left,<position>; position gauche en pixels du TKGFTab top,<position>; position haute en pixels du TKGFTab width,<dimension>; largeur en pixels du TKGFTab height,<dimension>; hauteur en pixels du TKGFTab label,<ind>,<libellé>; index et libelle d'un bouton existant addtab,<libellé>; libellé du nouveau bouton inserttab,<ind>,<libellé>; index d'un bouton existant pour l'insertion et le nouveau libellé deletetab,<Ind>; index du bouton et de la feuille à supprimer glyph,<ind>,<fichier>; index (0...3) de la partie du glupf à charger par l'image dans le fichier buttonglyph,<ind>; index du bouton dans lequel installer le glyph assemblé avec 4 images tabpagehandles; (retourne la liste des handles des pages) buttonheight,<dimension>; hauteur des boutons buttonwidth,<dimension>; largeur des boutons buttonposition,<choix>; choix de la position des boutons (0...3) tabcolor,<ind>,<couleur>; index d'une page et sa culeur de fond (RGB en hexa précédé par un "$") tabactivate,<ind>,<état>; index d'une page et etat d'activation (1=inactive <>0 = active) multirow,<choix>; gérer les boutons sur lignes/clonnes multiples 0=désactivé 1=activé glyphsize,<dimension>; définir la taille des icônes (défaut: 16 pixels) userevent,<handle>; définir le handle de destination pour l'envoi d'u USER_EVENT insertcontrol,<ind>,<handle>; insérer dans la page ind le contrôle dont le handle est indiqué buttoncolor,<ind>,<couleur> index d'un bouton et sa couleur de fond
Voici le programme de démo adapté (les boutons pour Alphabet cont colorées avec des nuances de jaune): - Code:
-
' test_KGFTab.bas
label close0, UserEvent, demo, alphabet, scriptdemo, scriptalphabet, alphabetdansdemo, test dim res%, KTdemo%, KTalphabet%, s$, hnd%, i%, n%, handleKT% dim UserEvent_Type%, UserEvent_Action%, UserEvent_Detail%
dll_on "KGF.dll"
full_space 0 : on_close 0,close0 memo 1 : top 1,10 : left 1,900 : width 1,300 : height 1,400 : bar_both 1 button 2 : top 2,440 : left 2,900 : width 2,110 : caption 2,"Démo" : on_click 2,demo button 3 : top 3,440 : left 3,1010 : width 3,100 : caption 3,"Script démo" : on_click 3,scriptdemo button 4 : top 4,470 : left 4,900 : width 4,110 : caption 4,"Alphabet" : on_click 4,alphabet button 5 : top 5,470 : left 5,1010 : width 5,100 : caption 5,"Script alphabet" : on_click 5,scriptalphabet button 6 : top 6,440 : left 6,left(3)+width(3) : caption 6,"Test Démo" : on_click 6,test button 7 : top 7,500 : left 7,900 : width 7,110 : caption 7,"Alphabet dans Démo" : on_click 7,alphabetdansdemo
memo 10 : hide 10
on_user_event UserEvent end
close0: KTdemo% = dll_call1("DeleteKGFTab",KTdemo%) KTalphabet% = dll_call1("DeleteKGFTab",KTalphabet%) return UserEvent: ' message "UserEvent "+hex$(user_event_wparam)+" "+str$(user_event_lparam) UserEvent_Type% = bin_and(User_event_wparam,hex("FF000000")) UserEvent_Action% = bin_and(User_event_wparam,hex("00FF0000")) UserEvent_Detail% = bin_and(User_event_wparam,hex("0000FFFF")) if UserEvent_Type%<>hex("18000000") then return : ' pas venant d'un KGFTab ? if UserEvent_Action%=hex("00010000") : ' traier l'évènement "sélection d'un onglet" if user_event_lparam=KTdemo% : ' sélection dans KTdemo message "Sélection de l'onglet "+str$(UserEvent_Detail%)+" dans Démo" return end_if if user_event_lparam=KTalphabet% : ' sélection dans KTalphabet message "Sélection de l'onglet "+str$(UserEvent_Detail%)+" dans Alphabet" return end_if end_if if user_event_lparam=KTdemo% then message "UserEvent inconnu: Action="+hex$(UserEvent_Action%)+" pour objet Démo" if user_event_lparam=KTalphabet% then message "UserEvent inconnu: Action="+hex$(UserEvent_Action%)+" pour objet Alphabet" return demo: KTdemo% = dll_call1("DeleteKGFTab",KTdemo%) KTalphabet% = dll_call1("DeleteKGFTab",KTalphabet%) KTdemo% = dll_call1("CreateKGFTab",handle(0)) DefinirDemo() gosub scriptdemo return
alphabet: KTdemo% = dll_call1("DeleteKGFTab",KTdemo%) KTalphabet% = dll_call1("DeleteKGFTab",KTalphabet%) KTalphabet% = dll_call1("CreateKGFTab",handle(0)) DefinirAlphabet() gosub scriptalphabet return alphabetdansdemo: KTdemo% = dll_call1("DeleteKGFTab",KTdemo%) KTalphabet% = dll_call1("DeleteKGFTab",KTalphabet%) ' créer Démo KTdemo% = dll_call1("CreateKGFTab",handle(0)) DefinirDemo() gosub scriptdemo ' créer Alphabet KTalphabet% = dll_call1("CreateKGFTab",handle(0)) DefinirAlphabet() gosub scriptalphabet ' récupérer le handle de Alphabet handleKT% = dll_call1("GetKGFTabHandle",KTalphabet%) ' récupére les handles des pages de démo dans un memo invisible s$ = string$(500," ") res% = dll_call2("GetKGFTabPageHandles",KTdemo%,adr(s$)) text 10,s$ ' déplacer Alphabet vers (0,0) clear 1 item_add 1,"Top,0;" item_add 1,"Left,0;" item_add 1,"ButtonPosition,1;" gosub scriptalphabet ' ici, on place "alphabet" dans "Démo" page 1 (index 0) hnd% = val(item_read$(10,1)) clear 1 item_add 1,"InsertControl,0,"+str$(handleKT%)+"; insérer Alphabet dans page 1 de Démo" Gosub scriptdemo return scriptdemo: res% = dll_call2("ConfigureKGFTab",KTdemo%,handle(1)) if res%>0 then message "Erreur dans le script à la ligne "+str$(res%)+chr$(13)+chr$(10)+item_read$(1,res%) if res%<0 then message "Erreur inattendue dans le script" return scriptalphabet: res% = dll_call2("ConfigureKGFTab",KTalphabet%,handle(1)) if res%>0 then message "Erreur dans le script à la ligne "+str$(res%)+chr$(13)+chr$(10)+item_read$(1,res%) if res%<0 then message "Erreur inattendue dans le script" return test: clear 1 ' ce qui suit, marche pour tous les objets fenêtrés (ayant un handle) comme Edit, Button, Memo, ... Edit 14 : Text 14,"Premier edit" Top 14,80 : Left 14,50 item_add 1,"InsertControl,1,"+str$(handle(14))+"; insérer Edit 14 dans page 2 de Démo" ' ce qui suit, peut être utilisé pour les objets ALPHA (remplacer ALPHA par Panel) panel 20 : width 20,100 : height 20,20 caption 20,"Démo ALPHA" top 20,30 : left 20,50 item_add 1,"InsertControl,2,"+str$(handle(20))+"; insérer Panel 20 dans page 3 de Démo" ' ce qui suit est sécifique aux ALPHA, la dimensioin du panel est donnée directement par celles du alpha alpha 23 : caption 23,"Ceci est un autre essai de ALPHA" panel 24 : width 24,width(23) : height 24,height(23) : parent 23,24 top 24,60 : left 24,50 item_add 1,"InsertControl,2,"+str$(handle(24))+"; insérer Panel 24 dans page 3 de Démo" ' pour les autres objets sans handle (PICTURE, ...), ' les placer dans un PANEL et coller le PANEL dans le KGFTab. panel 21 : width 21,32 : height 21,32 : top 21,30 : left 21,100 picture 22 : parent 22,21 : width 22,32 : height 22,32 : stretch_on 22 file_load 22,"android.bmp" item_add 1,"InsertControl,3,"+str$(handle(21))+"; insérer Panel 21 dans page 4 de Démo" Gosub scriptdemo return sub DefinirDemo() clear 1 item_add 1,"; ligne commentaire" item_add 1,"Width,500;" item_add 1,"Height,400;" item_add 1,"Label,0,Clients;" item_add 1,"AddTab,Products;" item_add 1,"AddTab,Wagons;" item_add 1,"InsertTab,1,Insertion;" item_add 1,"GlyphSize,24;" Item_add 1,"Glyph,0,android.bmp; définir le glyph 0" Item_add 1,"Glyph,1,android(90).bmp; définir le glyph 1" Item_add 1,"Glyph,2,android(180).bmp; définir le glyph 2" Item_add 1,"Glyph,3,android(270).bmp; définir le glyph 3" Item_add 1,"ButtonGlyph,1; installer les 4 glyphes dans le bouton 2ème bouton" item_add 1,"TabPageHandles; retourner la liste des handles des TABs" item_add 1,"TabColor,2,$FF; colorer la 3ème page en rouge (valeur RBG en hexa précédée par $)" item_add 1,"UserEvent,"+str$(handle(0))+"; activer la génération du USER_EVENT" end_sub
sub DefinirAlphabet() clear 1 item_add 1,"Left,510;" item_add 1,"Width,300;" item_add 1,"Height,375;" item_add 1,"ButtonWidth,30;" item_add 1,"Label,0,A;" item_add 1,"ButtonColor,0,$00FFFF;" for i%=2 to 26 item_add 1,"AddTab,"+chr$(64+i%)+";" n% = i%*10 if n%>255 then n% = 255 item_add 1,"ButtonColor,"+str$(i%-1)+",$"+hex$(n%)+"FFFF;" next i% item_add 1,"MultiRow,1;" item_add 1,"UserEvent,"+str$(handle(0))+"; activer la génération du USER_EVENT" end_sub
en cliquant sur le bouton "Alphabet dans Démo", on obtient ceci: Joyeux Noël à tous les Panoramiciens ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 26 Déc 2023 - 15:26 | |
| KGF.dll V9.97 du 26/12/2023Nouveautés: - KGFTab: les boutons des onglets sont sensibles au survolModules modifiés: KGF.dllLa doc est inchangée. Les boutons des onglets changent maintenant d'attributs de police tant que le curseur est au-dessus d'un de ces boutons. La police du bouton acquiert alors les attributs Gras et Italique, ce qui permet de repérer facilement l'onglet visé. C'est ariculièrement intéressant pour les copies d'écran omme ici; Comme dans la capture ci-dessus, il est assez plaisant à voir les onglets changer d'attributs lors d'un survol rapide, surtout dans le cas "alphabet dans Démo" comme sur cette image où il y a beaucoup de boutons à survoler... Je rappele le pogramme de démo (inchangé): - Code:
-
' test_KGFTab.bas
label close0, UserEvent, demo, alphabet, scriptdemo, scriptalphabet, alphabetdansdemo, test dim res%, KTdemo%, KTalphabet%, s$, hnd%, i%, n%, handleKT% dim UserEvent_Type%, UserEvent_Action%, UserEvent_Detail%
dll_on "KGF.dll"
full_space 0 : on_close 0,close0 memo 1 : top 1,10 : left 1,900 : width 1,300 : height 1,400 : bar_both 1 button 2 : top 2,440 : left 2,900 : width 2,110 : caption 2,"Démo" : on_click 2,demo button 3 : top 3,440 : left 3,1010 : width 3,100 : caption 3,"Script démo" : on_click 3,scriptdemo button 4 : top 4,470 : left 4,900 : width 4,110 : caption 4,"Alphabet" : on_click 4,alphabet button 5 : top 5,470 : left 5,1010 : width 5,100 : caption 5,"Script alphabet" : on_click 5,scriptalphabet button 6 : top 6,440 : left 6,left(3)+width(3) : caption 6,"Test Démo" : on_click 6,test button 7 : top 7,500 : left 7,900 : width 7,110 : caption 7,"Alphabet dans Démo" : on_click 7,alphabetdansdemo
memo 10 : hide 10
on_user_event UserEvent
end
close0: KTdemo% = dll_call1("DeleteKGFTab",KTdemo%) KTalphabet% = dll_call1("DeleteKGFTab",KTalphabet%) return UserEvent: ' message "UserEvent "+hex$(user_event_wparam)+" "+str$(user_event_lparam) UserEvent_Type% = bin_and(User_event_wparam,hex("FF000000")) UserEvent_Action% = bin_and(User_event_wparam,hex("00FF0000")) UserEvent_Detail% = bin_and(User_event_wparam,hex("0000FFFF")) if UserEvent_Type%<>hex("18000000") then return : ' pas venant d'un KGFTab ? if UserEvent_Action%=hex("00010000") : ' traier l'évènement "sélection d'un onglet" if user_event_lparam=KTdemo% : ' sélection dans KTdemo message "Sélection de l'onglet "+str$(UserEvent_Detail%)+" dans Démo" return end_if if user_event_lparam=KTalphabet% : ' sélection dans KTalphabet message "Sélection de l'onglet "+str$(UserEvent_Detail%)+" dans Alphabet" return end_if end_if if user_event_lparam=KTdemo% then message "UserEvent inconnu: Action="+hex$(UserEvent_Action%)+" pour objet Démo" if user_event_lparam=KTalphabet% then message "UserEvent inconnu: Action="+hex$(UserEvent_Action%)+" pour objet Alphabet" return demo: KTdemo% = dll_call1("DeleteKGFTab",KTdemo%) KTalphabet% = dll_call1("DeleteKGFTab",KTalphabet%) KTdemo% = dll_call1("CreateKGFTab",handle(0)) DefinirDemo() gosub scriptdemo return
alphabet: KTdemo% = dll_call1("DeleteKGFTab",KTdemo%) KTalphabet% = dll_call1("DeleteKGFTab",KTalphabet%) KTalphabet% = dll_call1("CreateKGFTab",handle(0)) DefinirAlphabet() gosub scriptalphabet return alphabetdansdemo: KTdemo% = dll_call1("DeleteKGFTab",KTdemo%) KTalphabet% = dll_call1("DeleteKGFTab",KTalphabet%) ' créer Démo KTdemo% = dll_call1("CreateKGFTab",handle(0)) DefinirDemo() gosub scriptdemo ' créer Alphabet KTalphabet% = dll_call1("CreateKGFTab",handle(0)) DefinirAlphabet() gosub scriptalphabet ' récupérer le handle de Alphabet handleKT% = dll_call1("GetKGFTabHandle",KTalphabet%) ' récupére les handles des pages de démo dans un memo invisible s$ = string$(500," ") res% = dll_call2("GetKGFTabPageHandles",KTdemo%,adr(s$)) text 10,s$ ' déplacer Alphabet vers (0,0) clear 1 item_add 1,"Top,0;" item_add 1,"Left,0;" item_add 1,"ButtonPosition,1;" gosub scriptalphabet ' ici, on place "alphabet" dans "Démo" page 1 (index 0) hnd% = val(item_read$(10,1)) clear 1 item_add 1,"InsertControl,0,"+str$(handleKT%)+"; insérer Alphabet dans page 1 de Démo" Gosub scriptdemo return scriptdemo: res% = dll_call2("ConfigureKGFTab",KTdemo%,handle(1)) if res%>0 then message "Erreur dans le script à la ligne "+str$(res%)+chr$(13)+chr$(10)+item_read$(1,res%) if res%<0 then message "Erreur inattendue dans le script" return scriptalphabet: res% = dll_call2("ConfigureKGFTab",KTalphabet%,handle(1)) if res%>0 then message "Erreur dans le script à la ligne "+str$(res%)+chr$(13)+chr$(10)+item_read$(1,res%) if res%<0 then message "Erreur inattendue dans le script" return test: clear 1 ' ce qui suit, marche pour tous les objets fenêtrés (ayant un handle) comme Edit, Button, Memo, ... Edit 14 : Text 14,"Premier edit" Top 14,80 : Left 14,50 item_add 1,"InsertControl,1,"+str$(handle(14))+"; insérer Edit 14 dans page 2 de Démo" ' ce qui suit, peut être utilisé pour les objets ALPHA (remplacer ALPHA par Panel) panel 20 : width 20,100 : height 20,20 caption 20,"Démo ALPHA" top 20,30 : left 20,50 item_add 1,"InsertControl,2,"+str$(handle(20))+"; insérer Panel 20 dans page 3 de Démo" ' ce qui suit est sécifique aux ALPHA, la dimensioin du panel est donnée directement par celles du alpha alpha 23 : caption 23,"Ceci est un autre essai de ALPHA" panel 24 : width 24,width(23) : height 24,height(23) : parent 23,24 top 24,60 : left 24,50 item_add 1,"InsertControl,2,"+str$(handle(24))+"; insérer Panel 24 dans page 3 de Démo" ' pour les autres objets sans handle (PICTURE, ...), ' les placer dans un PANEL et coller le PANEL dans le KGFTab. panel 21 : width 21,32 : height 21,32 : top 21,30 : left 21,100 picture 22 : parent 22,21 : width 22,32 : height 22,32 : stretch_on 22 file_load 22,"android.bmp" item_add 1,"InsertControl,3,"+str$(handle(21))+"; insérer Panel 21 dans page 4 de Démo" Gosub scriptdemo return sub DefinirDemo() clear 1 item_add 1,"; ligne commentaire" item_add 1,"Width,500;" item_add 1,"Height,400;" item_add 1,"Label,0,Clients;" item_add 1,"AddTab,Products;" item_add 1,"AddTab,Wagons;" item_add 1,"InsertTab,1,Insertion;" item_add 1,"GlyphSize,24;" Item_add 1,"Glyph,0,android.bmp; définir le glyph 0" Item_add 1,"Glyph,1,android(90).bmp; définir le glyph 1" Item_add 1,"Glyph,2,android(180).bmp; définir le glyph 2" Item_add 1,"Glyph,3,android(270).bmp; définir le glyph 3" Item_add 1,"ButtonGlyph,1; installer les 4 glyphes dans le bouton 2ème bouton" item_add 1,"TabPageHandles; retourner la liste des handles des TABs" item_add 1,"TabColor,2,$FF; colorer la 3ème page en rouge (valeur RBG en hexa précédée par $)" item_add 1,"UserEvent,"+str$(handle(0))+"; activer la génération du USER_EVENT" end_sub
sub DefinirAlphabet() clear 1 item_add 1,"Left,510;" item_add 1,"Width,300;" item_add 1,"Height,375;" item_add 1,"ButtonWidth,30;" item_add 1,"Label,0,A;" item_add 1,"ButtonColor,0,$00FFFF;" for i%=2 to 26 item_add 1,"AddTab,"+chr$(64+i%)+";" n% = i%*10 if n%>255 then n% = 255 item_add 1,"ButtonColor,"+str$(i%-1)+",$"+hex$(n%)+"FFFF;" next i% item_add 1,"MultiRow,1;" item_add 1,"UserEvent,"+str$(handle(0))+"; activer la génération du USER_EVENT" end_sub
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 29 Déc 2023 - 17:32 | |
| La documentation est à jour !
Ceci concerne la documentation KGF.chm accessible via ma signature, tout comme l'aide en ligne, également accessible via ma signature. Le nouvel objet KGFTab est documenté, ainsi que plusieurs autres nouveautés de ces derniers mois, puis quelques corrections de fautes de frappe.
Je reste ouvert au signalement d'anomalies dans la doc. C'est tellement vaste que je ne suis pas capable de tout parcourir avec la concentration requise (il y a plus de 1400 pages de documentation, pour la plupart en bilingue français/anglais). | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 30 Déc 2023 - 21:41 | |
| J'suis à jour ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 2 Jan 2024 - 10:15 | |
| KGF.dll V9.98 du 02/01/2024
Nouveautés: - crypter: correction d'un bug
Modules modifiés: KGF.dll
La doc est inchangée.
Ceci corrige un bug provoqiant une erreur d'entrée/sortie lors du cryptage. Le fonctionnement est inchangé. | |
| | | lepetitmarocain
Nombre de messages : 341 Age : 82 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: KGF_dll - nouvelles versions Jeu 4 Jan 2024 - 13:50 | |
| Bonjour à tous je vous souhaite tout d'abord une très bonne année 2024. @Klaus je t'avais demandé de tester le grid parce qu' en saisie il y avait un problème, le grid se déplacer sur la gauche et on ne voyait plus la zone pour saisir. Je joins un exemple et dans ce cas on ne peut plus saisir sur certaines cellules et on est planté Peux-tu s'il te plaît faire quelque chose pour cela. je t'avais demandé aussi si c’était possible de contrôler les dates. peux tu te pencher également sur ce problème merci beaucoup - Code:
-
dim ctr% , id% ctr%=1000 dim res%, KG%, f1$, Types$(6), v$, f, img$ Types$(0) = "Inconnu (traité comme Integer)" Types$(1) = "Chaîne" Types$(2) = "Entier" Types$(3) = "Flottant" Types$(4) = "Booléen" Types$(5) = "Image" Types$(6) = "Mémo" dim a$ , lignes% full_space 0 picture 1 : top 1,100 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1 dll_on "KGF.dll" dim message_annee , s , ch$ , nb_enr% , erreur , date_saisie$ , n% , Fournis_pour_trier$ , b$ , article_pour_trier$ , DA_pour_trier$ dim majarchiveannul , jjjmmmaaa$ , DATEDDEPRIX , date_dem_prix$ , date_commande$ dim jour_dujour$, mois_dujour$ , an_dujour$ , division_pourbissextile$ , reste_pourbissextile$ , jour_dumvt$, mois_dumvt$ , an_dumvt$ , champ$ ' label recherche_modif , verif , calcul_difference , select_fournisseur , select_date , final_saisie , form_desactive dim fourn%, Dates% , nblines , mise_ajour_oblig% , lesColonnes% , res$ , selection_numero , s$, a_lire$ , dans_list$ , comment2$ ' , ctr% label fin , finalite ch$=chr$(34) : ' caractere guillemet ' ************************************ ' Saisie modifs des commandes RATP ' ************************************* n%=1001
picture 200 stretch_on 200 left 200,1200 width 200, 120 ' file_load 200 , "ratp.jpg"
alpha 1000 : ' pour titre height 1000, 10 width 1000, 250 font_bold 1000 font_size 1000,24 font_name 1000, Algerian ' , suites ' , finedit , finalsansmaj
dim DA$ , date_debut$ , fournisseur$ , reference$ , date_jour$ , designation$ , matricule$ , commentaire$ , date_recp_devis$ dim JJ$, MM$ , AAAA$, datejour$ , reste_sans_blanc$ , fournisseur , a_reserver$ , date_aff_da$ , ctr_lignes$ , ctr_ligne% , DATEAR_ARCHIVE% dim date_dde_prix$ , date_rec_dev$ , date_date_cde$ , envoi_cde$ , Date_AR$ , Date_AR_saisie$ , top_top% , la_difference% , ctr_lignes% top_top%=0 border_hide 0
if file_exists ("fichiers annul.txt")=0 file_open_write 50 ,"fichiers annul.txt" file_close 50 end_if if file_exists ("fichiers annul.txt")=1 file_open_read 1, "fichiers annul.txt" end_if nb_enr%=nb_enr%+2
KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),13,1) res% = dll_call5("LocateKGFGrid",KG%,10,50,900,600) : ' position
res% = dll_call5("SetGlobalKGFGridDimensions",KG%,nb_enr%,18,10,25) : ' nbre de lignes nbre de colonnes res% = dll_call6("SetKGFGridCellRangeColor",KG%,1,1,1,9,hex("008000")) : ' couleur des lignes ' res% = dll_call6("SetKGFGridCellRangeColor",KG%,5,5,10,10,hex("FF8080")) : ' couleur de la colonne 10 ligne 5 ' res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,nb_enr%,10,10,hex("FF8080")) : ' couleur colonne 10 ' res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,nb_enr%,12,12,hex("FF8080")) : ' couleur colonne 12 ' autoriser la saisie les cellules ************ res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,7,13,1) res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,17,17,1) ' ************************************* res% = dll_call6("SetKGFGridCellRangeType",KG%,1,1,1,18,1) : ' ligne des titres de colonnes res% = dll_call6("SetKGFGridCellRangeActive",KG%,2,nb_enr%,1,18,1) : ' nbre de lignes pouvant etre ecrites res% = dll_call6("SetKGFGridCellRangeType",KG%,2,nb_enr%,1,18,1) res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,1,1,1,18,1) ' libéllé dans saisie cellule s$ = "date affectation.D.A" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,7,7,adr(s$)) : ' date affectation D.A
s$ = "Saisie Fournisseur" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,6,6,adr(s$)) : ' saisie ou modif Fournisseur depuisligne 2 à X et cellule 6 ' saisie dans commentaire s$ = "Saisie Commentaire" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,14,14,adr(s$)) : ' commentraire ' saisie dans commentaire 2 s$ = "Saisie Commentaire 2" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,17,17,adr(s$)) : ' commentraire ' res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,i%,i%,j%,j%,adr(s$))
' largeur des colonnes res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,1,1,1) : ' avant 100 res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,2,2,100) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,3,3,80) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,4,4,95) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,5,5,350) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,6,6,350) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,7,7,100) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,8,13,90) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,14,14,1) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,15,15,1) : ' avant 90 res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,16,16,1) : ' avant 50 res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,17,17,600) : ' commentairen 2 res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,18,18,1) res% = dll_call4("SetKGFGridRowRangeHeight",KG%,1,1,50) : ' hauteur ligne res% = dll_call6("SetKGFGridCellRangeColor",KG%,1,1,1,17,hex("66FF66")) ' img$ = "Android.bmp" ' res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,2,2,adr(img$)) : ' ok v$ = "Arial" res% = dll_call6("SetKGFGridCellRangeFontName",KG%,1,18,1,6,adr(v$)) res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,1,1,1,16,10) : ' taille font 1ere ligne v$ = "DA" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,3,3,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,3,3,5) v$ = "Ref." res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,4,4,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,4,4,5) v$ = "Désignation." res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,5,5,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,5,5,5) v$ = "Fournisseur" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,6,6,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,6,6,5) v$ = "DateAf.DA " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,7,7,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,5) v$ = "Date Dde Prix" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,8,8,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,8,8,5) v$ = "Dat.rec dev " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,9,9,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Dat.cde " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,10,10,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Dat.env cde " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,11,11,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Dat.AR " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,12,12,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "AR Saisie" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,13,13,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Commentaire 1 ne sert plus " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,14,14,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Matr." res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,15,15,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Ligne" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,16,16,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Commentaire 2 " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,17,17,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) if S= 20 v$ = "Date Archives" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,18,18,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) end_if lignes%=1 while file_eof(1) <> 1
file_readln 1, a$ goto finalite lignes%=lignes% +1
' res% = dll_call6("SetKGFGridCellRangeType",KG%,1,40,1,16,1) : ' metrre type pour toutes les lignes v$ = mid$(a$,1,8) : ' date debut res% = dll_call6("SetKGFGridCellRangeValue",KG%,lignes%,lignes%,1,1,adr(v$)) v$ = mid$(a$,9,10) : ' date jour de commande res% = dll_call6("SetKGFGridCellRangeValue",KG%,lignes%,lignes%,2,2,adr(v$)) v$ = mid$(a$,19,10) : ' D.A res% = dll_call6("SetKGFGridCellRangeValue",KG%,lignes%,lignes%,3,3,adr(v$)) v$ = mid$(a$,29,60) : ' fournisseur res% = dll_call6("SetKGFGridCellRangeValue",KG%,lignes%,lignes%,6,6,adr(v$)) v$ = mid$(a$,89,15) : ' reference res% = dll_call6("SetKGFGridCellRangeValue",KG%,lignes%,lignes%,4,4,adr(v$)) v$ = mid$(a$,104,60) : ' designation res% = dll_call6("SetKGFGridCellRangeValue",KG%,lignes%,lignes%,5,5,adr(v$)) v$ = mid$(a$,164,10) : ' date affectation DA res% = dll_call6("SetKGFGridCellRangeValue",KG%,lignes%,lignes%,7,7,adr(v$)) v$ = mid$(a$,174,10) : ' date demande prix res% = dll_call6("SetKGFGridCellRangeValue",KG%,lignes%,lignes%,8,8,adr(v$)) v$ = mid$(a$,204,10) : ' date envoi cde res% = dll_call6("SetKGFGridCellRangeValue",KG%,lignes%,lignes%,11,11,adr(v$)) v$ = mid$(a$,214,10) : ' date A.R res% = dll_call6("SetKGFGridCellRangeValue",KG%,lignes%,lignes%,12,12,adr(v$)) v$ = mid$(a$,224,10) : ' date AR Saisie res% = dll_call6("SetKGFGridCellRangeValue",KG%,lignes%,lignes%,13,13,adr(v$)) v$ = mid$(a$,234,55) : ' commentaire res% = dll_call6("SetKGFGridCellRangeValue",KG%,lignes%,lignes%,14,14,adr(v$)) v$ = mid$(a$,289,15) : ' Matricule res% = dll_call6("SetKGFGridCellRangeValue",KG%,lignes%,lignes%,15,15,adr(v$)) v$ = mid$(a$,308,200) : ' commentaire 2 res% = dll_call6("SetKGFGridCellRangeValue",KG%,lignes%,lignes%,17,17,adr(v$)) v$ = mid$(a$,508,10) : ' Date si archives ' message v$ res% = dll_call6("SetKGFGridCellRangeValue",KG%,lignes%,lignes%,18,18,adr(v$)) if S<1000 : ' ne pas renumeroter si affichage 1 enr ctr%=ctr%+1 v$ = ctr% : ' ligne res% = dll_call6("SetKGFGridCellRangeValue",KG%,lignes%,lignes%,16,16,adr(v$)) end_if if s=10 or S=11 or S=12 goto suite3 if S>1000 : ' ne pas renumeroter si affichage 1 enr v$ = mid$(a$,304,4) : ' ' ligne res% = dll_call6("SetKGFGridCellRangeValue",KG%,lignes%,lignes%,16,16,adr(v$)) ' message v$ end_if suite3: end_if end_while file_close 1 : ' 15/12/2023 finalite:
' creation Bouton Fin button 10 left 10,950 top 10,500 height 10,50 caption 10 ,"Fin" on_click 10, fin : ' final_saisie
end fin: terminate 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 4 Jan 2024 - 14:33 | |
| Oui, j'ai commencé à regarder cela. Le code ue tu viens de poster, me donnera peut-être des pistes.
Il y a beaucoup de choses en cours simultanément, et je fais ce que je peux. | |
| | | lepetitmarocain
Nombre de messages : 341 Age : 82 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: KGF_dll - nouvelles versions Sam 13 Jan 2024 - 10:43 | |
| Bonjour à tous.
@Klaus
Peux tu me dire STP s'il existe une commande dans KGFgrid, qui permette de fixer une ou plusieurs colonnes, comme les commandes de panoramic
Grid_column_fixed
Bonne journée
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 13 Jan 2024 - 11:07 | |
| | |
| | | lepetitmarocain
Nombre de messages : 341 Age : 82 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: KGF_dll - nouvelles versions Sam 13 Jan 2024 - 14:18 | |
| Re Bonjour Klaus
La commande Fixed de Panoramic, permet de toujours voir la colonne
car lorsque le grid a un ascenseur horizontal, on ne sait plus en se déplaçant sur quelle ligne on est pour
modifier ou saisir par exemple.
Merci
Bon après midi
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 13 Jan 2024 - 15:08 | |
| A, je vois ce que tu veux dire. Nonje n'ai pas cette fonctionnalité.
Je vais voir ce que cela représente... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 17 Fév 2024 - 12:34 | |
| KGF.dll V9.99 du 17/02/2024
Nouveautés: - ScrollImage: correction d'un bug
Modules modifiés: KGF.dll
La doc est inchangée.
Ceci corrige un bug provoqiant une erreur erreur lors du survol de l'objet par la souris. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 17 Fév 2024 - 22:08 | |
| Bonsoir tout le monde. Bravo klaus tout est rentré dans l'ordre, plus de fenêtre de message. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: RE Lun 19 Fév 2024 - 0:40 | |
| @ Klaus,
Une perle dans la doc de kgf sur l'objet pdf. L' exemple est celui de la progress_bar. | |
| | | lepetitmarocain
Nombre de messages : 341 Age : 82 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: KGF_dll - nouvelles versions Lun 19 Fév 2024 - 10:21 | |
| Bonjour à tous.
@ Klaus
As tu pu voir STP si tu pouvais ajouter une commande concernant le post que
J'ai fait le 13 janvier, pour adapter la commande fixed_column dans
KGFGRID.
Merci par avance.
Bonne journée à tous | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 19 Fév 2024 - 23:10 | |
| Je travaille dessus, mais en réalité, cela a des implications profondes oartout dans le code de cet objet et met en cause beaucoup de choses. J'ai besoin de tempe pour élaborer un nouveau concept à ce sujet. Désole. | |
| | | lepetitmarocain
Nombre de messages : 341 Age : 82 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: KGF_dll - nouvelles versions Mer 21 Fév 2024 - 10:37 | |
| Bonjour à tous.
Merci Klaus pour ta réponse et ton implication dans
Panoramic.
Bonne journée | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 21 Fév 2024 - 16:57 | |
| KGF.dll V10.00 du 21/02/2024Nouveautés: - KGFGrid; ajout de la possibilité de colonnes et de lignes fixesModules modifiés: KGF.dllLa doc est inchangée - ça viendra prochainement. Il t a deux nouvelles fonctions: - Code:
-
res% = dll_call2("SetKGFGridFixedColumns",KG%,ncol%) res% = dll_call2("SetKGFGridFixedRows",KG%,nrow%) Ces deux fonctions agissent selon le même principe: - in ne faut pas "fixer" simultanément des lignes ET des colonnes (ceci deviebdra impossible prochainement) - elles bloquent b éléments qui ne bougeront pas, lors d'un scrolling - on peut appeler ces fonctions plusieurs fois avec un nombre différent, y compris 0 Attention ! Il s'agit d'une première version qui ne permet pas encore tout ce que le souhaite de faire. Les fonctionnalités à venir sont les suivantes; - couleur de fond spécifique pour les lignes/colonnes fixes - police et attributs spécifique pour les lignes/colonnes fixes
En ce qui concerne le contenu et sa mise à jour de ces cellules, il faut procéder comme d'habitude, puis REFAIRE la fonction qui définit les lignes ou colonnes fixes !
Voici une démo. Le programme montre la fenêtre suivante: Les deux boutons du haut servent à initialiser un KGFGrid pour des colonnes fixes ou des kignes fices, mais sans les fixer dabs un premier temps. Ils préparent luste un tableau et activent un des boutons du bas lorsque le tableau est prêt! Voici (le tableau sera identique dans les deux cas): Dans ce cas, voici le bouton "Fixer 2 colonnes" s'active. Un clic sur ce bouton produit ceci: On voit que les deux premières colonnes sont "excues" du défiement horizontal, mais pas du vertical. Idem pour des lignes fixes: Cerre fois, les deuc lignes du haut sont exclues du défilement, mais pas les colonnes. Voici le code de cette petite démo: - Code:
-
' prototype_KGFGrid.bas
label gauche, haut, sgauche, shaut
dim res%, KG%, r%, c%, s$
dll_on "KGF.dll"
full_space 0 button 1 : top 1,10 : left 1,10 : width 1,100 : caption 1,"A gauche" : on_click 1,gauche button 2 : top 2,10 : left 2,120 : width 2,100 : caption 2,"En haut" : on_click 2,haut button 11 : top 11,40 : left 11,10 : width 11,100 : caption 11,"Fixer 2 colonnes" : on_click 11,sgauche inactive 11 button 21 : top 21,40 : left 21,120 : width 21,100 : caption 21,"Fixer 2 lignes" : on_click 21,shaut inactive 21 end
sub tableau_initial() KG% = dll_call1("DeleteKGFGrid",KG%) KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),1,1) res% = dll_call5("LocateKGFGrid",KG%,200,80,500,200) res% = dll_call5("SetGlobalKGFGridDimensions",KG%,20,10,80,25) res% = dll_call6("SetKGFGridCellRangeType",KG%,1,20,1,10,1) display end_sub
sub charge() for r%=1 to 20 for c%=1 to 10 s$ = "r"+str$(r%)+" c"+str$(c%) res% = dll_call6("SetKGFGridCellRangeValue",KG%,r%,r%,c%,c%,adr(s$)) display next c% next r% end_sub
gauche: inactive 11 inactive 21 tableau_initial() charge() active 11 return
sgauche: res% = dll_call2("SetKGFGridFixedColumns",KG%,2) : ' <=== fixer les deux colonnes de gauche return
haut: inactive 11 inactive 21 tableau_initial() charge() active 21 return
shaut: res% = dll_call2("SetKGFGridFixedRows",KG%,2) : ' <=== fixer les deux lignes du haut return
end
| |
| | | 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
| |
| |
| |