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
» Logiciel de planétarium.
antibug create_hide Emptypar Pedro Hier à 10:37

» Un autre pense-bête...
antibug create_hide Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
antibug create_hide Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
antibug create_hide Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
antibug create_hide Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
antibug create_hide Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
antibug create_hide Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
antibug create_hide Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
antibug create_hide Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
antibug create_hide Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
antibug create_hide Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
antibug create_hide Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
antibug create_hide Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
antibug create_hide Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
antibug create_hide Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le deal à ne pas rater :
Boutique Nike : -25% dès 50€ sur TOUT le site Nike avec le code ...
Voir le deal

 

 antibug create_hide

Aller en bas 
AuteurMessage
silverman

silverman


Nombre de messages : 970
Age : 52
Localisation : Picardie
Date d'inscription : 18/03/2015

antibug create_hide Empty
MessageSujet: antibug create_hide   antibug create_hide EmptyMar 27 Sep 2016 - 17:54

Bonjour à tous!

Vous le savez, à cause d'un bug, les forms ne sont pas positionnés correctement lorsqu'on les crés caché avec la commande 'CREATE_HIDE'. Pour corriger ce défaut, je vous pésente une sub très simple à utiliser, puisqu'il suffit de la placer n'importe où entre 'CREATE_HIDE' et 'CREATE_SHOW'(pourvu que le form ait été créé), c'est tout! Ensuite, le form peut être positionné avec les commandes habituelles, ça REmarche Cool
Sa syntaxe : ANTIBUG_CREATE_HIDE(frm_nb%)"
Code:
'
'
' Fixe le bug de la commande CREATE_HIDE
'
'

dim frm_nb% , maxi%
maxi%=3


'  les prochains objets système créés ne seront pas visibles
 CREATE_HIDE


' cré des forms invisibles
for frm_nb%=1 to maxi%
   form frm_nb%                                                                :' un form
   ANTIBUG_CREATE_HIDE(frm_nb%)
   left frm_nb%,50+(20*frm_nb%) : top frm_nb%,100+(20*frm_nb%)                 :' placé ou je l'ai décidé!
next frm_nb%


'  les prochains objets système créés seront visibles
 CREATE_SHOW


' maintenant que les forms sont créés, on y insère ce que l'on veut
picture 300 : parent 300,1 : full_space 300


' affiche les forms
caption 0,"Une petite pause pour faire durer le suspense..."
 PAUSE 1500
for frm_nb%=1 to maxi%
   show frm_nb%
next frm_nb%
caption 0,"et voila!"


END
'
'
'
SUB ANTIBUG_CREATE_HIDE(v_form%)
 if object_exists(v_form%)=0
    if message_error_ok("l'objet numéro "+str$(v_form%)+" n'existe pas")=1 then terminate
    terminate
 end_if
' variables pour la structure
 dim_local WINDOWPLACEMENT$
 dim_local WINDOWPLACEMENT_ptr% , long%,adr_source% , adr_destination% , buffer_position%
 
' variables pour les données de la structure
 dim_local tmpv_left% , tmpv_top% , v_left% , v_top% , v_width% , v_height%

' variables pour la recherche d'une 'library' disponible
 dim_local my_library$ , my_dll$
 dim_local i% , k% , found%
 if variable("antibug_create_hide_LIBRARY_KEYWORD_CREATION%")=0
    dim antibug_create_hide_LIBRARY_KEYWORD_CREATION%
 end_if
 
 
' recherche si 'user32' est déjà utilisé :
'
'
   i%=0
   k%=0
   found%=0
   my_dll$="user32"
   '
   repeat
      k%=k%+1
   until library$(k%)="_"

   repeat
      i%=i%+1
         my_library$=lower$(library$(i%))
         '
         if my_library$=my_dll$
            found%=1
            exit_repeat
         end_if
   until i%=k%

   ' on ne peut pas savoir si les commandes utilisateur ont déjà été créé, il faut ruser
   if antibug_create_hide_LIBRARY_KEYWORD_CREATION%=0
      antibug_create_hide_LIBRARY_KEYWORD_CREATION%=1
      if found%=0
         LIBRARY i%,my_dll$
      end_if
      command "antibug_create_hide_GET_PLACEMENT","GetWindowPlacement",i%,"II","stdcall"
      command "antibug_create_hide_SET_PLACEMENT","SetWindowPlacement",i%,"II","stdcall"
   end_if


' préparation de la structure :
'
'   créer une structure pour 11 integers
   WINDOWPLACEMENT$=string$(44,chr$(0))
  
'   GET_STRUCTURE_PTR(adr(WINDOWPLACEMENT_ptr%),adr(WINDOWPLACEMENT$))         :' récupère l'adresse de la structure et écrit là dans la variable 'WINDOWPLACEMENT_ptr%'
   adr_source%=adr(WINDOWPLACEMENT$)
   adr_destination%=adr(WINDOWPLACEMENT_ptr%)
   poke adr_destination%,peek(adr_source%)
   poke adr_destination%+1,peek(adr_source%+1)
   poke adr_destination%+2,peek(adr_source%+2)
   poke adr_destination%+3,peek(adr_source%+3)

'   WRITE_STRUCTURE_LONG(WINDOWPLACEMENT_ptr%,0,44)                            :' écrit sa taille(imposé par par 'user32' pour utiliser 'GetWindowPlacement')
   long%=44
   buffer_position%=0
   poke WINDOWPLACEMENT_ptr%+buffer_position%,peek(adr(long%))
   poke WINDOWPLACEMENT_ptr%+1+buffer_position%,peek(adr(long%)+1)
   poke WINDOWPLACEMENT_ptr%+2+buffer_position%,peek(adr(long%)+2)
   poke WINDOWPLACEMENT_ptr%+3+buffer_position%,peek(adr(long%)+3)

   ' récupère la position courante du form  qu'elle ne soit altéré
   v_left% = left(v_form%) : v_top% = top(v_form%)                             :' récupère la position courante du form avant qu'elle ne soit altéré

' remplir la structure :
'
'   null%=dll_call2("GetWindowPlacement",handle(v_form%),WINDOWPLACEMENT_ptr%) :' lit l'état du form
   antibug_create_hide_GET_PLACEMENT handle(v_form%),WINDOWPLACEMENT_ptr%


' lecture de données :
'
'   READ_STRUCTURE_LONG(adr(v_left%),WINDOWPLACEMENT_ptr%,28)                  :' positionnement horizontal <---- c'est cette valeur qui cause le bug
   adr_destination%=adr(tmpv_left%)
   buffer_position%=28
   poke adr_destination%,peek(WINDOWPLACEMENT_ptr%+buffer_position%)
   poke adr_destination%+1,peek(WINDOWPLACEMENT_ptr%+1+buffer_position%)
   poke adr_destination%+2,peek(WINDOWPLACEMENT_ptr%+2+buffer_position%)
   poke adr_destination%+3,peek(WINDOWPLACEMENT_ptr%+3+buffer_position%)

'   READ_STRUCTURE_LONG(adr(v_left%),WINDOWPLACEMENT_ptr%,36)                  :' positionnement horizontal + largeur
   adr_destination%=adr(v_width%)
   buffer_position%=36
   poke adr_destination%,peek(WINDOWPLACEMENT_ptr%+buffer_position%)
   poke adr_destination%+1,peek(WINDOWPLACEMENT_ptr%+1+buffer_position%)
   poke adr_destination%+2,peek(WINDOWPLACEMENT_ptr%+2+buffer_position%)
   poke adr_destination%+3,peek(WINDOWPLACEMENT_ptr%+3+buffer_position%)
   v_width%=v_width%-tmpv_left%                                                :' largeur du form
  
'   READ_STRUCTURE_LONG(adr(v_left%),WINDOWPLACEMENT_ptr%,32)                  :' positionnement vertical <---- c'est aussi cette valeur qui cause le bug
   adr_destination%=adr(tmpv_top%)
   buffer_position%=32
   poke adr_destination%,peek(WINDOWPLACEMENT_ptr%+buffer_position%)
   poke adr_destination%+1,peek(WINDOWPLACEMENT_ptr%+1+buffer_position%)
   poke adr_destination%+2,peek(WINDOWPLACEMENT_ptr%+2+buffer_position%)
   poke adr_destination%+3,peek(WINDOWPLACEMENT_ptr%+3+buffer_position%)

'   READ_STRUCTURE_LONG(adr(v_left%),WINDOWPLACEMENT_ptr%,40)                  :' positionnement vertical + hauteur
   adr_destination%=adr(v_height%)
   buffer_position%=40
   poke adr_destination%,peek(WINDOWPLACEMENT_ptr%+buffer_position%)
   poke adr_destination%+1,peek(WINDOWPLACEMENT_ptr%+1+buffer_position%)
   poke adr_destination%+2,peek(WINDOWPLACEMENT_ptr%+2+buffer_position%)
   poke adr_destination%+3,peek(WINDOWPLACEMENT_ptr%+3+buffer_position%)
   v_height%=v_height%-tmpv_top%                                               :' hauteur du form

  
' écriture de donnees :
'
'   WRITE_STRUCTURE_LONG(WINDOWPLACEMENT_ptr%,8,0)                             :' le laisser tel quel(visible/non visible)
   long%=show(frm_nb%)
   buffer_position%=8
   poke WINDOWPLACEMENT_ptr%+buffer_position%,peek(adr(long%))
   poke WINDOWPLACEMENT_ptr%+1+buffer_position%,peek(adr(long%)+1)
   poke WINDOWPLACEMENT_ptr%+2+buffer_position%,peek(adr(long%)+2)
   poke WINDOWPLACEMENT_ptr%+3+buffer_position%,peek(adr(long%)+3)

'   WRITE_STRUCTURE_LONG(WINDOWPLACEMENT_ptr%,28,v_left%)                      :' écrit la nouvelle position horizontale
   long%=v_left%
   buffer_position%=28
   poke WINDOWPLACEMENT_ptr%+buffer_position%,peek(adr(long%))
   poke WINDOWPLACEMENT_ptr%+1+buffer_position%,peek(adr(long%)+1)
   poke WINDOWPLACEMENT_ptr%+2+buffer_position%,peek(adr(long%)+2)
   poke WINDOWPLACEMENT_ptr%+3+buffer_position%,peek(adr(long%)+3)

'   WRITE_STRUCTURE_LONG(WINDOWPLACEMENT_ptr%,32,v_top%)                       :' écrit la nouvelle position verticale
   long%=v_top%
   buffer_position%=32
   poke WINDOWPLACEMENT_ptr%+buffer_position%,peek(adr(long%))
   poke WINDOWPLACEMENT_ptr%+1+buffer_position%,peek(adr(long%)+1)
   poke WINDOWPLACEMENT_ptr%+2+buffer_position%,peek(adr(long%)+2)
   poke WINDOWPLACEMENT_ptr%+3+buffer_position%,peek(adr(long%)+3)

'   WRITE_STRUCTURE_LONG(WINDOWPLACEMENT_ptr%,36,v_width%+v_left%)             :' écrit la largeur
   long%=v_width%+v_left%
   buffer_position%=36
   poke WINDOWPLACEMENT_ptr%+buffer_position%,peek(adr(long%))
   poke WINDOWPLACEMENT_ptr%+1+buffer_position%,peek(adr(long%)+1)
   poke WINDOWPLACEMENT_ptr%+2+buffer_position%,peek(adr(long%)+2)
   poke WINDOWPLACEMENT_ptr%+3+buffer_position%,peek(adr(long%)+3)

'   WRITE_STRUCTURE_LONG(WINDOWPLACEMENT_ptr%,40,v_height%+v_top%)             :' écrit la hauteur
   long%=v_height%+v_top%
   buffer_position%=40
   poke WINDOWPLACEMENT_ptr%+buffer_position%,peek(adr(long%))
   poke WINDOWPLACEMENT_ptr%+1+buffer_position%,peek(adr(long%)+1)
   poke WINDOWPLACEMENT_ptr%+2+buffer_position%,peek(adr(long%)+2)
   poke WINDOWPLACEMENT_ptr%+3+buffer_position%,peek(adr(long%)+3)
  
  
' écrit le nouvel état du form :
'
'   null%=dll_call2("SetWindowPlacement",handle(v_form%),WINDOWPLACEMENT_ptr%) :' écrit le nouvel état du form
   antibug_create_hide_SET_PLACEMENT handle(v_form%),WINDOWPLACEMENT_ptr%

END_SUB
Il y a également une fonction équivalente dans la dll de Klaus.
Revenir en haut Aller en bas
 
antibug create_hide
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: