Problème Comportement EditorGadget()

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Problème Comportement EditorGadget()

Message par boddhi »

Bonjour à tous !

Quelqu'un pourrait-il me dire pourquoi, dans le code suivant, l'EditorGadget n'a pas le même comportement ?

Il semble que le texte ne s'efface correctement que lorsqu'il y a une barre de défilement horizontale.

Code : Tout sélectionner

Procedure Pc_RemplirEditorGadget(ArgMode)
  ClearGadgetItems(0)
  If ArgMode=1
    NbCarac=10
  Else
    NbCarac=100
  EndIf
  For NbLignes=1 To 20
    For Valeur=1 To NbCarac
      Chaine.s+"A"
    Next
    Chaine+Chr(10)
  Next
  SetGadgetText(0,Chaine)
EndProcedure

Procedure Pc_Test()
  ;DisableWindow(0,#True)
  SetGadgetText(0,"")
  Delay(3000)
  ;DisableWindow(0,#False)
EndProcedure

If OpenWindow(0,40,40,400,400,"titre")
  EditorGadget(0,10,10,380,360)
  ButtonGadget(1,10,374,80,20,"Remplir 1")
  ButtonGadget(2,100,374,80,20,"Remplir 2")
  ButtonGadget(3,190,374,80,20,"Test")
  ButtonGadget(4,310,374,80,20,"Quitter")
  Repeat
    Event=WaitWindowEvent():Gadget=EventGadget()
    Select Event
      Case #PB_Event_Gadget
        Select Gadget
          Case 1,2
            Pc_RemplirEditorGadget(Gadget)
          Case 3
            Pc_Test()
          Case 4
            If EventType()=#PB_EventType_LeftClick
              End
            EndIf
        EndSelect
      Case #PB_Event_CloseWindow
    EndSelect
  ForEver
EndIf
Merci.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Problème Comportement EditorGadget()

Message par Backup »

...........
Dernière modification par Backup le sam. 01/oct./2011 11:51, modifié 1 fois.
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Problème Comportement EditorGadget()

Message par boddhi »

Delay() rend la main au systeme

alors si tu rend la main au systeme sans avoir fini d'effacer
tu n'efface pas tout
avec ton delay(3000)
tu quitte le traitement de la fonction , alors qu'elle n'a pas fini sont travail !!
Merci Dobro.

Il est vrai que, lorsque j'ai posté ce code, j'ai mis Delay(3000) pour remplacer la boucle de test suivante :

Code : Tout sélectionner

Procedure Pc_Test()
  DisableWindow(0,#True)
  SetGadgetText(0,"")
  For Compteur.i=1 To 100000000:Next
  DisableWindow(0,#False)
EndProcedure
où l'on s'aperçoit que dans le cas "Remplir 1" + "Test" le texte ne s'efface pas tout à fait entièrement dès le départ à l'inverse de "Remplir 2" + "Test".
Et plus on augmente la valeur de Compteur, plus c'est flagrant !!!
(Note : Cette boucle n'est là que pour mettre en valeur ce phénomène).

Dans mon code originel, dont le principe est :
  • - Champs (StringGagdet(s) et EditorGadget) renseignés
    - Gestion Evènements
    - Effacement du contenu des gadgets
    - Appel de procédures
    - Champs de nouveau renseignés
Lors de l'effacement du contenu des gadgets, les StringGadget ne posent pas de problème.
Sur l'EditorGadget, sur les 3 lignes qu'il doit contenir, seul la 2e est effacée (??)

J'ai essayé aussi bien SetGadgetText(Gadget,"") que ClearGadgetItems(Gadget). Même résultat. :?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Problème Comportement EditorGadget()

Message par Backup »

................
Dernière modification par Backup le sam. 01/oct./2011 11:51, modifié 1 fois.
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Problème Comportement EditorGadget()

Message par boddhi »

Merci de ta réponse Dobro mais je pense que j'ai dû mal expliquer mon problème...

Je ne peux pas mettre l'intégralité de mon code, ce serait trop long...

Ci-dessous, une idée de son principe :

Code : Tout sélectionner

EnableExplicit
Enumeration ; Gadgets
  #GAD_LS_NOMS
  #GAD_LIB_PRENOM
  #GAD_CP_PRENOM
  #GAD_LIB_NOM
  #GAD_CP_NOM
  #GAD_ED_DESC
  #GAD_BT_QUITTER
EndEnumeration
Global Event,Gadget,TypeEvenmt
Global.s Fichier
Fichier="C:\temp.txt"

Procedure Pc_CreerFichierEtRemplirListe()
  Define.i Compteur
  ; **** Creation d'un fichier sur disque volotairement long pour illustrer le problème
  If CreateFile(0,"C:\temp.txt")=0:End:EndIf
  For Compteur=1 To 50000
    AddGadgetItem(#GAD_LS_NOMS,-1,"NOM"+Str(Compteur))
    WriteStringN(0,"NOM"+Str(Compteur)+Chr(9)+"PRENOM"+Str(Compteur)+Chr(9)+"LIGNE1;LIGNE2;LIGNE3")
  Next
  CloseFile(0)
EndProcedure

Procedure Pc_AfficherDetailNom(ArgNom.s)
  Define.s Chaine
  Define.i Compteur
  DisableWindow(0,#True)
  ; Mise à blanc des champs
  SetGadgetText(#GAD_CP_NOM,"")
  SetGadgetText(#GAD_CP_PRENOM,"")
  SetGadgetText(#GAD_ED_DESC,"")
  Debug "Valeur Nom : "+GetGadgetText(#GAD_CP_NOM)
  ; Boucle pour ralentir un peu le processus (pour simuler d'autres traitements qui ne rendent pas la main à la gestion d'évènements)
  For Compteur=1 To 50000000:Next
  ; ******************
  ; ******************
  ; ******************
  ;
  ; Erreur de débutant ???
  ; Qu'est ce qui fait que les StringGadget ne sont pas mis à blanc avant la boucle et avant la saisie de nouvelles valeurs
  ; Alors que la ligne 2 de l'EditorGadget soit effacée et pas les lignes 1 et 3 ???
  ;
  ; ******************
  ; ******************
  ; ******************
  ; Recherche du nom dans le fichier
  If ReadFile(0,Fichier)=0:Goto Pc_AfficherDetailNom_Fin:EndIf
  While Not Eof(0)
    Chaine=ReadString(0)
    If StringField(Chaine,1,Chr(9))=ArgNom
      ; MAJ des champs
      SetGadgetText(#GAD_CP_NOM,StringField(Chaine,1,Chr(9)))
      SetGadgetText(#GAD_CP_PRENOM,StringField(Chaine,2,Chr(9)))
      Chaine=ReplaceString(StringField(Chaine,3,Chr(9)),";",Chr(10))
      SetGadgetText(#GAD_ED_DESC,Chaine)
      Break
    EndIf
  Wend
  Pc_AfficherDetailNom_Fin:
  DisableWindow(0,#False)
EndProcedure

If OpenWindow(0,40,40,400,400,"Titre")
  ListIconGadget(#GAD_LS_NOMS,10,10,200,360,"Nom",200)
  TextGadget(#GAD_LIB_NOM,230,10,60,20,"Nom")
  StringGadget(#GAD_CP_NOM,230,30,160,20,"")
  TextGadget(#GAD_LIB_PRENOM,230,60,60,20,"Prénom")
  StringGadget(#GAD_CP_PRENOM,230,80,160,20,"")
  EditorGadget(#GAD_ED_DESC,230,120,160,60)
  ButtonGadget(#GAD_BT_QUITTER,310,374,80,20,"Quitter")
  
  Pc_CreerFichierEtRemplirListe()
  
  Repeat
    Event=WaitWindowEvent():Gadget=EventGadget():TypeEvenmt=EventType()
    Select Event
      Case #PB_Event_Gadget
        Select Gadget
          Case #GAD_LS_NOMS
            If TypeEvenmt=#PB_EventType_LeftClick
              Pc_AfficherDetailNom(GetGadgetText(Gadget))
            EndIf
          Case #GAD_BT_QUITTER
            If TypeEvenmt=#PB_EventType_LeftClick
              DeleteFile(Fichier)
              End
            EndIf
        EndSelect
      Case #PB_Event_CloseWindow
        DeleteFile(Fichier)
        End
    EndSelect
  ForEver
EndIf
Qu'est ce qui fait que les StringGadget ne sont pas mis à blanc avant la boucle et avant la saisie de nouvelles valeurs alors que la ligne 2 de l'EditorGadget soit effacée et pas les lignes 1 et 3 ??? :(
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Problème Comportement EditorGadget()

Message par Backup »

...............
Dernière modification par Backup le sam. 01/oct./2011 11:50, modifié 1 fois.
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Problème Comportement EditorGadget()

Message par boddhi »

Mea culpa est :?

J'avais pourtant essayé WindowEvent() et sur mon code et sur l'exemple mais il ne donnait pas le résultat escompté.

Le souci, dans mon code, c'est qu'il n'y a pas de boucle qui exécute 50 000 000 Event().
C'est une suite d'instructions qui gère l'accès à des fichiers binaires, qui récupère des données textes unicode et des bitmaps à convertir...

Il faut que je trouve le bon endroit et le bon moyen sans ralentir le traitement... :)

Merci de ton aide... et de ta patience... :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Problème Comportement EditorGadget()

Message par Backup »

boddhi a écrit : C'est une suite d'instructions qui gère l'accès à des fichiers binaires, qui récupère des données textes unicode et des bitmaps à convertir...

Il faut que je trouve le bon endroit et le bon moyen sans ralentir le traitement... :)
dans ce cas , il te faut envisager d'utiliser les threads ! ;)

meme que ça sert a ça ... a effectuer des traitements en tache de fond :)
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Problème Comportement EditorGadget()

Message par boddhi »

En toute franchise, c'est un aspect de la prog que je ne maîtrise pas du tout... :oops:

Il va falloir que je m'y penche sérieusement !!! :D
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Problème Comportement EditorGadget()

Message par Backup »

..............
Dernière modification par Backup le sam. 01/oct./2011 11:52, modifié 1 fois.
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: Problème Comportement EditorGadget()

Message par Geo Trouvpatou »

Salut.

Voici un exemple fonctionnel.
Ta fenetre s'ouvre, tu cliques sur le bouton "Pc_CreerFichierEtRemplirListe" et pendant que ta "ListIconGadget" se remplie, ta fenêtre principale n'est pas bloquée tu peux la déplacer et même voir ta "ListIconGadget" se remplir au fur et à mesure.

Code : Tout sélectionner

EnableExplicit
Enumeration ; Gadgets
      #GAD_LS_NOMS
      #GAD_LIB_PRENOM
      #GAD_CP_PRENOM
      #GAD_LIB_NOM
      #GAD_CP_NOM
      #GAD_ED_DESC
      #GAD_BT_QUITTER
EndEnumeration
Global Event,Gadget,TypeEvenmt
Global.s Fichier
Fichier="C:\temp.txt"

Procedure Pc_CreerFichierEtRemplirListe(parametre.i)
      Protected.i Compteur
      ; **** Creation d'un fichier sur disque volotairement long pour illustrer le problème
      If CreateFile(0,"C:\temp.txt")=0:End:EndIf
      For Compteur=1 To 50000
            AddGadgetItem(#GAD_LS_NOMS,-1,"NOM"+Str(Compteur))
            WriteStringN(0,"NOM"+Str(Compteur)+Chr(9)+"PRENOM"+Str(Compteur)+Chr(9)+"LIGNE1;LIGNE2;LIGNE3")
      Next
      CloseFile(0)
EndProcedure

Procedure Pc_AfficherDetailNom(ArgNom.s)
      Protected.s Chaine
      Protected.i Compteur
      
      DisableWindow(0,#True)
      ; Mise à blanc des champs
      SetGadgetText(#GAD_CP_NOM,"")
      SetGadgetText(#GAD_CP_PRENOM,"")
      SetGadgetText(#GAD_ED_DESC,"")
      Debug "Valeur Nom : "+GetGadgetText(#GAD_CP_NOM)
      ; Boucle pour ralentir un peu le processus (pour simuler d'autres traitements qui ne rendent pas la main à la gestion d'évènements)
      For Compteur=1 To 50000000:Next
      ; ******************
      ; ******************
      ; ******************
      ;
      ; Erreur de débutant ???
      ; Qu'est ce qui fait que les StringGadget ne sont pas mis à blanc avant la boucle et avant la saisie de nouvelles valeurs
      ; Alors que la ligne 2 de l'EditorGadget soit effacée et pas les lignes 1 et 3 ???
      ;
      ; ******************
      ; ******************
      ; ******************
      ; Recherche du nom dans le fichier
      If ReadFile(0,Fichier)=0:Goto Pc_AfficherDetailNom_Fin:EndIf
      While Not Eof(0)
            Chaine=ReadString(0)
            If StringField(Chaine,1,Chr(9))=ArgNom
                  ; MAJ des champs
                  SetGadgetText(#GAD_CP_NOM,StringField(Chaine,1,Chr(9)))
                  SetGadgetText(#GAD_CP_PRENOM,StringField(Chaine,2,Chr(9)))
                  Chaine=ReplaceString(StringField(Chaine,3,Chr(9)),";",Chr(10))
                  SetGadgetText(#GAD_ED_DESC,Chaine)
                  Break
            EndIf
      Wend
      Pc_AfficherDetailNom_Fin:
      DisableWindow(0,#False)
EndProcedure

If OpenWindow(0,40,40,400,400,"Titre")
      ListIconGadget(#GAD_LS_NOMS,10,10,200,360,"Nom",200)
      TextGadget(#GAD_LIB_NOM,230,10,60,20,"Nom")
      StringGadget(#GAD_CP_NOM,230,30,160,20,"")
      TextGadget(#GAD_LIB_PRENOM,230,60,60,20,"Prénom")
      StringGadget(#GAD_CP_PRENOM,230,80,160,20,"")
      EditorGadget(#GAD_ED_DESC,230,120,160,60)
      ButtonGadget(#GAD_BT_QUITTER,310,374,80,20,"Quitter")
      
      ButtonGadget(100,216,200,180,20,"Pc_CreerFichierEtRemplirListe")
      ;ButtonGadget(101,240,240,180,20,"Pc_AfficherDetailNom")
      
      
      ;Pc_CreerFichierEtRemplirListe()
      
      Repeat
            Event=WaitWindowEvent():Gadget=EventGadget():TypeEvenmt=EventType()
            Select Event
                  Case #PB_Event_Gadget
                        Select Gadget
                              Case #GAD_LS_NOMS
                                    If TypeEvenmt=#PB_EventType_LeftClick
                                          Pc_AfficherDetailNom(GetGadgetText(Gadget))
                                    EndIf
                                    
                              Case 100
                                    ; On lance un thread pour éviter que la fenetre principale ne soit bloquée.
                                    ; Pendant que le traitement de la procedure s'effectue
                                    CreateThread(@Pc_CreerFichierEtRemplirListe(), 0)
                                    
                                    
                              Case #GAD_BT_QUITTER
                                    If TypeEvenmt=#PB_EventType_LeftClick
                                          DeleteFile(Fichier)
                                          End
                                    EndIf
                        EndSelect
                  Case #PB_Event_CloseWindow
                        DeleteFile(Fichier)
                        End
            EndSelect
      ForEver
EndIf
Inconvénient de la chose, il faut cliquer sur un bouton.
En Delphi il y avait OnCreateForm et là-dedans on mettait ce qu'on voulait qu'il se passe à l'ouverture de la fenêtre.
Je n'ai pas trouvé l'équivalent en PureBasic mais un vieux de la vieille aura peut-être la réponse.
Problème résolu dans le Post ci-dessous.

Il est possible de procéder de la même façon pour "Pc_AfficherDetailNom(ArgNom.s)" mail il faudra modifier quelques bricoles.
J'imagine que ArgNom est le nom à trouver dans la liste?

1) Tu utilises EnableExplicit et c'est très bien, c'est une des 1ères choses que j'ai appris à faire.
Inconvénient c'est qu'il faut déclarer ses variables.
Toi tu as mis Define pour que le compilo arrête de te saôuler mais regarde comment j'ai défini les variables dans les procédures.

Cela évite que dans du code externe si tu utilises une variable avec le même nom que dans une de tes procédure, cela ne foute le merdier à l'extérieur.
Bien évidemment parfois on est obligé d'en Globaliser certaines.

2) Perso à la place de ArgNom.s je préfère ArgNom$, pourquoi?
Parce que si tu files ton prog à d'autres, ou si tu ouvres ton prog dans 3 mois et que tu as une procédure de 400 lignes

Si à la 382ème ligne tu as "ArgNom", tu ne sauras plus si la variable doit recevoir un entier ou une chaine et tu devras parcourir ton prog à la recherche de ta var (Bon CTRL + F ira plus vite ;) ), alors que si tu vois "ArgNom$" tu sais tout de suite qu'elle reçoit une chaine.

Bye.
Dernière modification par Geo Trouvpatou le mar. 04/mai/2010 18:15, modifié 1 fois.
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: Problème Comportement EditorGadget()

Message par Geo Trouvpatou »

Ajout d'un flag onCreateForm pour que le Thread soit automatiquement lancé au départ sans appuyer sur aucun bouton.
Ajout pour brider le bouton "Pc_CreerFichierEtRemplirListe" et le réactiver à la fin pour éventuellement relancer le Thread.

Code : Tout sélectionner

; http://www.purebasic.fr/french/viewtopic.php?f=1&t=10531

EnableExplicit
Enumeration ; Gadgets
      #GAD_LS_NOMS
      #GAD_LIB_PRENOM
      #GAD_CP_PRENOM
      #GAD_LIB_NOM
      #GAD_CP_NOM
      #GAD_ED_DESC
      #GAD_BT_QUITTER
      #GAD_BT_CreerFichierEtRemplirListe
EndEnumeration



Global.i Event, Gadget ,TypeEvenmt, onCreateForm = 0
Global.s Fichier
Fichier="C:\temp.txt"

Procedure Pc_CreerFichierEtRemplirListe(parametre.i)
      Protected.i Compteur
      ; **** Creation d'un fichier sur disque volotairement long pour illustrer le problème
      If CreateFile(0,"C:\temp.txt")=0:End:EndIf
      For Compteur=1 To 50000
            AddGadgetItem(#GAD_LS_NOMS,-1,"NOM"+Str(Compteur))
            WriteStringN(0,"NOM"+Str(Compteur)+Chr(9)+"PRENOM"+Str(Compteur)+Chr(9)+"LIGNE1;LIGNE2;LIGNE3")
      Next
      CloseFile(0)
      DisableGadget(#GAD_BT_CreerFichierEtRemplirListe, 0) ; On réactive le bouton "Pc_CreerFichierEtRemplirListe" à la fin du traitement.
EndProcedure

Procedure Pc_AfficherDetailNom(ArgNom.s)
      Protected.s Chaine
      Protected.i Compteur
      
      DisableWindow(0,#True)
      ; Mise à blanc des champs
      SetGadgetText(#GAD_CP_NOM,"")
      SetGadgetText(#GAD_CP_PRENOM,"")
      SetGadgetText(#GAD_ED_DESC,"")
      Debug "Valeur Nom : "+GetGadgetText(#GAD_CP_NOM)
      ; Boucle pour ralentir un peu le processus (pour simuler d'autres traitements qui ne rendent pas la main à la gestion d'évènements)
      For Compteur=1 To 50000000:Next
      ; ******************
      ; ******************
      ; ******************
      ;
      ; Erreur de débutant ???
      ; Qu'est ce qui fait que les StringGadget ne sont pas mis à blanc avant la boucle et avant la saisie de nouvelles valeurs
      ; Alors que la ligne 2 de l'EditorGadget soit effacée et pas les lignes 1 et 3 ???
      ;
      ; ******************
      ; ******************
      ; ******************
      ; Recherche du nom dans le fichier
      If ReadFile(0,Fichier)=0:Goto Pc_AfficherDetailNom_Fin:EndIf
      While Not Eof(0)
            Chaine=ReadString(0)
            If StringField(Chaine,1,Chr(9))=ArgNom
                  ; MAJ des champs
                  SetGadgetText(#GAD_CP_NOM,StringField(Chaine,1,Chr(9)))
                  SetGadgetText(#GAD_CP_PRENOM,StringField(Chaine,2,Chr(9)))
                  Chaine=ReplaceString(StringField(Chaine,3,Chr(9)),";",Chr(10))
                  SetGadgetText(#GAD_ED_DESC,Chaine)
                  Break
            EndIf
      Wend
      Pc_AfficherDetailNom_Fin:
      DisableWindow(0,#False)
EndProcedure

If OpenWindow(0,40,40,400,400,"Titre")
      ListIconGadget(#GAD_LS_NOMS,10,10,200,360,"Nom",200)
      TextGadget(#GAD_LIB_NOM,230,10,60,20,"Nom")
      StringGadget(#GAD_CP_NOM,230,30,160,20,"")
      TextGadget(#GAD_LIB_PRENOM,230,60,60,20,"Prénom")
      StringGadget(#GAD_CP_PRENOM,230,80,160,20,"")
      EditorGadget(#GAD_ED_DESC,230,120,160,60)
      ButtonGadget(#GAD_BT_QUITTER,310,374,80,20,"Quitter")
      
      ButtonGadget(#GAD_BT_CreerFichierEtRemplirListe, 216, 200, 180, 20,"Pc_CreerFichierEtRemplirListe")
      ;ButtonGadget(101,240,240,180,20,"Pc_AfficherDetailNom")
      
      
      ;Pc_CreerFichierEtRemplirListe()
      
      Repeat
            Event=WaitWindowEvent():Gadget=EventGadget():TypeEvenmt=EventType()
            
            ; Flag permettant de lancer automatiquement le Thread a l'ouverture de la fenêtre sans appuyer sur aucun bouton
            If onCreateForm = 0
                  DisableGadget(#GAD_BT_CreerFichierEtRemplirListe, 1) ; On desactive le bouton "Pc_CreerFichierEtRemplirListe"
                  
                  ; On lance un thread pour éviter que la fenetre principale ne soit bloquée,
                  ; pendant que le traitement de la procedure s'effectue
                  CreateThread(@Pc_CreerFichierEtRemplirListe(), 0) 
                  
                  onCreateForm = 1 ; pour n'être utilisé qu'au démarrage de l'appli. 
                  
            EndIf
            
            
            Select Event
                  Case #PB_Event_Gadget
                        Select Gadget
                              Case #GAD_LS_NOMS
                                    If TypeEvenmt=#PB_EventType_LeftClick
                                          Pc_AfficherDetailNom(GetGadgetText(Gadget))
                                    EndIf
                                    
                              Case #GAD_BT_CreerFichierEtRemplirListe
                                    ; On lance un thread pour éviter que la fenêtre principale ne soit bloquée,
                                    ; pendant que le traitement de la procedure s'effectue
                                    CreateThread(@Pc_CreerFichierEtRemplirListe(), 0)
                                    DisableGadget(#GAD_BT_CreerFichierEtRemplirListe, 1) ; On desactive le bouton "Pc_CreerFichierEtRemplirListe"
                                    
                              Case #GAD_BT_QUITTER
                                    If TypeEvenmt=#PB_EventType_LeftClick
                                          DeleteFile(Fichier)
                                          End
                                    EndIf
                        EndSelect
                  Case #PB_Event_CloseWindow
                        DeleteFile(Fichier)
                        End
            EndSelect
      ForEver
EndIf
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Problème Comportement EditorGadget()

Message par Backup »

..............
Dernière modification par Backup le sam. 01/oct./2011 11:53, modifié 1 fois.
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: Problème Comportement EditorGadget()

Message par Geo Trouvpatou »

Dobro a écrit :@Geo Trouvpatou

c'est bien d'aider les autres ..

mais ça sert a rien de refaire ce qui viens d'etre posté ;)
(c'est la 2em fois avec le post sur les threads... mais bon)
L'inconvénient de ton code c'est que la fenêtre principale est bloquée, impossible de la déplacer, ou si tu y arrives, fait-moi signe.
Avec mon code, pendant que la "ListIconGadget" se charge tu peux déplacer la fenêtre principale et c'est tout l'intérêt d'un Thread pour de gros traitements.

Donc je trouve que mon post apporte quelque chose de plus.
Mais si tu veux je réédite mes 2 posts et je les supprimes, je n'y vois aucun inconvénient.
Désolé de donner mon opinion ou ma version|vision des choses après toi, je ne recommencerai plus.

Bye.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Problème Comportement EditorGadget()

Message par Backup »

Geo Trouvpatou a écrit :L'inconvénient de ton code c'est que la fenêtre principale est bloquée, impossible de la déplacer, ou si tu y arrives, fait-moi signe.
ce que tu dis est vrais sauf qu'il ne s'agit pas de mon code !!

je suis juste intervenu sur le point soulevé par boddhi

c'est a dire cette partie du code :

Code : Tout sélectionner

Procedure Pc_Test()
  DisableWindow(0,#True)
  SetGadgetText(0,"")
  For Compteur.i=1 To 100000000:Next
  DisableWindow(0,#False)
EndProcedure
ensuite je lui montre comment faire un thread, puisqu'il semblait ne pas maitriser le truc
donc je repars sur cette partie de code a nouveau

ton code utilise la meme chose mais en prenant en compte des le lancement ...

pour ma part j'ai faillit le faire, cependant il m'a paru judicieux de lui laisser le faire
de lui meme , de plus; rien ne dit que le comportement du debut (fenetre bloqué), n'est pas un fait voulu par boddhi ! ;) ...

Mais si tu veux je réédite mes 2 posts et je les supprimes, je n'y vois aucun inconvénient.
Désolé de donner mon opinion ou ma version|vision des choses après toi, je ne recommencerai plus.

Bye.
j'ai juste trouvé que ça faisait doublon ..
tu peux le laisser bien sur :)
Répondre