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
» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
KGF_dll - nouvelles versions - Page 7 Emptypar papydall Hier à 16:57

» PANORAMIC V 1
KGF_dll - nouvelles versions - Page 7 Emptypar papydall Hier à 3:22

» select intégrés [résolu]
KGF_dll - nouvelles versions - Page 7 Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
KGF_dll - nouvelles versions - Page 7 Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
KGF_dll - nouvelles versions - Page 7 Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
KGF_dll - nouvelles versions - Page 7 Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
KGF_dll - nouvelles versions - Page 7 Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
KGF_dll - nouvelles versions - Page 7 Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
KGF_dll - nouvelles versions - Page 7 Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
KGF_dll - nouvelles versions - Page 7 Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
KGF_dll - nouvelles versions - Page 7 Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
KGF_dll - nouvelles versions - Page 7 Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
KGF_dll - nouvelles versions - Page 7 Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
KGF_dll - nouvelles versions - Page 7 Emptypar jjn4 Ven 26 Avr 2024 - 17:39

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

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Cdiscount : -30€ dès 300€ ...
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 ... 6, 7, 8 ... 10 ... 14  Suivant
AuteurMessage
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 22 Mar 2022 - 0:21

KGF.dll V9.76 du 21/03/2022

Nouveautés:
- Designer: correction de certains bugs
- Designer: remplacement du ON_CHANGE sur un MEMO par des USER_EVENT


Modules modifiés:
KGF.dll

La doc est en cours de rédaction, en même temps que la doc pour TRecord qui est en cours de réalisation.

Voici la nouvelle démo du Designer. Observez en particulier le mécanisme des USER_EVENT: iil y en a un premier pour le changement de position de l'objet encadré, et un second pour le changement de dimension. Et ces informations sont directement transmises dans USER_EVENT_LPARAM -nul besoin de décoder des lignes dans un MEMO:
Code:
' test_designer.bas

label user_event

dim res%, i%, s$, obj%, DS%, p%, MaskOrigin%, MaskOperation%, MaskPanoramic%, MaskLow%, MaskHigh%
dim MoveAction%, SizeAction%, ll%, tt%, ww%, hh%, action%, WParam%, LParam%
MaskOrigin% = hex("FF000000")
MaskOperation% = hex("00FF0000")
MaskHigh% = hex("FFFF0000")
MaskLow% = hex("0000FFFF")
MaskPanoramic% = hex("0000FFFF")
MoveAction% = hex("00030000")
SizeAction% = hex("00040000")

dll_on "KGF.dll"

memo 10 : ' mémo à traiter
memo 123 : hide 123 : bar_both 123
' dans CreateDesigner, le dernier paramètre est la largeur de la bordure jaune.
'  Une largeur de 3 est un minimum si l'on veut pouvoir saisir les poignées noires.
DS% = dll_call6("CreateDesigner",10,handle(0),handle(123),object_internal(10),1,3)
' l'appel suivant impose une grille magnétique de 24 pixels
' res% = dll_call6("DesignerFunction",5,DS%,0,0,0,24)

on_user_event user_event
end

user_event:
  if bin_and(USER_EVENT_WPARAM,MaskOrigin%)<>0 then return      : ' pas venant du designer ?
  WParam% = USER_EVENT_WPARAM
  LParam% = USER_EVENT_LPARAM
'  off_user_event
  action% = bin_and(WParam%,MaskOperation%)/65536
  select action%
    case 3
      obj% = bin_and(WParam%,MaskPanoramic%)
      ll%  = bin_and(LParam%,MaskHigh%)/65536
      tt%  = bin_and(LParam%,MaskLow%)
      left obj%,ll%
      top obj%,tt%
' caption 0,hex$(WParam%)+"  "+hex$(LParam%)+"  "+str$(left(10))+","+str$(top(10))+"  "+hex$(USER_EVENT_WPARAM)+"  "+hex$(USER_EVENT_LPARAM)
      return
    case 4
      obj% = bin_and(WParam%,MaskPanoramic%)
      ww%  = bin_and(LParam%,MaskHigh%)/65536
      hh%  = bin_and(LParam%,MaskLow%)
      width obj%,ww%
      height obj%,hh%
' caption 0,hex$(WParam%)+"  "+hex$(LParam%)+"  "+str$(width(10))+","+str$(height(10))
      return
  end_select
  on_user_event user_event
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 22 Mar 2022 - 9:00

KGF.dll V9.77 du 22/03/2022

Nouveautés:
- Designer: remplacer OBJECT_INTERNAL par HANDLE

Modules modifiés:
KGF.dll

La doc est en cours de rédaction, en même temps que la doc pour TRecord qui est en cours de réalisation.

Cette modification a été rendue nécesssaire par unn changement d'implémentation de Panoramic.
Mais à part ce changement dans la syntaxe d'appel, l'action de cette fonction reste inchangée.

Voici la démo adaptée à ce changement:
Code:
' test_FixedFormSize.bas

label fixe, variable
dim res%

button 1 : top 1,10 : left 1,10 : caption 1,"Fixe"
  on_click 1,fixe
button 2: top 2,10 : left 2,120 : caption 2,"Variable"
  on_click 2,variable

dll_on "KGF.dll"

end

fixe:
  res% = dll_call2("FixedFormSize",handle(0),1)
  if res%=0 then message "Les dimensions sont fixes"
  return
 
variable:
  res% = dll_call2("FixedFormSize",handle(0),0)
  if res%=0 then message "Les dimensions sont variables"
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 22 Mar 2022 - 14:49

Euuuh Klaus c'est pas plutôt le FORM que le DESIGNER ?! scratch geek

Et au fait est ce qu'il est possible sur le même principe de bloquer le déplacement des FORMs ?
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Marc

Marc


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 22 Mar 2022 - 15:06

Sujet : FixedFormSize

C’est super ! Merci Klaus !

Suggestion :
Lorsque les dimensions sont fixes, je pense qu’il serait souhaitable de bloquer également l’action du bouton « Agrandir » en haut à droite du FORM.

KGF_dll - nouvelles versions - Page 7 Klaus131



Bonne continuation !
Revenir en haut Aller en bas
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 22 Mar 2022 - 15:30

Je ne peux pas tester pour le moment.

Mais dans l'idéal c'est de bloquer les 3 boutons !
A moins que cela fasse l'objet d'une autre commande et aussi bloquer le déplacement...
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Marc

Marc


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 22 Mar 2022 - 15:45

Sujet : FixedFormSize

@ Minibug
Minibug a écrit:
Mais dans l'idéal c'est de bloquer les 3 boutons !

Je ne pense pas qu’il faille bloquer les trois boutons en haut à droite d'un FORM, mais exclusivement celui d’« Agrandir », quitte à ne pas du tout l’afficher (si c’est possible) quand la fenêtre est fixe.

Les boutons « Fermer » et Réduire » doivent rester présents et opérationnels.
Dans Panoramic, il existe déjà une commande pour inhiber le bouton « Fermer » : CLOSE_INACTIVE.

Bien entendu, ce n’est que mon point de vue.
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 22 Mar 2022 - 16:12

Pour cacher ou monter les boutons de réduction/agrandissement, il y a déjà ceci:
Code:
res% = DLL_call2("SetMinimizeMaximize",hnd%,mode%)

Idem pour la croix rouge;
Code:
res% = DLL_call2("SetCloseBox",hnd%,mode%)

Ainsi, on peut lé gérer indépendemment.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 22 Mar 2022 - 16:15

Bon ok. Je verrai bien quand j'en serai aux propriétés des objets...

Merci pour ta réponse Klaus.
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 22 Mar 2022 - 18:14

Klaus, je suis en train de tester tout ça et du coup j'ai une question...

Y a t-il encore un intérêt à utiliser le paramètre concernant le MEMO ?

res% = dll_call6("CreateDesigner",10,handle(parent%),handle(memo%),object_internal(objet%),1,3)

D'autre part, dans le sous programmme user_event: :

- Tu as désactivé la ligne OFF_USER_EVENT
- Et laissé active la ligne ON_USER_EVENT user_event

Est-ce logique ?
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMer 23 Mar 2022 - 14:02

KGF.dll V9.78 du 23/03/2022

Nouveautés:
- Designer: gérer la grille magnétique par l'icône de déplacement et par les poignées

Modules modifiés:
KGF.dll

La doc est en cours de rédaction, en même temps que la doc pour TRecord qui est en cours de réalisation.

Le programme de démo actualisé, avec une taille de la grille magnétique de 24 pixels:
Code:
' test_designer.bas

label user_event

dim res%, i%, s$, obj%, DS%, p%, MaskOrigin%, MaskOperation%, MaskPanoramic%, MaskLow%, MaskHigh%
dim MoveAction%, SizeAction%, ll%, tt%, ww%, hh%, action%, WParam%, LParam%
MaskOrigin% = hex("FF000000")
MaskOperation% = hex("00FF0000")
MaskHigh% = hex("FFFF0000")
MaskLow% = hex("0000FFFF")
MaskPanoramic% = hex("0000FFFF")
MoveAction% = hex("00030000")
SizeAction% = hex("00040000")

dll_on "KGF.dll"

memo 10 : ' mémo à traiter
memo 123 : hide 123 : bar_both 123
' dans CreateDesigner, le dernier paramètre est la largeur de la bordure jaune.
'  Une largeur de 3 est un minimum si l'on veut pouvoir saisir les poignées noires.
DS% = dll_call6("CreateDesigner",10,handle(0),handle(123),object_internal(10),1,3)
' l'appel suivant impose une grille magnétique de 24 pixels
 res% = dll_call6("DesignerFunction",5,DS%,0,0,0,24)

on_user_event user_event
end

user_event:
  if bin_and(USER_EVENT_WPARAM,MaskOrigin%)<>0 then return      : ' pas venant du designer ?
  WParam% = USER_EVENT_WPARAM
  LParam% = USER_EVENT_LPARAM
  action% = bin_and(WParam%,MaskOperation%)/65536
  select action%
    case 3
      obj% = bin_and(WParam%,MaskPanoramic%)
      ll%  = bin_and(LParam%,MaskHigh%)/65536
      tt%  = bin_and(LParam%,MaskLow%)
      left obj%,ll%
      top obj%,tt%
' caption 0,hex$(WParam%)+"  "+hex$(LParam%)+"  "+str$(left(10))+","+str$(top(10))+"  "+hex$(USER_EVENT_WPARAM)+"  "+hex$(USER_EVENT_LPARAM)
      return
    case 4
      obj% = bin_and(WParam%,MaskPanoramic%)
      ww%  = bin_and(LParam%,MaskHigh%)/65536
      hh%  = bin_and(LParam%,MaskLow%)
      width obj%,ww%
      height obj%,hh%
' caption 0,hex$(WParam%)+"  "+hex$(LParam%)+"  "+str$(width(10))+","+str$(height(10))
      return
  end_select
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyJeu 24 Mar 2022 - 1:12

KGF.dll V9.79 du 23/03/2022

Nouveautés:
- Nouvelles fonctions: FixedFormPosition et KillFixedSizeOrPosition

Modules modifiés:
KGF.dll

La doc est en cours de rédaction, en même temps que la doc pour TRecord qui est en cours de réalisation.

Leur fonction est évidente...
Il y a un point intéressant à savoir: on peut utiliser les routines FixedFormSize, FixedFormPosition et KillFixedSizeOrPosition avec n'importe quelle form, même plusieurs forms simultanément et indépendemment.

Voici le programme de démo permettant de gérer séparément ou simultanément le bloquage du redumensionnement et/ou du positionnement:
Code:
' test_FixedFormSize.bas

label taillefixe, taillevariable, positionfixe, positionvariable, normaliser
dim res%

button 1 : top 1,10 : left 1,10 : width 1,120 : caption 1,"Taille Fixe"
  on_click 1,taillefixe
button 2 : top 2,10 : left 2,140 : width 2,120 : caption 2,"Taille Variable"
  on_click 2,taillevariable
alpha 3 : top 3,10 : left 3,370 : font_bold 3 : caption 3,"Taille variable"
button 11 : top 11,40 : left 11,10 : width 11,120 : caption 11,"Position Fixe"
  on_click 11,positionfixe
button 12 : top 12,40 : left 12,140 : width 12,120 : caption 12,"Position Variable"
  on_click 12,positionvariable
alpha 13 : top 13,40 : left 13,370 : font_bold 13 : caption 13,"Position variable"
button 21 : top 21,90 : left 21,10 : width 21,250 : caption 21,"Normaliser"
  on_click 21,normaliser
  

dll_on "KGF.dll"

end


taillefixe:
  res% = dll_call2("FixedFormSize",handle(0),1)
  if res%=0
    caption 3,"Taille fixe"
  else
    caption 3,"Erreur"
  end_if
  return
  
taillevariable:
  res% = dll_call2("FixedFormSize",handle(0),0)
  if res%=0
    caption 3,"Taille variable"
  else
    caption 3,"Erreur"
  end_if
  return

positionfixe:
  res% = dll_call2("FixedFormPosition",handle(0),1)
  if res%=0
    caption 13,"Position fixe"
  else
    caption 13,"Erreur"
  end_if
  return
  
positionvariable:
  res% = dll_call2("FixedFormPosition",handle(0),0)
  if res%=0
    caption 13,"Position variable"
  else
    caption 13,"Erreur"
  end_if
  return
  
normaliser:
  res% = dll_call1("KillFixedSizeOrPosition",handle(0))
  if res%=0
    caption 3,"Taille variable"
    caption 13,"Position variable"
  else
    caption 3,"Erreur"
    caption 13,"Erreur"
  end_if
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptySam 2 Avr 2022 - 15:03

KGF.dll V9.80 du 28/03/2022

Nouveautés:
- LoadTreeViewFromFile: correction d'un bug
- Nouvelle fonction: SetKGFGridAbsolutePosition
- KGFGrid: positionner la fenêtre de saisie sur la cellule à saisir (grâce à SetKGFGridAbsolutePosition)
- KGFGrid: permettre de déplacer des noeuds par drag and drop
- SetTreeViewOptions: nouvelle option 13: gérer le drag and drop
- SetTreeViewOptions: nouvelle option 14: autorisation du drag/drop du noeud sélectionné dans par
- SetKGFGridCellRangeType: correction d'un bug
- nouvelle fonction: GetKGFGridRowByValue  pour integer, string, float et boolean
- nouvelle fonction ClearKGFGridCellRange
- KGFGrid: noveaux USER_EVENT;
-   UserEventKGFGridIntegerEdit     = $00060000; // edition dans le KGFGrid cellule Integer
-   UserEventKGFGridStringEdit      = $00070000; // edition dans le KGFGrid cellule Floating
-   UserEventKGFGridFloatEdit       = $00080000; // edition dans le KGFGrid cellule String
- Designer si l'objet capturé est un TAB, alors rendre le Designer inactif
- nouvelle fonction: SearchFoldersByWildCard
- SetSpecialKeyboardHook; nouveaux codes 3 et 4 pour hooker la souris, 5 et 6 pour clavier et souris
- nouvelle fonction: SaveKGFGridCellRangeToFile
- DesignerFunction: act=7: permettre/interdire redimensionnement et/ou déplacement
- nouvel objet: ListOfObjects
- Nouvelles fonctions: ForceWindowToForeground, GetCurrentWindowState


Modules modifiés:
KGF.dll

La doc est en cours de rédaction, en même temps que la doc pour TRecord qui est en cours de réalisation.

Cette version apporte des nouveautés majeures ainsi que quelques corrections d'anomalies.
En voici le détail:
- LoadTreeViewFromFile: correction d'un bug
simple correction interne d'une erreur de logique - sans incidence visible à l'extérieur

- Nouvelle fonction: SetKGFGridAbsolutePosition
Syntaxe:
Code:
res% = dll_call3("SetKGFGridAbsolutePosition",KG%,abs_x%,abs_y%)
Cette nouvelle fonction n'a aucun effet visuel. Elle permet simplement de mémoriser les coordonnées absolues du TreView dans l'objet. Ceci est nécessaire pour le positionnement de la fenêtre de saisie d'une cellule duKGFGrid.

- KGFGrid: positionner la fenêtre de saisie sur la cellule à saisir (grâce à SetKGFGridAbsolutePosition)
La fenêtre de saisie du contenu d'une cellule est maintenant positionnée per-dessus la cellule et nonn en haut à gauche de l'écran comme auparavant. Ceci est possible grâce à la fonction SetKGFGridAbsolutePosition.

- KGFGrid: permettre de déplacer des noeuds par drag and drop
On peut maintenant déplacer des noeuds d'un KGFTreeVieew par Drag and Drop. Avancé majeure !

- SetTreeViewOptions: nouvelle option 13: gérer le drag and drop
Cette option permet d'autoriser ou interdire globalement le Drag and Drop sur un objet KGFTreeView.

- SetTreeViewOptions: nouvelle option 14: autorisation du drag/drop du noeud sélectionné dans par
Cette option autorise ou interdit le Drag and Drop pour le noeud sélectionné, si globalement le Drag and Drop est autorisé pour l'objet concerné.

SetKGFGridCellRangeType: correction d'un bug
Correction technique interne dans le cas du changement de type de cellule si elle contient déjà des données.

- nouvelle fonction: GetKGFGridRowByValue pour integer, string, float et boolean
Syntaxe:
Code:
' Valeur string sx$:
  sx$ = "Numéro Panoramic"
  ind% = dll_call5("GetKGFGridRowByValue",KG%,1,1,1,adr(sx$))
Valeur integer valeur%:
  ind% = dll_call5("GetKGFGridRowByValue",KG%,1,1,1,valeur%)
Valeur flottate valeur:
  ind% = dll_call5("GetKGFGridRowByValue",KG%,1,1,1,ad((valeur))
Cette fonction retourne l'indice de la première ligne dans laquelle on trouve une certaine valeur dans une colonne indiquée, en commençant par une ligne de début indiquée. Ceci permet de rechercher successivement toutes les occurrences d'une valeur spécifique.

- nouvelle fonction ClearKGFGridCellRange
Syntaxe:
Code:
res% = dll_call6("ClearKGFGridCellRangeData",KG%,lig1%,lig2%,col1%,col2%,opt%)
'  opt% = somme de 1 (data seulement) et 2 (attributs seulement)
Cette fonction efface les données et/ou les attributs graphiques d'un rectangle de cellules.

- KGFGrid: noveaux USER_EVENT!
-   UserEventKGFGridIntegerEdit     = $00060000; // edition dans le KGFGrid cellule Integer
-   UserEventKGFGridStringEdit      = $00070000; // edition dans le KGFGrid cellule Floating
-   UserEventKGFGridFloatEdit       = $00080000; // edition dans le KGFGrid cellule String


Ceci permet d'intercepter les modifications de n'importe quelle cellule par la saisie directe dans la cellule (ce qui est fait par un clic droit dans la cellule)

Tout ceci rend possible mon essai d'un utilitaire de construiction visuelle d'un GUI panoramic.

Nouvelle fonction: SearchFoldersByWildCard
Cette fonction retourne dans un MEMO une liste de fichiers trouvés dans un dossier et tous ses sous-dossiers, selon un critère pouvant contenir des Jokers (* et/ou ?) en n'importe quelle combinaison. Le retour s'effectue avec une ligne par fichier, contenant le chemin complet vers le fichier.

SetSpecialKeyboardHook; nouveaux codes 3 et 4 pour hooker la souris
A l'image des codes 1 et 2 (bloquer et débloquer la réception d'un caractère dans une form),
les codes 3 et 4 font la même chose pour les actions de la souris.
les codes 5 et 6 font la même chose, mais simultanément sur clavier et souris.

nouvelle fonction: SaveKGFGridCellRangeToFile
Syntatx:
Code:
res% = dll_call6("SaveKGFGridCellRangeToFile",KG%,rStart%,eEnd%,cStart%,cEnd%,adr(fic$))
Cette fonction sauvegarde un rectangle de cellules dans un fichier.

DesignerFunction: act=7: permettre/interdire redimensionnement et/ou déplacement
Cette option permet de bloquer le déplacement et/ou le redimensionnement d'un objet par le Designer.
Par défaut, les deux actions sont activées.
action 7 = permettre/interdire le redimensionnement et/ou le déplacement
commandé via le dernier paramètre: somme de  
-   redimensionnement:
-     0=pas de changement  1=interdire  2=permettre
-   déplacement:
-     0=pas de changement  4=interdire  8=permettre

nouvel objet: ListOfObjects
Cet objet crée un objet similaire à l'objet LIST de Panoramic.
Mais il y a une différence majeure: chaque élément est un objet indépendant !
Chaque ligne peut être d'un type d'objet différent, aussi bien que toutes les lignes peuvent être de type identique.
Mieux: pour chaque ligne, on peut définir, indépendemment, la police, sa taille, sa couleur et ses attributs.
Les hauteurs des lignes s'adaptent automatiquement à la police configurée pour chaque ligne.
L'objet signale son identifiant (1, 2, ...) lors de sa création via un USER_EVENT.
Un clic dans une ligne, quelque soit la nature de l'objet, génère un USER_EVENT indiquant "généré par un objet ListOfObjects", la nature de l'évènement (clic dans une ligne), l'identifiant de l'objet LIstOfObjects utilisé) et le numéro de ligne cliquée.
Une fonction permet de connaître le contenu d'une ligne par son numéro, une autre permet modifier ce contenu.
On peut ajouter des lignes en fin de liste ou insérer devant une ligne spécifique.
On peut supprimer une ligne, et on peut changer les attributs de police d'une ligne.
Les types de ligne possibles actuellement sont:
ALPHA, BUTTON, CHECK, EDIT.
Avec EDIT en particulier, on peut aisément créer des listes dont chaque élément est modifiable facilement...

Nouvelles fonctions: ForceWindowToForeground, GetCurrentWindowState
La fonction res%=dll_call1("ForceWindowToForeground",hnd%) ait exactement ce que son nom indique.
La fonction res%=dll_call1("GetCurrentWindowState",hnd%) retourne:
-1 si le handle est invalide (fenêtre inexistante, ...)
0 si la fenêtre est dans un état "normal"
1 si la fenêtre est minimisée
2 si la fenêtre est maximisée


Dernière édition par Klaus le Mer 4 Mai 2022 - 2:14, édité 7 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 12 Avr 2022 - 13:53

Dans la liste des nouveautés de la dernière version de KGF.dll, il y a la nouvelle fonction SearchFoldersByWildCard.

Syntaxe:
Code:
res% = dll_call3("SearchFoldersByWildCard",adr(dossier$),adr(filtre$),handle(memo%))
Dossier$ = chemin complet vers le dossier qui sera parcouru, ainsi que tous ses sous-dossiers
filtre$ = critère de recheche, éventuellement avec des jokers (* et/ou ?) en n'importe quelle combinaison
memo% = numéro d'un objet MEMO Panoramic (avec BAR_BOTH)

La fonction est très rapide !

Essayez ce code, en mettant votre critère en place:
Code:
' test_SearchFoldersByWildCard.bas

dim res%, dir$, crit$

memo 1 : full_space 1 : bar_both 1

dll_on "KGF.dll"
dir$ = dir_current$
crit$ = "GD_*.GDdef"    : ' <======== critère trouvant tout ce qui a un rapport avec GUI_Builder
res% = dll_call3("SearchFoldersByWildCard",adr(dir$),adr(crit$),handle(1))
end

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 12 Avr 2022 - 15:23

Sujet : SearchFoldersByWildCard

C’est excellent !
Testé avec succès avec toutes sortes de combinaisons alliant les jokers « * » et « ? », tout en ciblant différents types de disques durs internes ou externes.
Les réponses sont très rapides !
C’est parfait !

Merci Klaus !
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMer 13 Avr 2022 - 6:40

Attention:

Pour ceux qui utilisent l'objet KGFGrid, ou ceux qui testent GUI_Builder:

Rechargez KGF.dll car elle contient une correction cruciale de la fonction SetKGFGridCellRangeType !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMer 13 Avr 2022 - 14:41

Petit exercice de style:
La nlouvelle version de la fonction SetSpecialKeyboardHook permet de bloquer et débloquer, au choix, les entrées du clavier, les actions de la souris ou les deux. L'action est valable sur l'ensemble de l'application, même s'il y a plusieurs forms. C'est la différence fondamentale avec la commande INACTIVE qui ne fonctionne que sur un seuk objet.

Lr programme suivant montre un bouton "Bloquer", un PANEL et un EDIT dans le PANEL.
Au départ, l'application est "libre" - on peut cliquer dans le EDIT et saisir du texte.
Après un clic sur le bouton, le programme ets bloqué pendant 5 secondes (observer le titre !).
Pendant ce temps, on ne peut ni cliquer dans le EDIT ni sur la croix rouge ni déplacer ou redimensionner la fenêtre.
Au bout de 5 secondes, un timer déclenche le débloquage (observer le titre !) et tout est possible à nouveau.

C'est une façon élégante de protéger une phase d'exécution longue d'un programme qui doit absolument être protégée.

Code:
' test_nouveau_SetSpecialKeyboardHook.bas

label block, unblock

dim res%, key%

caption 0,str$(handle(0))
inactive 0
dll_on "KGF.dll"
res% = dll_call1("SetMainFormHandle",handle(0))
active 0
caption 0,"Libre !"

button 1 : caption 1,"Bloquer" : on_click 1,block
panel 3 : top 3,70
edit 4 : parent 4,3 : top 4,10 : left 4,20
timer 5 : timer_off 5 : timer_interval 5,5000 : on_timer 5,unblock
end

block:
'  res% = DLL_call4("SetSpecialKeyboardHook",1,handle(0),adr(key%),0)
'  res% = DLL_call4("SetSpecialKeyboardHook",3,handle(0),adr(key%),0)
  res% = DLL_call4("SetSpecialKeyboardHook",5,handle(0),adr(key%),0)  : ' équivalent aux deux lignes précédentes
  caption 0,"Bloqué !"
  timer_on 5
  return

unblock:
  res% = DLL_call4("SetSpecialKeyboardHook",2,handle(0),adr(key%),0)
  res% = DLL_call4("SetSpecialKeyboardHook",4,handle(0),adr(key%),0)
  res% = DLL_call4("SetSpecialKeyboardHook",6,handle(0),adr(key%),0)  : ' équivalent aux deux lignes précédentes
  caption 0,"Libre !"
  timer_off 5
  return

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMer 13 Avr 2022 - 19:01

Bonsoir Klaus !

Humm très intéressant cette fonction. J'y vois déjà de l'intérêt...
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyJeu 14 Avr 2022 - 0:37

Smile Smile Smile
Mais gare aux erreurs de programmation tant que ce bloquage est actif:
Il n'y a plus aucun moyen d'intervenir par le clavier ou par la souris en cas de souci ! scratch scratch scratch
Il faut tuer la tâche par le gestionnaire des tâches.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptySam 30 Avr 2022 - 13:26

J'ai ajouté un nouvel objet à KGF.dll: un objet ListOfObjects.
Pour un aperçu des fonctionnalités, voir mon post du 2/04/2022 à 13h03.
L'objet a encore grandir, mais ce qui est publié est déjà exploitable.
Le programme permet même d'exporter les données de l'objet, y compris tous ses attributs.
Une autre fonction permet d'importer un fichier exporté pour retrouver exactement la même configuration.
On peut aussi indiquer un facteur de répétition et ajouter ainsi un nombre quelconque de lignes identiques.

Voici une petite démo:
Code:
' test_ListOfObjects.bas

label close0, UserEvent, creer, supprimer, demo, enlever
label ajouterAlpha, ajouterButton, ajouterCheck, ajouterEdit
label choisirCouleur, appliquer, memoriser
label appliquerInsertion, chercherFichier
label importerFichier, exporterFichier

dim res%, LO%, LO_ID%, table_LO%(20), table_LO_ID%(20), LO_next%, LO_actuel%, LO_ID_event%
dim wpar%, lpar%, txt$, police$, lig%, typ%, ntyp%
dim i%, s$, s1$, R%, G%, B%, clr%, siz%, att%, fic$, repeter%
dim types$(20)
data 4,"ALPHA","BUTTON","CHECK","EDIT"

clr% = 0
att% = 0
siz% = 10
att% = 0
police$ = "Arial"
LO_next% = 0


read ntyp%
for i%=1 to ntyp%
  read types$(i%)
next i%

button 1 : top 1,10 : left 1,10 : caption 1,"Créer"
  on_click 1,creer

button 2 : top 2,10 : left 2,110 : caption 2,"Supprimer"
  on_click 2,supprimer

button 3 : top 3,10 : left 3,210 : caption 3,"Démo"
  on_click 3,demo
 
alpha 4 : top 4,50 : left 4,10 : caption 4,"Ligne:"
spin 5 : top 5,50 : left 5,60 : width 5,60
  min 5,1 : max 5,300 : position 5,1
button 6 : top 6,50 : left 6,120 : caption 6,"Enlever"
  on_click 6,enlever
 
alpha 7 : top 7,80 : left 7,10 : caption 7,"Caption:"
edit 8 : top 8,80 : left 8,60 : width 8,200
button 9 : top 9,80 : left 9,260 : caption 9,"Ajouter ALPHA"
  width 9,100 : on_click 9,ajouterAlpha

alpha 10 : top 10,110 : left 10,10 : caption 10,"Caption:"
edit 11 : top 11,110 : left 11,60 : width 11,200
button 12 : top 12,110 : left 12,260 : caption 12,"Ajouter BUTTON"
  width 12,100 : on_click 12,ajouterButton

alpha 13 : top 13,140 : left 13,10 : caption 13,"Caption:"
edit 14 : top 14,140 : left 14,60 : width 14,200
button 15 : top 15,140 : left 15,260 : caption 15,"Ajouter CHECK"
  width 15,100 : on_click 15,ajouterCheck 
 
alpha 16 : top 16,170 : left 16,10 : caption 16,"Text:"
edit 17 : top 17,170 : left 17,60 : width 17,200
button 18 : top 18,170 : left 18,260 : caption 18,"Ajouter EDIT"
  width 18,100 : on_click 18,ajouterEdit
 
 
alpha 500 : top 500,50 : left 500,830 : font_bold 500 : caption 500,"Attributs d'une ligne:"
alpha 501 : top 501,80 : left 501,860 : caption 501,"Ligne:"
spin 502 : top 502,80 : left 502,910 : width 502,60
  min 502,1 : max 502,300 : position 502,1
alpha 503 : top 503,110 : left 503,860 : caption 503,"Police:"
combo 504 : top 504,110 : left 504,910 : width 504,200
  font_names_load 504
  for i%=1 to count(504)
    if item_read$(504,i%)="Arial"
      item_select 504,i%
      exit_for
    end_if
  next i%
alpha 514 : top 514,140 : left 514,860 : caption 514,"Taille:"
combo 515 : top 515,140 : left 515,910 : width 515,40
  item_add 515,"8"
  item_add 515,"10"
  item_add 515,"12"
  item_add 515,"14"
  item_add 515,"16"
  item_add 515,"24"
  item_add 515,"36"
  item_add 515,"48"
  item_select 515,2
alpha 505 : top 505,170 : left 505,860 : caption 505,"Couleur:"
button 506 : top 506,170 : left 506,910 : caption 506,"Choisir"
  on_click 506,choisirCouleur
picture 507 : top 507,170 : left 507,1010 : width 507,25 : height 507,25
  color 507,0,0,0
alpha 508 : top 508,200 : left 508,860 : caption 508,"Attributs:"
check 509 : top 509,200 : left 509,910 : caption 509,"G" : font_bold 509
check 510 : top 510,200 : left 510,950 : caption 510,"I" : font_italic 510
check 511 : top 511,200 : left 511,990 : caption 511,"S" : font_underline 511
check 512 : top 512,200 : left 512,1030 : caption 512,"B" : font_strike 512
button 513 : top 513,230 : left 513,910 : caption 513,"Appliquer"
  on_click 513,appliquer
button 516 : top 516,230 : left 516,1020 : caption 516,"Mémoriser"
  on_click 516,memoriser
 
alpha 520 : top 520,280 : left 520,830 : font_bold 520 : caption 520,"Prochain ajout:"
alpha 521 : top 521,310 : left 521,860 : caption 521,"Devant:"
spin 522 : top 522,310 : left 522,910 : width 522,60
  min 522,0 : max 522,300 : position 522,0
button 523 : top 523,330 : left 523,910 : caption 523,"Appliquer"
  on_click 523,appliquerInsertion
 
alpha 530 : top 530,380 : left 530,830 : font_bold 530 : caption 530,"Import / Export des données:"
alpha 531 : top 531,410 : left 531,860 : caption 531,"Fichier:"
edit 532 : top 532,410 : left 532,910 : width 532,300
button 533 : top 533,410 : left 533,1210 : width 533,30 : font_bold 533 : caption 533,"..."
  on_click 533,chercherFichier
open_dialog 534 : filter 534,"Sauvegarde ListOfObjects (*.slo)|*.slo" 
button 535 : top 535,440 : left 535,910 : width 535,120 : caption 535,"Importer fichier"
  on_click 535,importerFichier 
button 536 : top 536,440 : left 536,1040 : width 536,120 : caption 536,"Exporter fichier"
  on_click 536,exporterFichier 

alpha 540 : top 540,490 : left 540,830 : font_bold 540 : caption 540,"Génération multiple (selon Attributs d'une ligne):"
alpha 541 : top 541,520 : left 541,860 : caption 541,"Nombre:"
spin 542 : top 542,520 : left 542,910 : width 542,60
  min 542,1 : max 542,300 : position 542,1
alpha 543 : top 543,550 : left 543,910 : caption 543,"(Utiliser un des boutons de création à gauche)"


 
full_space 0
dll_on "KGF.dll"

on_close 0,close0
on_user_event UserEvent

end

close0:
  LO% = dll_call1("DeleteListOfObjects",LO%)
  return

UserEvent:
  wpar% = user_event_wparam
  lpar% = user_event_lparam
  if bin_and(wpar%,hex("FF000000"))=hex("16000000")        : ' provenance d'un ListOfObjects ?
    ' ***** création de l'objet ListOfObjects
    if bin_and(wpar%,hex("00FF0000"))=hex("00010000")      : ' évènement création de l'objet ?
      LO_ID% = bin_and(wpar%,hex("0000FF00"))              : ' mémoriser l'identifiant de l'objet créé
    end_if
    ' ***** clic dans une ligne d'un objet ListOfObjects
    LO_ID_event% = bin_and(wpar%,hex("0000FF00"))          : ' prendre l'ID de l'objet ayant envoyé l'évènement
    for i%=0 to LO_next%-1
      if LO_ID_event%=table_LO_ID%(i%)
        LO% = table_LO%(i%)
        LO_ID% = table_LO_ID%(i%)
        LO_actuel% = i%
        exit_for
      end_if
    next i%
    if bin_and(wpar%,hex("0000FF00"))=LO_ID%              : ' est-ce un évènement pour l'objet LO% ?
      if bin_and(wpar%,hex("00FF0000"))=hex("00020000")    : ' évènement clic sur une ligne de la liste ?
        typ% = bin_and(wpar%,hex("FF"))                    : ' isoler le type de ligne cliquée
        s$ = string$(255," ")
        res% = dll_call3("GetListOfObjectInformation",LO%,lpar%,adr(s$))
        ' traiter ici le clic dans une ligne:
        s1$ = "ListOfObjects: index="+str$(LO_actuel%)+"  ID="+hex$(LO_ID%)+chr$(13)+chr$(10)
        s1$ = s1$ + "UserEvent: clic dans ligne "+str$(lpar%)+"  type="+types$(typ%)+"  ("+trim$(s$)+")"
        message s1$
      end_if
    end_if
   
  end_if
  return
 
creer:
  if LO_next%=0    : ' <========== pour interdire la création multiple ici, dans cette démo !
    LO% = dll_call5("CreateListOfObjects",handle(0),410,50,400,500)
    table_LO%(LO_next%) = LO%
    table_LO_ID%(LO_next%) = LO_ID%
    LO_next% = LO_next% + 1  : ' rendre possible la coexistence de plusieurs objets de ce type !
  end_if
  return
 
supprimer:
  LO% = dll_call1("DeleteListOfObjects",LO%)
  return
 
demo:
  gosub appliquerInsertion
  txt$ = "Ma première ligne"
  police$ = "Arial"
  res% = dll_call6("AddAlphaToListOfObjects",LO%,adr(txt$),adr(police$),12,hex("FF"),2)
  if position(522)>0 then position 522,position(522) + 1
  ' message "AddAlphaToListOfObjects: "+str$(res%)

  gosub appliquerInsertion
  txt$ = "Ma deuxième ligne"
  police$ = "Arial Black"
  res% = dll_call6("AddAlphaToListOfObjects",LO%,adr(txt$),adr(police$),16,hex("FF0000"),1)
  if position(522)>0 then position 522,position(522) + 1
  ' message "AddAlphaToListOfObjects: "+str$(res%)

  gosub appliquerInsertion
  txt$ = "Mon premier bouton"
  police$ = "Arial"
  res% = dll_call6("AddButtonToListOfObjects",LO%,adr(txt$),adr(police$),16,hex("FFFF00"),4)
  if position(522)>0 then position 522,position(522) + 1
  ' message "AddButtonToListOfObjects: "+str$(res%)

  gosub appliquerInsertion
  txt$ = "Mon premier objet Check"
  police$ = "Arial"
  res% = dll_call6("AddCheckToListOfObjects",LO%,adr(txt$),adr(police$),16,hex("FFFF"),8)
  if position(522)>0 then position 522,position(522) + 1
  ' message "AddCheckToListOfObjects: "+str$(res%)
 
  position 522,0
  return
 
enlever:
  lig% = position(5)
  res% = dll_call2("RemoveObjectFromListOfObjects",LO%,lig%)
  ' message "RemoveObjectFromListOfObjects: "+str$(res%)
  return

ajouterAlpha:
  gosub appliquerInsertion
  repeter% = position(542)
  txt$ = text$(8)
  police$ = "Arial"
  for i%=1 to repeter%
    res% = dll_call6("AddAlphaToListOfObjects",LO%,adr(txt$),adr(police$),siz%,clr%,att%)
  next i%
  position 522,0
  position 542,1
  return

ajouterButton:
  gosub appliquerInsertion
  repeter% = position(542)
  txt$ = text$(11)
  police$ = "Arial"
  for i%=1 to repeter%
    res% = dll_call6("AddButtonToListOfObjects",LO%,adr(txt$),adr(police$),siz%,clr%,att%)
  next i%
  position 522,0
  position 542,1
  return

ajouterCheck:
  gosub appliquerInsertion
  repeter% = position(542)
  txt$ = text$(14)
  police$ = "Arial"
  for i%=1 to repeter%
    res% = dll_call6("AddCheckToListOfObjects",LO%,adr(txt$),adr(police$),siz%,clr%,att%)
  next i%
  position 522,0
  position 542,1
  return
 
ajouterEdit:
  gosub appliquerInsertion
  repeter% = position(542)
  txt$ = text$(17)
  police$ = "Arial"
  for i%=1 to repeter%
    res% = dll_call6("AddEditToListOfObjects",LO%,adr(txt$),adr(police$),siz%,clr%,att%)
  next i%
  position 522,0
  position 542,1
  return
 
 
 
choisirCouleur:
  res% = dll_call6("ColorSelector",handle_application,0,adr(R%),adr(G%),adr(B%),adr(clr%))
  if res%=0
    color 507,R%,G%,B%
  end_if
  return
 
appliquer:
  lig% = position(502)
  police$ = item_index$(504)
  siz% = val(item_index$(515))
  att% = 0
  if checked(509)=1 then att% = att% + 1
  if checked(510)=1 then att% = att% + 2
  if checked(511)=1 then att% = att% + 4
  if checked(512)=1 then att% = att% + 8
 
  res% = dll_call6("ChangeListOfObjectsAttributes",LO%,lig%,adr(police$),siz%,clr%,att%)
  return
 
memoriser: 
  lig% = position(502)
  police$ = item_index$(504)
  siz% = val(item_index$(515))
  att% = 0
  if checked(509)=1 then att% = att% + 1
  if checked(510)=1 then att% = att% + 2
  if checked(511)=1 then att% = att% + 4
  if checked(512)=1 then att% = att% + 8
  message "Les paramètres sont mémorisés pour les prochains ajouts de lignes."
  return
 
appliquerInsertion:
  i% = position(522)
  res% = dll_call2("SetListOfObjectsInsertPoint",LO%,i%)
  return
 
chercherFichier:
  res% = 0
  fic$ = file_name$(534)
  if fic$=""
    res% = 1
  else
    if right$(fic$,4)<>".slo"
      res% = 1
    end_if
  end_if
  if res%=1 then fic$ = ""
  text 532,fic$
  return
 
importerFichier:
  fic$ = trim$(text$(532))
  if fic$=""
    message "Il faut choisir un fichier valide"
    return
  end_if
  res% = dll_call2("LoadListOfObjectsDataFromFile",LO%,adr(fic$))
  return
 
exporterFichier:
  fic$ = trim$(text$(532))
  if fic$=""
    message "Il faut choisir un fichier valide"
    return
  end_if
  res% = dll_call2("SaveListOfObjectsDataToFile",LO%,adr(fic$))
  if res%=0
    message "Les données sont exportées correctement."
  else
    message "Erreur en exportation des données."
  end_if
  return

Voici l'exportation du résultat après la création de l'objet, puis l'emploi de la démo, ce qui génère 4 lignes de types différents, avec des attributs graphiques différents. Ce fichier peut être importé et génère exactement le résultat du bouton "Démo":
Citation :
#ALPHA,"Arial",12,255,0,0,0,1,0,0
Ma première ligne
#ALPHA,"Arial Black",16,0,0,255,1,0,0,0
Ma deuxième ligne
#BUTTON,"Arial",16,0,255,255,0,0,1,0
Mon premier bouton
#CHECK,"Arial",16,255,255,0,0,0,0,1
Mon premier objet Check

Voici ce que ça donne à l'écran:
KGF_dll - nouvelles versions - Page 7 Aa1115

Ca vous plairait d'avoir des objets de type LIST avec des graphismes variés et/ou des lignes avec possibilité de saisie ? Avec ListOfObjects, tout cela est possible...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 3 Mai 2022 - 13:13

Bonjour Klaus !

j'ai besoin de ton aide... Laughing

J'ai mes 2 programmes Editeur et Constructeur que je suis en train de faire cohabiter dans un seul et même dossier.

j'ai insérer dans les 2 programmes Editeur et Constructeur un menu 'Basculer vers'.
Cela permet de minimiser le programme et cours et d'ouvrir l'autre programme ou s'il est déjà ouvert de le mettre en avant.

Cela fonctionne déjà avec KGF !

Seul problème, c'est quand le programme est minimiser comment le mettre en avant dans sa position normal ?

Exemple :
- Je suis sur l'éditeur. Le constructeur est minimisé.
- Je clique sur menu Basculer vers le constructeur. sauf qu'il n'apparait pas !

En fait ce que je cherche c'est de rendre la taille normale a un FORM d'un programme qui est minimisé !
Il s'agit bien sûr d'un FORM qui n'appartient pas au programme en cours.
Y a t'il une fonction dans KGF permettant cela ?

Merci d'avance pour ton aide. Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 3 Mai 2022 - 13:53

Tu peux essayer ceci:
Code:
res% = dll_call1("BringWindowToForeground",hnd%)
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 3 Mai 2022 - 14:05

Merci pour ta réponse Klaus.

je teste en fin d'après midi. Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 3 Mai 2022 - 14:42

Tu peux aussi recharger KGF.dll et tester ceci:
Code:
res% = dll_call1("ForceWindowToForeground",hnd%)
avec hnd% étant le handle de la form 0 du programme à rendre visible.

C'est une fonction que j'avais en interne et que j'ai rendue acessible...

EDIT

Non, ça ne marche pas. Ca marche uniquement si la fenêtre est cachée maispas minimisée.
Je continue de chercher...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 3 Mai 2022 - 18:12

Puisque j'en suis aux questions en voilà une autre...

Est ce que tu as une fonction qui permet de retourner l'etat de la fenêtre du programme pour savoir si elle est Minimisée, Normale ou maximisée ?
Et peut être même utiliser le ON_USER_EVENT pour une détection en temps réel dans le programme...
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 7 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 7 EmptyMar 3 Mai 2022 - 18:26

C'est fait - ça marche maintenant. Recharge KGF.dll et fais ceci:
Code:
res% = dll_call1("ForceWindowToForeground",hnd%)
avec hnd% étant le handle de la form 0 du programme à rappeler de sa situation minimisée.

Si le programme apparaît, mais n'est pas en avant-plan, tu peux faire ensuite:
Code:
res% = dll_call1("BringWindowToForeground",hnd%)
avec le même handle.

Citation :
Est ce que tu as une fonction qui permet de retourner l'etat de la fenêtre du programme pour savoir si elle est Minimisée, Normale ou maximisée ?
Non, mais je vais la faire et je te tiendrai au courant.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





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

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Revenir en haut 
Page 7 sur 14Aller à la page : Précédent  1 ... 6, 7, 8 ... 10 ... 14  Suivant
 Sujets similaires
-
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions
» Synedit_Editor - nouvelles versions
» version instantanée PANORAMIC V 0.9.25i6 du 14/12/2013

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: