Pomme K

Tentative pas terrible pour faire comme le raccourci…
Une fois créée un méthode (vide) dont le nom est “cmdK”, ça fonctionne tant bien que mal en attendant mieux avec des paramètres tels que :
<code 4D>
$error_t:=Dev_openWithCmdK ("[maTable]")
$error_t:=Dev_openWithCmdeK (“TABLEAU ENTIER LONG”)
$error_t:=Dev_openWithCmdK ("[maTable];“saisie”")
$error_t:=Dev_openWithCmdK ("[maTable]monChamp")
</code 4D>

Comme dit en commentaire, je n’ai pas trouvé comment refermer la méthode “cmdK” :frowning:

<code 4D>
//Dev_openWithCmdK (path_t) -> txt

C_TEXTE($0)
C_TEXTE($1)
C_TEXTE($error_t)

$error_t:=""
$chemin_t:=$1
$pommeK_t:=“cmdK” //tricky method we’ll use to paste and hit cmd+K

MÉTHODE OUVRIR CHEMIN($pommeK_t;*)
$timeOut_l:=Nombre de ticks+120
$win_l:=0
$winTitle_t:="@"+$pommeK_t
Repeter
$sortir_b:=(Nombre de ticks>$timeOut_l) | (Titre fenêtre(Fenêtre premier plan)=$winTitle_t)
Jusque ($sortir_b)

Si (Titre fenêtre(Fenêtre premier plan)#$winTitle_t)
$error_t:=“missed”
Sinon
$win_l:=Fenêtre premier plan
$pss_l:=Process de la fenêtre($win_l)
$temp_l:=20
FIXER TEXTE DANS CONTENEUR($chemin_t) //path for cmde+K
GÉNÉRER FRAPPE CLAVIER(Code de caractère(“a”);Masque touche commande) //select all
ENDORMIR PROCESS($pss_l;$temp_l)
GÉNÉRER FRAPPE CLAVIER(Code de caractère(“v”);Masque touche commande) //paste path
ENDORMIR PROCESS($pss_l;$temp_l)
GÉNÉRER FRAPPE CLAVIER(Code de caractère(“a”);Masque touche commande) //select all
ENDORMIR PROCESS($pss_l;$temp_l)
GÉNÉRER FRAPPE CLAVIER(Code de caractère(“k”);Masque touche commande) //cmde+K
//attempts to set the tricky method at frontmost missed :frowning:
Fin de si
</code 4D>

amélioré et appliqué à un recyclage de http://forums.4d.com/Post/FR/24282590/1/24282591#24282591cet exemple>
http://forums.4d.com/4DBB_Main/x_User/4467/files/24362465.zip
on frôle l’utilisable :mrgreen:

PS : 4D v16

Some improvement:
http://forums.4d.com/4DBB_Main/x_User/4467/files/24440271.zip
merci Patrick ! :smiley:

PS, for english readers

From a selected string in the method editor, the cmd+K shortcut opens a some interesting targets with no 4D commands equivalent. Frustrating. Using a “dummy” method (named cmdK), we can put the target string in that method, open it, select the string, hit cmdK: done.

Just a word of warning. We had something similar to move to a specific line after opening a method. Basically to Ctrl+F, Ctrl+P, Enter. This worked fine in v15 but in v17 the timing seems to be different and we are accidentally pasting code into a method. We removed our workaround logic to avoid a careless programmer not realizing what they have done.

Hi Drew,
I https://forums.4d.com/Post/FR/23656852/1/23656853#23656853see> :wink:
But in the code, you’ll see I use that for forms / table / fields only (the code editor can be opened without that ugly patch) and the steps are “wait for an expected window”; if that window isn’t frontmost in a given timeout, it stops. I just had to increase that timeout when I began to use it in wan 4d client context, nothing else.

PS there’s no paste in method BTW, only a “method set code” in a dedicated method before opening it…

Quand j’ai sous le nez une méthode objet ou formulaire, ça fait 100 ans que ça me fatigue de passer par l’explorateur pour retrouver et ouvrir le formulaire alors que 4D sait le faire (fenêtre de résultat de recherche et de compilation). Une méthode + une macro qui utilise Dev_openWithCmdK pour me reposer :
<code 4D>
//MACRO_openForm
//ouvre le formulaire parent de la méthode objet/formulaire courante
C_TEXT($1)
C_COLLECTION($item_c)
//_
$chemin_t:=$1 //"[tableName].formname.objectName" or “[tableName].formName”
$nmc_t:=Current method name
PROCESS PROPERTIES(Current process;$pssName_t;$status_t;$time_l)
If ($pssName_t=“Macro_call”)
//lanch in new process because the structure process remains frozen
// until the macro called method execution is completed
$pss_l:=New process($nmc_t;0;"$"+$nmc_t;$chemin_t)
Else
$item_c:=Split string($chemin_t;".") //"[tableName].formname.objectName"
If ($item_c.length>0) //méthode objet ou formulaire
$chemin_t:=$item_c[0]+";"+"""+$item_c[1]+"""
Dev_openWithCmdK ($chemin_t)
Else
ALERT(“Not an object or form method “+$chemin_t)
End if
End if
</code 4D>
code à ajouter au fichier de macro :


MACRO_openForm (”<method_name/>”)