FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Form(résolu)
KGF_dll - nouvelles versions - Page 13 Emptypar leclode Aujourd'hui à 17:59

» trop de fichiers en cours
KGF_dll - nouvelles versions - Page 13 Emptypar Marc Aujourd'hui à 11:42

» Bataille navale SM
KGF_dll - nouvelles versions - Page 13 Emptypar jjn4 Hier à 17:39

» Une calculatrice en une ligne de programme
KGF_dll - nouvelles versions - Page 13 Emptypar jean_debord Hier à 8:01

» Gestion d'un système client-serveur.
KGF_dll - nouvelles versions - Page 13 Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
KGF_dll - nouvelles versions - Page 13 Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
KGF_dll - nouvelles versions - Page 13 Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
KGF_dll - nouvelles versions - Page 13 Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
KGF_dll - nouvelles versions - Page 13 Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
KGF_dll - nouvelles versions - Page 13 Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
KGF_dll - nouvelles versions - Page 13 Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
KGF_dll - nouvelles versions - Page 13 Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
KGF_dll - nouvelles versions - Page 13 Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
KGF_dll - nouvelles versions - Page 13 Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
KGF_dll - nouvelles versions - Page 13 Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
-20%
Le deal à ne pas rater :
Ecran PC GIGABYTE 28″ LED M28U 4K ( IPS, 1 ms, 144 Hz, FreeSync ...
399 € 499 €
Voir le deal

 

 KGF_dll - nouvelles versions

Aller en bas 
+6
papydall
Marc
jean_debord
Minibug
JP06
Klaus
10 participants
Aller à la page : Précédent  1 ... 8 ... 12, 13, 14  Suivant
AuteurMessage
Marc

Marc


Nombre de messages : 2380
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptyDim 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 !  cheers


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
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptyDim 17 Déc 2023 - 10:53

Merci, Marc.

J'ai trouvén et je l'ai corrigé. Ca fonctionne maintenant...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptyDim 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:
KGF_dll - nouvelles versions - Page 13 Aa119

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 $)
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


Nombre de messages : 2380
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptyDim 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.
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptyDim 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptyLun 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:
KGF_dll - nouvelles versions - Page 13 Aa120

Et les commandes sont comme ceci:
KGF_dll - nouvelles versions - Page 13 Aa212

Maintenant, l'objet me semble complet et exploitable.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptyMar 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:22

Au 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$))
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptySam 23 Déc 2023 - 18:27

Voici un cadeau de Noël à ma façon:

KGF.dll V9.96 du 23/12/2023

Nouveautés:
- Nouvelle fonction: StartProgram
- KGFTab: nouvelle commande Script: ButtonColor,<ind>,<couleur>


Modules modifiés:
KGF.dll

La 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:
KGF_dll - nouvelles versions - Page 13 Aa122

Joyeux Noël à tous les Panoramiciens !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptyMar 26 Déc 2023 - 15:26

KGF.dll V9.97 du 26/12/2023

Nouveautés:
- KGFTab: les boutons des onglets sont sensibles au survol

Modules modifiés:
KGF.dll

La 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;
KGF_dll - nouvelles versions - Page 13 Aa123

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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptyVen 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).
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 13 EmptySam 30 Déc 2023 - 21:41

J'suis à jour !
lol!
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptyMar 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é.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




Nombre de messages : 333
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptyJeu 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
    
 
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptyJeu 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




Nombre de messages : 333
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptySam 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




Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptySam 13 Jan 2024 - 11:07

Tu as la fonction SetKGFGridCellRangeEditable, documentée ici:

http://klauspanoramic.infinityfreeapp.com/SetKGFGridCellRangeEditable.html#SetKGFGridCellRangeEditable_fr

Elle permet d'interdire ou d'autoriser la saisie sur un rectangle de cellules. Un tel rectangle peur être entre autres une ou plusieurs lignes et/ou colonnes.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




Nombre de messages : 333
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptySam 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
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptySam 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...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptySam 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 13 EmptySam 17 Fév 2024 - 22:08

Bonsoir tout le monde.

Bravo klaus tout est rentré dans l'ordre, plus de fenêtre de message.
  KGF_dll - nouvelles versions - Page 13 1f44d
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: RE   KGF_dll - nouvelles versions - Page 13 EmptyLun 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.
Revenir en haut Aller en bas
lepetitmarocain




Nombre de messages : 333
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptyLun 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
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptyLun 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




Nombre de messages : 333
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptyMer 21 Fév 2024 - 10:37

Bonjour à tous.

Merci Klaus pour ta réponse et ton implication dans

Panoramic.

Bonne journée
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 EmptyMer 21 Fév 2024 - 16:57

KGF.dll V10.00 du 21/02/2024

Nouveautés:
- KGFGrid; ajout de la possibilité de colonnes et de lignes fixes

Modules modifiés:
KGF.dll

La 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:
KGF_dll - nouvelles versions - Page 13 Aa1120

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):
KGF_dll - nouvelles versions - Page 13 Aa1121

Dans ce cas, voici le bouton "Fixer 2 colonnes" s'active. Un clic sur ce bouton produit ceci:
KGF_dll - nouvelles versions - Page 13 Aa1122
On voit que les deux premières colonnes sont "excues" du défiement horizontal, mais pas du vertical.

Idem pour des lignes fixes:
KGF_dll - nouvelles versions - Page 13 Aa1123
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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





KGF_dll - nouvelles versions - Page 13 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 13 Empty

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Revenir en haut 
Page 13 sur 14Aller à la page : Précédent  1 ... 8 ... 12, 13, 14  Suivant
 Sujets similaires
-
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions
» Synedit_Editor - nouvelles versions
» Nouvelles DLL bonus

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: