Control of Text Fields.

Alex Tweedly alex at tweedly.net
Fri Nov 5 17:08:11 EDT 2021


On 05/11/2021 20:18, Roger Guay via use-livecode wrote:
> Alex, I did not see that and it is not in my mailbox. Would you please send it again?
>
> Thanks,
> Roger

Here it is again, below.

Or download the sample stack at 
https://tweedly.org/downloads/calcbuttons.livecode

  - not as pretty as Richmond's, doesn't even have all the digits ...)

Previously I said:

Here's an expanded snippet. The input is in a field called "fInput", the 
buttons are all in a group, and handled by the group script (saves 
having many tiny almost identical scripts).

The script  uses the name of the target - but since I would never, ever 
have a control named as a number, the digit buttons use their label 
instead.

If the user cannot select a chunk of text then some of this could be 
shortened.


> on mouseup
>    if the target = me then
>       -- click in the background in the group
>       exit mouseup
>    end if
>    local tChunk
>    focus on fld "fInput"
>    put the selectedchunk into tChunk
>    if the label of the target is a number then
>       put the label of the target into the selectedchunk
>       exit mouseUp
>    end if
>    local tFirst, tLast
>    put word 2 of tChunk into tFirst
>    put word 4 of tChunk into tLast
>    switch the short name of the target
>       case "go left"
>          select before char (min(tFirst, tLast)) of fld "fInput"
>          break
>       case  "go right"
>          select after char (max(tFirst, tLast)) of fld "fInput"
>          break
>       case "Del"
>          -- remove the selection, or the char *after* the ibeam
>          if tFirst <= tLast then
>             put empty into char tFirst to tLast of fld "fInput"
>          else
>             put empty into char (tFirst) of fld "fInput"
>          end if
>          break
>       case "BS"
>          -- remove the selection, or the char *before* the ibeam
>          if tFirst <= tLast then
>             put empty into char tFirst to tLast of fld "fInput"
>          else
>             put empty into char (tFirst-1) of fld "fInput"
>          end if
>          break
>          -- all the other keys !!
>       default
>    end switch
> end mouseup

Alex.




More information about the use-livecode mailing list