Imposta lo stato attivo sulla casella di modifica del testoCiao
Cerco di controllare una voce in un database con uno scanner di codici a barre.
Inserirà il numero e darà un invio alla fine che attiverà lo script della "casella di modifica del testo".
Ciò che non funziona è reimpostare lo stato attivo sulla casella per inserire il numero successivo.
Names Default To Here( 1 );
dt = current data table();
try(win1<<CLOSE window=""></CLOSE>
Re: Imposta il focus sulla casella di modifica del testola mia soluzione attuale con l'aiuto di https://community.jmp.com/t5/Discussions/JSL-to-input-an-Enter-keystroke/td-p/5872
È fondamentalmente il seguente: posiziona una casella del mouse attorno alla casella di modifica del testo. Imposta il focus sulla casella del mouse e premi TAB per impostare il focus sulla casella di modifica del testo.
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>
Modifica: il bb1 = Scatola dei bottoni ( "Controllo" , reset_focus ; ) sembra interferire con lo stato attivo (lo riporta a se stesso e quindi all'elemento successivo).
Re: Imposta il focus sulla casella di modifica del testoGrazie per la tua risposta e scusa per la richiesta poco chiara.
Voglio ripristinare il focus su un TextEditBox.
Non so se esiste una funzione "nascosta", non sono riuscito a trovare una soluzione nelle pagine della community, quindi una soluzione sarebbe una soluzione.
Voce nella lista dei desideri completata --> https://community.jmp.com/t5/JMP-Wish-List/Set-next-focus-on-TextEditBox/idi-p/214995#M633Re: Imposta il focus sulla casella di modifica del testoSe sai dell'omissione, qual è il punto?
Vuoi una soluzione? Se è così, allora qualcuno potrebbe essere in grado di aiutarti in questa discussione.
Vuoi nuove funzionalità? In tal caso, vai alla sezione Lista dei desideri della community di JMP. Controlla se qualcuno ha già richiesto qualcosa di simile a questa esigenza. In caso contrario, aggiungilo per considerazione.
Non è chiaro cosa vuoi da questa discussione.
Re: Imposta il focus sulla casella di modifica del testoTHX, lo so, ma quella funzionalità è ancora mancante.
Posso usare MouseBox e la funzione SetKey per ridurlo almeno a premere TAB una volta per concentrarmi su TextEditBox.
Names Default To Here( 1 );
dt = current data table();
try(win1<<CLOSE window=""></CLOSE>
Sarebbe bello impostare il parametro di TextEditBox(...,...,...,oggetto successivo quando si preme TAB o INVIO).
Nel mio caso:
pnr = text edit box("example",set width(160),set nlines(1),<<SETSCRIPT></SETSCRIPT>
Re: Imposta il focus sulla casella di modifica del testoSembra che i messaggi << Set Focus e << Restore Focus After Click non facciano parte del protocollo per una casella di modifica del testo.
Puoi verificare tu stesso selezionando Guida > Indice di scripting. Modificare l'elenco in Visualizza casella e quindi selezionare l'elemento TextEditBox. Non troverai questo messaggio nel secondo elenco che mostra l'intero protocollo.
È possibile cercare questo messaggio, ad esempio, immettere "cerca" nella casella del filtro. Non troverai un altro oggetto con questo messaggio.
Puoi anche chiedere direttamente a un oggetto display box il suo protocollo:
Show Properties( Text Edit Box( "test" ) );