Establecer el foco en el cuadro de edición de textoHola
Trato de buscar una entrada en una base de datos con un escáner de código de barras.
Ingresará el número y le dará un enter al final que activa el script del "cuadro de edición de texto".
Lo que no funciona es restablecer el enfoque nuevamente en el cuadro para ingresar el siguiente número.
Names Default To Here( 1 );
dt = current data table();
try(win1<<CLOSE window=""></CLOSE>
Re: Poner el foco en el cuadro de edición de textomi solución actual con la ayuda de https://community.jmp.com/t5/Discussions/JSL-to-input-an-Enter-keystroke/td-p/5872
Es básicamente lo siguiente: coloque un cuadro de mouse alrededor del cuadro de edición de texto. Establezca el foco en el cuadro del mouse y presione TAB para establecer el foco en el cuadro de edición de texto.
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>
Editar: El bb1 = Caja de botones ( "Controlar" , restablecer_enfoque ; ) parece interferir con el enfoque (lo vuelve a colocar en sí mismo y luego al siguiente elemento).
Re: Poner el foco en el cuadro de edición de textoGracias por su respuesta y perdón por la solicitud poco clara.
Quiero restablecer el foco en un TextEditBox.
No sé si hay una función "oculta", no pude encontrar una solución en las páginas de la comunidad, por lo que una solución alternativa sería una solución.
Entrada en la lista de deseos hecha --> https://community.jmp.com/t5/JMP-Wish-List/Set-next-focus-on-TextEditBox/idi-p/214995#M633Re: Poner el foco en el cuadro de edición de textoSi sabe acerca de la omisión, ¿cuál es su punto?
¿Quieres una solución alternativa? Si es así, entonces alguien podría ayudarlo en esta discusión.
¿Quieres una nueva funcionalidad? Si es así, vaya a la parte Lista de deseos de la Comunidad JMP. Compruebe si alguien ya ha solicitado algo como esta necesidad. Si no, por favor agréguelo para su consideración.
No está claro lo que quiere de esta discusión.
Re: Poner el foco en el cuadro de edición de textoTHX, lo sé, pero aún falta esa funcionalidad.
Puedo usar MouseBox y la función SetKey para al menos reducirlo para presionar TAB una vez para enfocarme en TextEditBox.
Names Default To Here( 1 );
dt = current data table();
try(win1<<CLOSE window=""></CLOSE>
Sería bueno configurar el parámetro de TextEditBox (...,...,..., siguiente objeto cuando presione TAB o ENTER).
En mi caso:
pnr = text edit box("example",set width(160),set nlines(1),<<SETSCRIPT></SETSCRIPT>
Re: Poner el foco en el cuadro de edición de textoParece que los mensajes << Establecer foco y << Restaurar foco después de hacer clic no son parte del protocolo para un cuadro de edición de texto.
Puede comprobarlo usted mismo seleccionando Ayuda > Índice de secuencias de comandos. Cambie la lista a Display Box y luego seleccione el elemento TextEditBox. No encontrará este mensaje en la segunda lista que muestra todo el protocolo.
Puede buscar este mensaje, por ejemplo, ingrese 'buscar' en el cuadro de filtro. No encontrará otro objeto con este mensaje.
También puede solicitar un objeto de cuadro de visualización directamente por su protocolo:
Show Properties( Text Edit Box( "test" ) );