[R] Effacer $GUI_GR_RECT

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Tespark
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mar. 02 avr. 2019 08:55
Status : Hors ligne

[R] Effacer $GUI_GR_RECT

#1

Message par Tespark »

Bonjour :D

Je me permets à nouveau de vous solliciter et cela toujours pour mon petit programme.

Je cherche à supprimer les $GUI_GR_RECT d'un graphique quand je lance un calcul.
Je veux faire disparaitre le dernier calcul qui affiche ces carrés.

Le souci est encore une fois avec une Boite de dialogue à onglets, je me retrouve avec l'interface graphique sur chaque onglet si je veux supprimer ces carrés.

Voici un exemple pour montrer comment j'ai codé mon outil, en espérant avoir été claire pour ma demande.

Merci.
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
Global $Graphic1
#Region ### START Koda GUI section ### Form=
Global $Form2 = GUICreate("Boite de dialogue à onglets", 456, 313, 302, 218)
GUISetIcon("D:\005.ico", -1)
Global $PageControl1 = GUICtrlCreateTab(8, 8, 396, 256)
Global $TabSheet1 = GUICtrlCreateTabItem("Onglet 1")
_Grahique()
Global $TabSheet2 = GUICtrlCreateTabItem("Onglet 2")
Global $TabSheet3 = GUICtrlCreateTabItem("Onglet 3")
GUICtrlCreateTabItem("")
Global $Button1 = GUICtrlCreateButton("&Valider", 166, 272, 75, 25)
Global $Button2 = GUICtrlCreateButton("&Annuler", 246, 272, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit

      Case $Button1
         _calcul()

      Case $Button2 ; Boutton pour effacer les points, ici pour l'exmple sur un boutton, sur mon programme dans la fonction calcul pour réinitialiser à chaque calcul
         GUICtrlDelete($Graphic1)
         _Grahique()

   EndSwitch
WEnd

Func _Grahique()
   $Graphic1 = GUICtrlCreateGraphic(128, 72, 161, 161)
   GUICtrlSetBkColor(-1, 0xF0F0F0)
   GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 79, 0)
   GUICtrlSetGraphic(-1, $GUI_GR_LINE, 79, 156)
   GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 0, 80)
   GUICtrlSetGraphic(-1, $GUI_GR_LINE, 162, 80)
   GUICtrlSetState(-1, $GUI_ONTOP)
EndFunc

Func _calcul() ; bien sur ici pas de vrai calcul pour l'exemple, juste des points
   GUICtrlSetGraphic($Graphic1, $GUI_GR_RECT, 40, 40, 6, 6)
   GUICtrlSetGraphic($Graphic1, $GUI_GR_RECT, 110, 40, 6, 6)
   GUICtrlSetGraphic($Graphic1, $GUI_GR_RECT, 40, 110, 6, 6)
   GUICtrlSetGraphic($Graphic1, $GUI_GR_RECT, 110, 110, 6, 6)
   GUICtrlSetGraphic($Graphic1, $GUI_GR_REFRESH)
EndFunc
 
Modifié en dernier par Tespark le dim. 28 avr. 2019 10:53, modifié 1 fois.

Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 1871
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Effacer $GUI_GR_RECT

#2

Message par TommyDDR »

Vous ne pouvez pas supprimer les rect comme vous semblez vouloir le faire.
Vous avez tout de même plusieurs choix pour y arriver :
1: Redessiner des RECT mais blanc (ne fonctionnera pas si les RECT sont supperposés à des éléments qui doivent rester visible)
2: Réinitialiser le graphic et redessiner tous les autres éléments seulement.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

Tespark
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mar. 02 avr. 2019 08:55
Status : Hors ligne

Re: [..] Effacer $GUI_GR_RECT

#3

Message par Tespark »

Merci pour la réponse. :)

Je supprime le graphique et le crée à nouveau, donc les points sont supprimés, mais le souci est qu'il s'affiche sur tout les onglets, je voudrais qu'il s'affiche uniquement sur le premier onglet, comme quand on exécute le code.

Pour les carrés blancs il faudrait relancer le calcul, mais si je relance un calcul les valeurs changent, donc la position des carrés également et de plus effectivement ils peuvent superposer des lignes et/ou courbes.

mdanielm
Membre émérite
Membre émérite
Messages : 254
Enregistré le : mer. 11 déc. 2013 19:48
Status : Hors ligne

Re: [..] Effacer $GUI_GR_RECT

#4

Message par mdanielm »

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>

GUICreate("",200,200)

Global $gr1=GUICtrlCreateGraphic(0,0,100,100)
    GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 10, 10)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 100, 100)

Global $gr2=GUICtrlCreateGraphic(50,60, 100,100)
   GUICtrlSetGraphic(-1, $GUI_GR_RECT, 10,10,50,50)

GUISetState(@SW_SHOW)
sleep(2000)
GUICtrlDelete($gr2)

Do
until GUIGetMsg()=$GUI_EVENT_CLOSE

Tespark
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mar. 02 avr. 2019 08:55
Status : Hors ligne

Re: [..] Effacer $GUI_GR_RECT

#5

Message par Tespark »

Bonjour mdanielm :)

comment l'intégrer avec l'exemple donnée en post 1 ?
Je veux réinitialiser à chaque calcul.
Et mes tests par rapport à la solution sont sans succès.
Le time n'est pas l'idéale pour la construction du programme.
Merci :wink:

mdanielm
Membre émérite
Membre émérite
Messages : 254
Enregistré le : mer. 11 déc. 2013 19:48
Status : Hors ligne

Re: [..] Effacer $GUI_GR_RECT

#6

Message par mdanielm »

Bonsoir,
La programmation ne consiste pas à intégrer des modules.
L'exemple montre qu'il faut utiliser 2 contrôles graphiques en regroupant ce que vous souhaitez effacer dans le même contrôle.
En une ligne vous effacez le contrôle, quitte à le recréer aussitôt!
Je vous conseille aussi d'étudier en détail l'exemple de la documentation… en FR bien sûr.
Cordialement.

Tespark
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mar. 02 avr. 2019 08:55
Status : Hors ligne

Re: [..] Effacer $GUI_GR_RECT

#7

Message par Tespark »

Merci pour votre réponse mdanielm ,

Ici je ne pense pas qu'il s'agisse de modules.
Je pense plus qu'il s'agit d'une mauvaises compréhension de ma part :cry: :lol: , mais je vous rassures, je travaille le .chm de AutoIt.fr.

Malgré ma compréhension à l'aide AutoIt, je ne parviens pas à faire cette suppression sans que le graphique s'ajoute aux autres onglets.
J'ai surement mal codé cet outil. En tout cas merci pour vos réponses et solution :wink:

mdanielm
Membre émérite
Membre émérite
Messages : 254
Enregistré le : mer. 11 déc. 2013 19:48
Status : Hors ligne

Re: [..] Effacer $GUI_GR_RECT

#8

Message par mdanielm »

RE
Il y a 2 problèmes:
-un lié aux TabItem : voir ci dessous la solution
-un lié à l'effacement du dessin: pour éviter de tout redessiner, utiliser 2 contrôles graphiques.


#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
Global $Form2 = GUICreate("Boite de dialogue à onglets", 456, 313, 302, 218)
GUISetIcon("D:\005.ico", -1)
Global $PageControl1 = GUICtrlCreateTab(8, 8, 396, 256)
Global $TabSheet1 = GUICtrlCreateTabItem("Onglet 1")
Global $TabSheet2 = GUICtrlCreateTabItem("Onglet 2")
Global $TabSheet3 = GUICtrlCreateTabItem("Onglet 3")
GUICtrlCreateTabItem("")
Global $Button1 = GUICtrlCreateButton("&Valider", 166, 272, 75, 25)
Global $Button2 = GUICtrlCreateButton("&Annuler", 246, 272, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Global $Graphic1
_Grahique()

Do
        $nMsg = GUIGetMsg()

      if GUICtrlRead($PageControl1)=0  then
         GUICtrlSetState($Graphic1, $GUI_ONTOP)
         Switch $nMsg
            Case $Button1 ;pour ajouter des points
               _calcul()
            Case $Button2 ; Boutton pour effacer les points, ici pour l'exmple sur un boutton, sur mon programme dans la fonction calcul pour réinitialiser à chaque calcul
               GUICtrlDelete($Graphic1)
               _Grahique()
         EndSwitch
      Else
         GUICtrlSetState($PageControl1, $GUI_ONTOP)
      EndIf

until $nMsg=$GUI_EVENT_CLOSE

;---------------------------------------------------
Func _Grahique() ;btn2
      $Graphic1 = GUICtrlCreateGraphic(128, 72, 161, 161)
        GUICtrlSetBkColor(-1, 0xF0F0F0)
        GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 79, 0)
        GUICtrlSetGraphic(-1, $GUI_GR_LINE, 79, 156)
        GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 0, 80)
        GUICtrlSetGraphic(-1, $GUI_GR_LINE, 162, 80)
        GUICtrlSetState(-1, $GUI_ONTOP)
      ;GUISetState(@SW_SHOW)
EndFunc

Func _calcul() ; bien sur ici pas de vrai calcul pour l'exemple, juste des points
        GUICtrlSetGraphic($Graphic1, $GUI_GR_RECT, 40, 40, 6, 6)
        GUICtrlSetGraphic($Graphic1, $GUI_GR_RECT, 110, 40, 6, 6)
        GUICtrlSetGraphic($Graphic1, $GUI_GR_RECT, 40, 110, 6, 6)
        GUICtrlSetGraphic($Graphic1, $GUI_GR_RECT, 110, 110, 6, 6)
        GUICtrlSetGraphic($Graphic1, $GUI_GR_REFRESH)
      GUISetState(@SW_SHOW)
EndFunc
 

Tespark
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mar. 02 avr. 2019 08:55
Status : Hors ligne

Re: [R] Effacer $GUI_GR_RECT

#9

Message par Tespark »

Bonjour mdanielm :)

J'ai réussit à l'intégrer à mon code et ça fonctionne très bien.
Sans votre aide je n'aurais pas réussi à le faire.

Il me reste encore pas mal de chose à faire pour cet outil, mais vous m'avez permis d'obtenir le résultat attendu.
Vraiment un grand merci. :D

Répondre