Page 1 sur 1

[R] Arrêter traitement d'une fonction

Posté : mar. 12 janv. 2010 11:58
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

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

Posté : mar. 12 janv. 2010 12:29
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é ?

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

Posté : mar. 12 janv. 2010 13:46
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

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

Posté : mar. 12 janv. 2010 14:05
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

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

Posté : mer. 13 janv. 2010 11:15
par henriclaessens
Merci

A bientôt

henri