Définir le focus sur la zone d'édition de texteBonjour
J'essaie de rechercher une entrée dans une base de données avec un lecteur de code-barres.
Il entrera le numéro et donnera une entrée à la fin qui déclenchera le script de la "boîte d'édition de texte".
Ce qui ne fonctionne pas, c'est de réinitialiser le focus sur la case pour entrer le numéro suivant.
Names Default To Here( 1 );
dt = current data table();
try(win1<<CLOSE window=""></CLOSE>
Re : Définir le focus sur la zone d'édition de textema solution de contournement actuelle avec l'aide de https://community.jmp.com/t5/Discussions/JSL-to-input-an-Enter-keystroke/td-p/5872
C'est essentiellement le suivant : placez une boîte de souris autour de la zone d'édition de texte. Définissez le focus sur la zone de la souris et appuyez sur TAB pour définir le focus sur la zone d'édition de texte.
Names Default To Here( 1 );
clear log();
if(1==1,
VK_TAB = Hex to Number( "00000009" ); //&H9
KEYEVENTF_EXTENDEDKEY = Hex to Number( "00000001" ); //&H1
KEYEVENTTF_KEYDOWN = 0;
KEYEVENTF_KEYUP = Hex to Number( "00000002" ); //&H2
kernel32 = Load Dll( "kernel32" );
kernel32 << DeclareFunction( "Sleep", Convention( STDCALL ), Alias( "Sleep" ),
Arg( Int32, "dwMilliseconds" ),Returns( Void ) );
user32 = Load Dll( "User32" );
user32 << DeclareFunction( "FindWindowA", Convention( STDCALL ), Alias( "FindWindow2" ),
Arg( UInt32, input, "lpClassName" ),Arg( AnsiString( 200 ), input, "lpCaption" ),Returns( UIntPtr ) );
user32 << DeclareFunction( "SetForegroundWindow", Convention( STDCALL ), Alias( "SetForegroundWindow" ),
Arg( UIntPtr, "hWnd" ),Returns( UInt32 ));
user32 << DeclareFunction( "keybd_event", Convention( STDCALL ), Alias( "keybd_event" ),
Arg( UInt8, "bVk" ),Arg( UInt8, "bScan" ),Arg( UInt32, "dwFlags" ),Arg( UIntPtr, "dwExtraInfo" ),Returns( Void ));
user32 << DeclareFunction( "GetKeyState", Convention( STDCALL ), Alias( "GetKeyState" ),
Arg( Int32, "nVirtKey" ),Returns( Int32 ) );
shell32 = Load Dll( "shell32" );
shell32 << DeclareFunction( "ShellExecuteA", Convention( STDCALL ), Alias( "ShellExecute" ),
Arg( UIntPtr, input, "hWnd" ),Arg( AnsiString( 20 ), "lpOperation" ),Arg( AnsiString( 256 ), "lpFile" ),
Arg( AnsiString( 256 ), "lpParameters" ), /* Arg( UInt32, "lpParameters" ), */Arg( UInt32, "lpDirectory" ),
Arg( UInt32, "nShowCmd" ),Returns( UInt32 ));
key = function( { l_key },
user32 << keybd_event( l_key, 0, 0, 0 ); // press key
user32 << keybd_event( l_key, 0, KEYEVENTF_KEYUP, 0 ); // release key
);
); // Setup the win key command code from the JMP community: https://community.jmp.com/t5/Discussions/JSL-to-input-an-Enter-keystroke/td-p/5872
reset_focus = expr(
wait(0.1);
mb<<SETFOCUS></SETFOCUS>
Édit: Le bb1 = Boîte à boutons ( "Vérifier" , reset_focus ; ) semble gâcher le focus (le remet sur lui-même puis sur l'élément suivant).
Re : Mettre le focus sur la zone d'édition de texteJe vous remercie pour votre réponse et désolé pour la demande peu claire.
Je veux réinitialiser le focus sur un TextEditBox.
Je ne sais pas s'il existe une fonction "cachée", je n'ai pas trouvé de solution sur les pages de la communauté, donc une solution de contournement serait une solution.
Entrée de la liste de souhaits terminée --> https://community.jmp.com/t5/JMP-Wish-List/Set-next-focus-on-TextEditBox/idi-p/214995#M633Re : Mettre le focus sur la zone d'édition de texteSi vous êtes au courant de l'omission, alors quel est votre point de vue ?
Voulez-vous une solution de contournement ? Si oui, alors quelqu'un pourra peut-être vous aider dans cette discussion.
Vous souhaitez de nouvelles fonctionnalités ? Si tel est le cas, accédez à la section Liste de souhaits de la communauté JMP. Vérifiez si quelqu'un a déjà demandé quelque chose comme ce besoin. Si ce n'est pas le cas, veuillez l'ajouter pour examen.
Ce que vous attendez de cette discussion n'est pas clair.
Re : Mettre le focus sur la zone d'édition de texteTHX, je sais, mais cette fonctionnalité manque toujours.
Je peux utiliser MouseBox et la fonction SetKey pour au moins le réduire pour appuyer une fois sur TAB pour me concentrer sur TextEditBox.
Names Default To Here( 1 );
dt = current data table();
try(win1<<CLOSE window=""></CLOSE>
Ce serait bien de définir le paramètre de TextEditBox(...,...,..., objet suivant lorsque vous appuyez sur TAB ou ENTER).
Dans mon cas:
pnr = text edit box("example",set width(160),set nlines(1),<<SETSCRIPT></SETSCRIPT>
Re : Mettre le focus sur la zone d'édition de texteIl semble que les messages << Set Focus et << Restore Focus After Click ne font pas partie du protocole d'une zone d'édition de texte.
Vous pouvez vérifier par vous-même en sélectionnant Aide > Index des scripts. Remplacez la liste par Display Box, puis sélectionnez l'élément TextEditBox. Vous ne trouverez pas ce message dans la deuxième liste qui affiche l'intégralité du protocole.
Vous pouvez rechercher ce message, par exemple, saisir « rechercher » dans la zone de filtre. Vous ne trouverez pas d'autre objet avec ce message.
Vous pouvez aussi demander directement à un objet display box son protocole :
Show Properties( Text Edit Box( "test" ) );