Hey Hey!
I’m in the process of making the issue material app “scanner” friendly. Is there a way to change which control gets focus on pressing TAB? I want to ignore tab going to the assembly field after the job # is entered.
Hey Hey!
I’m in the process of making the issue material app “scanner” friendly. Is there a way to change which control gets focus on pressing TAB? I want to ignore tab going to the assembly field after the job # is entered.
I don’t think there is a way to set the tab stops like in Classic yet. I’ve had the same ask from our users.
There’s an idea in the system for that. But it may not go anywhere as dev comments indicate it was set-up this was by design.
You CAN use events to “set-focus”… but that would be a lot of work.
I actually set up a custom layer for Issuing Materials via scanner. This including creating some custom textboxes to receive the data (in a tab friendly manner), without interfering with base functionality.
Details can be found here, if its helpful:
This is awesome, David! Exactly what I was looking for. I was hoping to use the base layer so I don’t have to wire up the transaction code. Thanks!
Yeah, the problem was the event. You scan in the job, but the system has to load it before you can scan in your assembly… which has to load before you can scan your material.
So… Its not just field placement, but allowing for data loading between each entry.
Architectural below.
There’s been a movement for a different UI paradigm besides CRUD (Create, Read, Update, Delete). It’s called Task Oriented UI. Instead of working on an entity, the UI helps to perform a task. This would mean we would have an app that would be barcode friendly and not just wedging the input into a CRUD screen. There are many advantages to this approach. You can read all about it if you want to.
Haha… interesting analogy in that article:
You can’t make a dog bark by cutting open its chest and squeezing the lungs.
In theory, i agree with the Task Based Form concept, however, I disagree that this is what most users want.
They’re good for mindless data entry, which is perfect for some roles. But for the most part, if I delivered a “task based form”, I would immediately and repeatedly get plagued with suggestions and requests to add to it. “It would be great if I could also see this.” “I would love it if i could also do ‘that’ on this screen.”
Again, I agree it’s best to keep things clean and concise, but I think users tend to think they need instant access to more than they really need. Unfortunately it’s our job as admins to either placate or deny.
David, what bindings did you use for your barcode scan fields? The interesting thing with my solution is we need to scan the part number, not the mtl seq. I can modify the base combo box to accept the part num and use the mtl seq as a value, but there is a bug since 2023 regarding the combo drop downs and tabbing.
Yeah, I fought this as well… trying to scan values directly into the comboboxes had issues. That’s one of the reasons I just used new textboxes at the top of the form. This gave me the tab-stop order I wanted and it was easy to dump values. Their only purpose is to hold the initial scan value and then I pushed the values into the respective dataviews via onblur events with row-updates. Basically circumventing the comboboxes all together.
So my actual scan fields were bound to:
TransView.Job
TransView.Assembly
TransView.Material
TransView.Qty
TransView.Bin
TransView.Lot
Then, I had (4) separate events which took scanned values and pushed them into their respective dataviews
User would scan (1) barcode into the top textbox, that barcode was a combination of Job/Asmbl/MatlSeq and included tabs in between the values. So that initial scan actually populated (3) textboxes. I then had an onblur event which pushed the values from the textboxes into:
User would then scan a qty barcode into the Qty custom textbox and the onblur Event (2) pushed the value :
User scanned into the Bin textbox, Event (3) pushed value to:
User scanned into the Lot textbox, Event (4) pushed value to :