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?
[R] Insérer des boutons/liens hypertexte dans un edit
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Insérer des boutons/liens hypertexte dans un edit
Modifié en dernier par fabff7 le ven. 10 avr. 2009 17:41, modifié 1 fois.
- Tlem
- 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
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é".
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é".
- sylvanie
- 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
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.
Re: [..] Insérer des boutons/liens hypertexte dans un edit
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.
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.
- sylvanie
- 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
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 :
doaction.au3 :
main_gui.au3 :
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
► Afficher le texte
► Afficher le texte
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Re: [R] Insérer des boutons/liens hypertexte dans un edit
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.
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.

