[R] Insérer des boutons/liens hypertexte dans un edit

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
fabff7
Niveau 1
Niveau 1
Messages : 9
Enregistré le : mar. 31 mars 2009 17:32
Status : Hors ligne

[R] Insérer des boutons/liens hypertexte dans un edit

#1

Message par fabff7 »

Bonjour,

J'ai besoin d'afficher des procédures et de pouvoir insérer des boutons ou des liens hypertexte entremêlés avec du texte.

Ex: "Si telle machine est injoignable, lancer la déconnexion automatique: [Bouton]"

Ce sont, en générale, de longues procédures, il me faut donc un affichage avec un ascenseur (c'est pour ça j'ai pensé au Edit).
Mais il me faut également des boutons ou des liens hypertexte dans le texte de la procédure pour ajouter des raccourcis et des automatisations.

Quelqu'un connait-il un moyen ?
Y-a-t'il une option du edit que je n'aurais pas vu?
Modifié en dernier par fabff7 le ven. 10 avr. 2009 17:41, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11816
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Insérer des boutons/liens hypertexte dans un edit

#2

Message par Tlem »

A première vue, je dirais qu'il vous faut faire une page HTML incorporée à votre GUI.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Insérer des boutons/liens hypertexte dans un edit

#3

Message par sylvanie »

Inspiré du principe de balise HTML, sans utilisé d'udf particulière, on peut imaginer une listboxe, avec un tag entourrant l'action. Du coups en cas de click, on lit la ligne, on localise l'action grace aux balises, puis on lance l'action grâce à la fonction call :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <ListBoxConstants.au3>
#include <WindowsConstants.au3>
#Include <String.au3>


#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 633, 447, 193, 125)
$List1 = GUICtrlCreateList("", 160, 24, 273, 370)
GUICtrlSetData(-1,"machine 1 <DOACTION>action_autoit1</DOACTION>")
GUICtrlSetData(-1,"machine 2 <DOACTION>action_autoit2</DOACTION>")
GUICtrlSetData(-1,"machine 3 <DOACTION>action_autoit3</DOACTION>")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case($List1)
            Trig_function(GUICtrlRead($List1))
    EndSwitch
WEnd


Func Trig_function($line)
    local $Selected=""
    
    $Selected=_StringBetween($line,"<DOACTION>","</DOACTION>")
    If @error = -1 Then Return
    $Selected=$Selected[0]
    $rep=MsgBox(4,"Launch application","Launch "&$Selected&" ?")
    If $rep = 7 Then Return ;NO
    Call($Selected)
    
EndFunc

Func action_autoit1()
    MsgBox(0,"test1","test1")
EndFunc

Func action_autoit2()
    MsgBox(0,"test2","test2")
EndFunc

Func action_autoit3()
    MsgBox(0,"test3","test3")
EndFunc
 
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
fabff7
Niveau 1
Niveau 1
Messages : 9
Enregistré le : mar. 31 mars 2009 17:32
Status : Hors ligne

Re: [..] Insérer des boutons/liens hypertexte dans un edit

#4

Message par fabff7 »

C'est une bonne idée mais la listview ne s'accorde pas tellement avec l'affichage d'une procédure textuelle qui nécessite des paragraphes et, donc, des sauts de lignes.

L'insertion d'une page HTML dans le GUI me semble être une très bonne idée.
Seulement, pourrais-je, ensuite, insérer des boutons dans la page HTML qui appellent des fonctions du GUI?
Si oui, c'est la solution à mon problème.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Insérer des boutons/liens hypertexte dans un edit

#5

Message par sylvanie »

Bonsoir
Pour ma part je sais lancer un exe depuis du html.

Le soucis est donc de lancer un exe externe puis de le faire dialoguer avec
le premier qui gère la gui.
Pour ceci nous avons 2 moyens :
- Le dialogue par fichiers tamporaires
- Le partage directe de variable par pointeur

Du fait qu'il y a une problématique d'accès concurent (du genre, on clique sur 2
actions l'une après l'autre, aolors que la première action n'est pas terminée)
il vaut mieux oper pour la deuxième méthode.

pour faire ceci, il faut :
1 script gérant la gui incluant l'objet html, exe '1'
1 fichier index.html lançant l'éxécuitable '2' via des liens href en donnant le nom de l'action en argument
1 script '2' dit de notification qui va renvoyer les info vers le script gérant la gui (premier point)

Mais alors comment faire pour faire dialoguer 2 exe dans un même espace d'adresage ?
Et bien en prenant l'udf memory2.au3 exposée ici :
http://www.autoitscript.fr/forum/viewto ... f=11&t=846

Cependant pour réaliser ceci,il faut indiquer à l'exe notifieur '2' ,le nom de l'action àeffectuer
le PID de l'exe GUI '1' , 1 pointeur vers un buffeur qui contiendra l'action cliquée
afin de faire un traitement dans '1', 1 pointeur vers un int qui indiquera si
le service de traitement de '1' est libre ou en train de travailler

Le soucis est que le pid, comme les pointeurs ne sont pas déterminable à l'avance.
Donc il faut que le script '1' se serve du fichier indexhtml de base pour en faire une
copie enrichie avec ces infos lors de sont éxécution.

Ainsi l'exe '2' va pouvoir écrire dans les pointeurs de '1' le nom de l'action
à effectuer et basculer l'état de libre à occuper pour créer une sémaphorisation.

Le script '1' tournant en boucle infini, et testant en permanence la valeur du pointeur
va se retrouver d'un coups avec une action à faire, et va la traiter.
En fin de traitement, le script '1' rebascule son état à libre, pour les autres instances du
scripts '2'

Donc pour faire plus simple :
1) on modifie index.html pour créer autant de liens vers le script 2, appeler
ici doaction suivit du nom de la commande à effectuer
2) on compile doaction.au3 en doaction.exe, dans le même rep
3) on lance main_gui.au3, attention, au premier click on a l'avertissement classique de l'activeX
de lancement d'appli qui s'affiche, après il n'intervient plus.

Note importante (pour finir et bravo à ceux qui sont arrivé là) : les actions ici sont appelées
dans le script '1' via call(nom_fonction). Faites en sorte de lancer un Run idépendant, et non un déroulement
de code, car le déroulement bloque la GUI. Grâce aux Run d'exe indépendants,
on arrive à un service ressemblant à du multitâche, plus éfficace dans de nombreux cas.

Bon courrage


index.html :
► Afficher le texte
doaction.au3 :
► Afficher le texte
main_gui.au3 :
► Afficher le texte
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
fabff7
Niveau 1
Niveau 1
Messages : 9
Enregistré le : mar. 31 mars 2009 17:32
Status : Hors ligne

Re: [R] Insérer des boutons/liens hypertexte dans un edit

#6

Message par fabff7 »

Wahou, tout ça m'as l'air assez lourd tout de même.
Merci d'avoir cherché une solution aussi approfondie.
Je pense qu'une solution plus simple à mettre en oeuvre me permettra de faire ce dont j'ai besoin.
Je n'ai pas tellement besoin de pouvoir faire dialoguer les variables entre les GUI qui sont appelés par le html et le GUI principal.

Si jamais j'en trouve le besoin, je passerai par votre solution de variable à travers la RAM.
Merci de vous être penché sur mon cas!
Je prends note de vos conseils.
Répondre