[R] Arrêter traitement d'une fonction

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
henriclaessens
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mar. 30 sept. 2008 13:47
Localisation : BELGIUM-4000-LIEGE
Status : Hors ligne

[R] Arrêter traitement d'une fonction

#1

Message par henriclaessens »

Bonjour,

J'ai deux petites questions :

1) J'ai une fonction dont le traitement est assez long (quelques minutes) que j'aimerais arrêter lorsque je lance, via le traymenu, une fonction pour adapter les settings du programme.
Juste histoire de pouvoir relancer la fonction de base avec les nouveaux settings.

2) Est-il possible d'ajouter en cours de déroulement du programe des éléments au tray menu?
Pour faire un truc du genre:

Code : Tout sélectionner

for $Boucle=1 to $Nombre_Objets
    TrayCreateItem($NewObjet[$Boucle][2], $Info)
Next
TraySetState()
 
"$Info" étant un menu créé plus tôt dans le code.

J'ai deux problèmes sur ce code:
a) Le tray défini avant dans le code ne s'adapte pas, même si je remplace la boucle par la création d'un item fixe.

Code : Tout sélectionner

$Test=TrayCreateItem($NewObjet[1][2], $Info)
b) Je ne parviens pas à "variabiliser" le ControlID.

Code : Tout sélectionner

for $Boucle=1 to $Nombre_Objets
    [b]$Test & $Boucle =[/b]TrayCreateItem($NewObjet[$Boucle][2], $Info)
Next
TraySetState()
 
Merci d'avance à toutes et tous pour votre aide

Henri
Modifié en dernier par henriclaessens le mer. 13 janv. 2010 11:16, modifié 1 fois.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Arrêter traitement d'une fonction

#2

Message par Iste »

Pour le B, utilisez un tableau

Code : Tout sélectionner

Dim $TrayItem[$Nombre_Objets]
for $Boucle=1 to $Nombre_Objets
    $TrayItem[$Boucle-1] = TrayCreateItem($NewObjet[$Boucle][2], $Info)
Next
TraySetState()
Pour le A, je ne comprend pas bien le probleme, pouvez vous donner un exemple buggé ?
Signez ici
Avatar du membre
henriclaessens
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mar. 30 sept. 2008 13:47
Localisation : BELGIUM-4000-LIEGE
Status : Hors ligne

Re: [..] Arrêter traitement d'une fonction

#3

Message par henriclaessens »

Super,

Merci pour le truc du tableau.

Sinon, pour le point A de la question 2, le problème est que dans le début de ma fonction je défini un menu dans le tray menu comme ceci:

Code : Tout sélectionner

    Opt("TrayMenuMode",1)
    Opt("TrayOnEventMode",1)

    $settingsitem = TrayCreateMenu("Settings")
    $item1 = TrayCreateItem("Option1", $settingsitem)
    TrayItemSetOnEvent(-1,"Options")

    TrayCreateItem("--------")

    $infositem = TrayCreateMenu("Info's")
    $Info1=TrayCreateMenu("Info1",$infositem)

    TrayCreateItem("--------")

    $aboutitem = TrayCreateItem("About")
        TrayItemSetOnEvent(-1,"About")

    TrayCreateItem("--------")

    $exititem = TrayCreateItem("Exit")
    TrayItemSetOnEvent(-1,"FinTray")

    TraySetState()
Et plus loin dans le code, j'essaye de créer un élément au sous-menu "$Info1" comme ceci:

Code : Tout sélectionner

$Test=TrayCreateItem($NewObjet[1][2], $Info1)
TraySetState()
 
$NewObjet[1][2] est un string.

Le problème, c'est que cet item n'apparaît pas dans le sous-menu.

Voici et encore merci

Henri
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Arrêter traitement d'une fonction

#4

Message par Iste »

Hum, essayez de recup la valeur renvoyée et celle de @error pour savoir si ca marche
Essayer aussi de remplacer le $NewObjet[1][2] par un simple "test" pour tester.
Apres avoir recolé les bout de code que vous m'avez passé, je ne vois pas de souci. Il y en a t-il chez vous avec ?
► Afficher le texte
Sinon, pour votre premiere question, si j'ai bien compris

Une fonction assez longue se lance, vous voudriez, depuis le tray, lancer une autre fonction qui prenne la main, et relancer la 1er a la fin ?
Si c'est bien ca, bah suffit de rien de spécial, autoit de pouvant faire qu'un truc a la foi, il mettera automatiquement la grosse fonction en pause le temps de traiter la petite. Si la petite dois modifier des variables de la grosse, suffit qu'elles soient Global.
Si autoit attend malgret tout la fin de la grosse pour lancer la petite... ben... je sais pas trop, faudra que je fasse des testes
Signez ici
Avatar du membre
henriclaessens
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mar. 30 sept. 2008 13:47
Localisation : BELGIUM-4000-LIEGE
Status : Hors ligne

Re: [R] Arrêter traitement d'une fonction

#5

Message par henriclaessens »

Merci

A bientôt

henri
Répondre