Control of Text Fields.

Alex Tweedly alex at tweedly.net
Sun Nov 7 20:51:33 EST 2021


On 07/11/2021 11:36, Richmond via use-livecode wrote:
> No hard feelings.
>
> See what I have got up to over on the Forums, and
>
> https://forums.livecode.com/viewtopic.php?f=7&t=36444
>
> PLEASE, feel free to pull the thing to bits.
>
I don't want to "pull the thing to bits". Like you, I enjoy seeing 
"competing" multitude of ways to do things - I can learn from them all.

But I did have a quick look, so I'll just point out a small number of 
nitpicks.

1. the whole 'locktext' thing is weird, and causes various anomalies.
When I first open the stack, and click in the field, I can type digits 
and have them appear in the field, as you'd expect. But once I've 
clicked on an 'arrow-emulator' the field becomes locked and one can no 
longer type in characters.  Clicking *outside* the field will then free 
it up again, so typing becomes possible.

2. disappearing iBeam.

If I position the ibeam in the middle of the text in the field, and use 
one of the arrow emulator buttons, the iBeam  moves properly - but then 
disappears (perhaps when the 'locktext' is set true).

3. incorrect entry position.

As in 2 above, although the ibeam was last seen in the correct place 
after using the ">" button to move it to the right, if I then click on a 
digit button, that digit appears at the end of the field, not where it 
should have gone

4. Incorrect arrow key emulation (same problem as I mentioned in the 
previous email).

If you select a chunk of text in the field, then use the left-arrow 
emulator button, the ibeam is positioned before the *last* character of 
the selection, instead of before the first.


There were a couple of others, omitted for brevity. I've created a 
modified version your stack with my suggested handlers, and will attempt 
to upload it to the forum later.

Then there was another issue which I haven't tackled - it would mean 
changing lots of very similar tiny scripts, and is too tedious.

5. character input should replace any selection

Just like in a regular field, if there is an active selection, typing a 
character (or clicking a digit button, should *replace* it, not simply 
add the newly typed (or clicked) digit.


I've taken my earlier handler suggestion, and broken the bits of code 
out into individual button scripts, which removes the apparent 
complexity that you disliked earlier. As far as I know, no problems have 
yet been found with that approach. As one example, the code for 
left-arrow emulator would be

>  on mouseUp
>    focus on field "fWORK"
>    put word 2 of the selectedchunk into tFirst
>    put word 4 of the selectedchunk into tLast
>    select before char (min(tFirst, tLast)) of fld "fWORK"
> end mouseUp
I've uploaded this revised version on the forum thread.

Best wishes,  Alex






More information about the use-livecode mailing list