Set the backgroundcolor of all lines a field to null
J. Landman Gay
jacque at hyperactivesw.com
Thu Aug 23 14:08:13 EDT 2018
If you just want to clear the whole field (Richard suggested something
similar):
set the backcolor of char 1 to - 1 of fld x to empty
After that you can hilite other lines if needed.
--
Jacqueline Landman Gay | jacque at hyperactivesw.com
HyperActive Software | http://www.hyperactivesw.com
On August 23, 2018 9:32:14 AM Sannyasin Brahmanathaswami via use-livecode
<use-livecode at lists.runrev.com> wrote:
> Aloha Brian and Richard,
>
> @ Brian "put styledText...into tTextA[snip]" looks excellent. It does it
> all on ram!
>
> @ Richard
>
> Again, we all appreciate the time you take to help us "understand the
> architecture"
>
> The list is only 2000 lines, on into a field from a sqlLite list of audio
> file/Title.
>
> That all happens "quickly" on mobile. But we all know that the
>
> repeat with x=1 to (the number lines of fld "audioList")
>
> on a field itself is slow, but on desktop I usual do in RAM first (per
> Brians solution)
>
> But on mobile it produce a 800 second "wait" with the user clicked the
> list, to "unhilite" a previous title/selection
>
> Also with 9.0.1.RC2 I was getting a new message from Android (did not
> happen on earlier versions) Android is attempting fill in the field, and
> when I click I get an unusual message from the OS.
>
> App is not responding
> Do you want to
>
> Close the app [OR]
> Wait
>
> This is new to 9.0.1 RC 2 for this screen/UX
>
> So I had to admit that my code is admittedly not well optimized. I began
> look around. And saw my old
>
> repeat with x=1 to (the number lines of fld "audioList")
>
> Thinking that was causing the app to "not respond" while it was the setting
> the color of line of everyline. Aha I thought, "That's is: I am iterate
> through each line in the field itself!"
>
> then I posted my question to the list...
>
> Meanwhile I created a local variable and now store the Current hilitedline.
> No more "going through the whole field"
>
> And *still* I get the msg
>
> App is not responding
> Do you want to
>
> Close the app [OR]
> Wait
>
> but now I can click "Wait" the dialog disappeared at the change of color
> works as expect and the player started on change of Audio right was. So
> where it mysterious dialog is coming from?
>
> ===== For the "architecture" discussion:
>
> Having to generate "setters and getters" of local variable is tedious, and
> sometimes would nice have a global method. I keep thinking my attempt to
> use "chains" of nested behavior in this case (had not done it before) look
> interesting, but sometimes I think one long behavior is better. Like the
> old "one stack script for everything" approach.
>
> As it stands, if you do not want to use global (who does!), for one
> "module" / stack with 3-4 behaviors, that need one value (temporarily)
> there is no way to do it. The code become "tangled" because all 4 behaviors
> need to know about
>
> local sSelectNum
>
> and you start using "setters and getters" all over the place
>
>
> command setJournalFlag pFlag
>
> put pFlag into sJournalFlag
>
> end setJournalFlag
>
> function getJournalFlag
>
> return sJournalFlag
>
> end getJournalFlag
>
> Then if this is "child" behavior, in parent you have to issue a
> "getJournalFlag()" every time you need that value, and debugging gets
> "crazy" -- better to have in all in one behavior.
>
> ========
>
> Now I'm back on "mysterious" Android dialog, I have no clue/way to debug that?
>
>
>
> On 8/22/18 8:15 PM, Richard Gaskin via use-livecode wrote:
>
> Sannyasin Brahmanathaswami wrote:
>
> > I have some big lists in mobile,
>
> How big is "big"? 100 lines? 1,000? 1,000,000?
>
>
> > I sent the bkgndColor of certain
> > lines.
> >
> > Then I want clear that,
> >
> > How do we do this "for each line x"
> > which does not return the number of the line, but value
> >
> > command setAudioListColors pLineNum,pColor # pass "4,"0,0,0"
> > #slow!
> > repeat with x=1 to (the number lines of fld "audioList")
> > set the backgroundcolor of line pLineNum of fld "audioList"
> to pColor
> > end repeat
> > repeat for each line x in fld "audioList"
> > # need to get a line number and not its value
> > set the backgroundcolor of line pLineNum of fld "audioList" to pColor
> > end repeat
> > end setAudioListColors
>
>
> Your command takes a line number and a color, and applies that color to
> that one line, yes? If so, why loop at all?
>
> As written, the code applies the color to the same line over and over
> for the number of lines in the field.
>
> Maybe pLineNum could contain a list of line numbers?
>
> If so, iterate through it rather than through the field, since chances
> are you're only setting the color of a subset of all lines in the field.
> Locking the screen first will speed that up even more.
>
> But faster still will likely be to follow Brian's guidance on
> styledText. With that you probably don't even want to lock the field,
> since all the changes are done in a variable outside the field, and the
> variable is set back into the field only once at the end.
>
> But once we understand what's needed, the speed difference may not
> matter much. Or it might. It depends on how big "big" is.
>
> If you want to clear everything at once:
>
> set the backgroundColor of line 1 to -1 of fld "audioList" to empty
>
> All this is just guessing, though. I'm not really sure what this
> handler should do.
>
>
> --
> Richard Gaskin
> Fourth World Systems
> Software Design and Development for the Desktop, Mobile, and the Web
>
>
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
More information about the use-livecode
mailing list