Setzen Sie den Fokus auf das TextbearbeitungsfeldHallo
Ich versuche mit einem Barcodescanner nach einem Eintrag in einer Datenbank zu suchen.
Es gibt die Nummer ein und gibt am Ende eine Eingabetaste aus, die das Skript des „Textbearbeitungsfelds“ auslöst.
Was nicht funktioniert, ist, den Fokus wieder auf das Feld zu richten, um die nächste Zahl einzugeben.
Names Default To Here( 1 );
dt = current data table();
try(win1<<CLOSE window=""></CLOSE>
Betreff: Fokus auf Textbearbeitungsfeld setzenmein aktueller Workaround mit Hilfe von https://community.jmp.com/t5/Discussions/JSL-to-input-an-Enter-keystroke/td-p/5872
Im Prinzip geht es wie folgt: Platzieren Sie einen Mausrahmen um das Textbearbeitungsfeld. Setzen Sie den Fokus auf das Mausfeld und drücken Sie die Tabulatortaste, wodurch der Fokus auf das Textbearbeitungsfeld gesetzt wird.
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>
Edit: Der bb1 = Button-Box ( "Überprüfen" , reset_focus ; ) scheint den Fokus zu beeinträchtigen (setzt ihn wieder auf sich selbst und dann auf das nächste Element zurück).
Betreff: Fokus auf Textbearbeitungsfeld setzenVielen Dank für Ihre Antwort und entschuldigen Sie die unklare Anfrage.
Ich möchte den Fokus auf eine TextEditBox zurücksetzen.
Ich weiß nicht, ob es eine „versteckte“ Funktion gibt, ich konnte auf den Community-Seiten keine Lösung finden, daher wäre ein Workaround eine Lösung.
Wunschzetteleintrag erledigt --> https://community.jmp.com/t5/JMP-Wish-List/Set-next-focus-on-TextEditBox/idi-p/214995#M633Betreff: Fokus auf Textbearbeitungsfeld setzenWenn Sie von der Unterlassung wissen, was meinen Sie dann?
Möchten Sie einen Workaround? Wenn ja, dann kann Ihnen vielleicht jemand bei dieser Diskussion weiterhelfen.
Möchten Sie neue Funktionen? Wenn ja, dann gehen Sie zur Wunschliste der JMP-Community. Schauen Sie nach, ob jemand bereits einen solchen Bedarf angefragt hat. Wenn nicht, fügen Sie es bitte zur Prüfung hinzu.
Es ist nicht klar, was Sie von dieser Diskussion erwarten.
Betreff: Fokus auf Textbearbeitungsfeld setzenVielen Dank, ich weiß, aber diese Funktionalität fehlt immer noch.
Ich kann MouseBox und die SetKey-Funktion verwenden, um es zumindest zu reduzieren, einmal TAB zu drücken, um mich auf die TextEditBox zu konzentrieren.
Names Default To Here( 1 );
dt = current data table();
try(win1<<CLOSE window=""></CLOSE>
Es wäre schön, den Parameter TextEditBox(...,...,...,next object when press TAB or ENTER) festzulegen.
In meinem Fall:
pnr = text edit box("example",set width(160),set nlines(1),<<SETSCRIPT></SETSCRIPT>
Betreff: Fokus auf Textbearbeitungsfeld setzenEs scheint, dass die Meldungen << Fokus festlegen und << Fokus nach Klick wiederherstellen nicht Teil des Protokolls für ein Textbearbeitungsfeld sind.
Sie können es selbst überprüfen, indem Sie Hilfe > Skriptindex auswählen. Ändern Sie die Liste in „Anzeigefeld“ und wählen Sie dann das Element „TextEditBox“ aus. Diese Meldung finden Sie nicht in der zweiten Liste, die das gesamte Protokoll zeigt.
Sie können nach dieser Nachricht suchen, indem Sie beispielsweise „Suchen“ in das Filterfeld eingeben. Sie werden mit dieser Nachricht kein weiteres Objekt finden.
Sie können ein Displaybox-Objekt auch direkt nach seinem Protokoll fragen:
Show Properties( Text Edit Box( "test" ) );