[R] Insérer texte prédéfini dans l'edit ayant le focus

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
GMH
Niveau 6
Niveau 6
Messages : 217
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

[R] Insérer texte prédéfini dans l'edit ayant le focus

#1

Message par GMH »

Bonjour,

Par l'appui sur un bouton, je voudrais insérer un texte prédéfini dans l'édit ayant eu le focus dernièrement avant l'appui sur ledit bouton. Lorsque la fonction récupérant le focus est envoyée, elle retourne bien entendu le handle du bouton enfoncé et non celui de l'edit sélectionné précédemment par un clic du bouton gauche de la souris.

Sauriez-vous me guider dans le codage ?

Code : Tout sélectionner

#include <EditConstants.au3>

Opt("GUIOnEventMode", 1)
   Global $maGui = GUICreate("test", 600, 300, -1, -1)
   GuiSetOnEvent(-3, "_Close", $maGui)
   Global $edit1 = GUICtrlCreateEdit("",20,20,500,50)
   Global $edit2 = GUICtrlCreateEdit("",20,90,500,50)
   GUICtrlCreateButton("Insérer", 100, 160, 60, 20)
   GUICtrlSetOnEvent(-1,"_insere")
GUISetState(@SW_SHOW)

While 1
   Sleep(1000)
WEnd

Func _insere()
Local $cControle = ControlGetFocus($maGui)
If $cControle = "Edit1" Then
	GUICtrlSetData($edit1, "Cette ligne est affichée dans Edit1")
ElseIf $cControle = "Edit2" Then
	GUICtrlSetData($edit2, "Cette ligne est affichée dans Edit2")
EndIf

EndFunc

Func _Close()
   Exit
EndFunc

Je vous remercie de votre éclairage.
Modifié en dernier par GMH le mar. 02 mars 2021 19:47, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11658
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Insérer texte prédéfini dans l'edit ayant le focus

#2

Message par Tlem »

Bonjour.
Que je sache, il n'y a pas d'historique sur le focus, donc si vous donnez le focus à une fenêtre, vous perdrez forcément l'info du focus précédent.

Donc AMHA, 2 solutions :
1 - Enregistrer dans votre propre script l'identifiant de chaque fenêtre qui obtient le focus (Si identifiant = identifiant de votre script alors on prends l'identifiant mémorisé précédemment).
2 - Au lieu d'un bouton, faites un raccourcis clavier. ^^
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é".
GMH
Niveau 6
Niveau 6
Messages : 217
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [..] Insérer texte prédéfini dans l'edit ayant le focus

#3

Message par GMH »

Merci à vous,

Votre solution 1 me paraît jouable. Voilà mon oeuvre ... qui n'est pas bonne :

Code : Tout sélectionner

#include <EditConstants.au3>

Opt("GUIOnEventMode", 1)
   Global $cControle
   Global $maGui = GUICreate("test", 600, 300, -1, -1)
   GuiSetOnEvent(-3, "_Close", $maGui)
   Global $edit1 = GUICtrlCreateEdit("",20,20,500,50)
   GUICtrlSetOnEvent(-1,"_focus")
   Global $edit2 = GUICtrlCreateEdit("",20,90,500,50)
   GUICtrlSetOnEvent(-1,"_focus")
   GUICtrlCreateButton("Insérer", 100, 160, 60, 20)
   GUICtrlSetOnEvent(-1,"_insere")
GUISetState(@SW_SHOW)

While 1
   Sleep(1000)
WEnd

Func _focus()
	$cControle = ControlGetFocus($maGui)
	MsgBox(0,"",$cControle)
EndFunc

Func _insere()
	If $cControle = "Edit1" Then
		GUICtrlSetData($edit1, "Cette ligne est affichée dans Edit1")
	ElseIf $cControle = "Edit2" Then
		GUICtrlSetData($edit2, "Cette ligne est affichée dans Edit2")
	EndIf

EndFunc

Func _Close()
   Exit
EndFunc


Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11658
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Insérer texte prédéfini dans l'edit ayant le focus

#4

Message par Tlem »

C'est probablement pas tout a fait ce que vous voudrez au final, mais ceci fait comme demandé :

Code : Tout sélectionner

#include <EditConstants.au3>
Global $LastFocus

Opt("GUIOnEventMode", 1)
   Global $cControle
   Global $maGui = GUICreate("test", 600, 300, -1, -1)
   GuiSetOnEvent(-3, "_Close", $maGui)
   Global $edit1 = GUICtrlCreateEdit("",20,20,500,50)
;   GUICtrlSetOnEvent(-1,"_focus")
   Global $edit2 = GUICtrlCreateEdit("",20,90,500,50)
;   GUICtrlSetOnEvent(-1,"_focus")
   GUICtrlCreateButton("Insérer", 100, 160, 60, 20)
   GUICtrlSetOnEvent(-1,"_insere")
GUISetState(@SW_SHOW)

While 1
	Switch ControlGetFocus($maGui)
		Case "edit1"
			$LastFocus = $edit1

		Case "edit2"
			$LastFocus = $edit2

	EndSwitch

   Sleep(1000)
WEnd

Func _insere()
	GUICtrlSetData($LastFocus, "Cette ligne est affichée dans le dernier edit")
EndFunc

Func _Close()
   Exit
EndFunc
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é".
GMH
Niveau 6
Niveau 6
Messages : 217
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [R] Insérer texte prédéfini dans l'edit ayant le focus

#5

Message par GMH »

Si, c'est exactement ça !
J'ai adapté le code à mon programme réel, j'obtiens exactement ce que je veux.

Un très grand merci à vous.
Répondre