Re: Align baselines of 2 fields
I rethought the alignment of baselines of 2 fields and did not like my previous solution to just move the fields Here is a solution that uses the margins to do the alignment. The two fields should accommodate for the expected textSizes and should be horizontally aligned. There are occasional differences in alignment usually 1 pixel off due to how fonts report their metrics. One could correct this but the only way to do it that I found was to use a snapshot and then adjust accordingly. Anyone interested in that feel free to mail me. Kind regards Bernd --- on mouseUp local tField1, tField2 put the long id of field "field1" into tField1 put the long id of field "field2" into tField2 alignFieldBaselines tField1, tField2 end mouseUp on alignFieldBaselines pField1, pField2 local tDescent1, tDescent2, tRefVLoc local tFormatRect1, tFormatRect2, tDiff1, tDiff2 local tDefaultMargin put 8 into tDefaultMargin lock screen -- make sure the margins are what is expected set the margins of pField1 to tDefaultMargin set the margins of pField2 to tDefaultMargin -- define a reference vertical position for field 1, both fields use it put the bottom of pField1 - (the height of pField1 div 4) into tRefVLoc -- get rect of text put the formattedRect of char 1 of pField1 into tFormatRect1 put the formattedRect of char 1 of pField2 into tFormatRect2 -- find baseline of text put item 4 of measureText(char 1 of pField1, pField1, "bounds") + 1 into tDescent1 put item 4 of measureText(char 1 of pField2, pField2, "bounds") + 1 into tDescent2 -- calculate offset put tRefVLoc - (item 4 of tFormatRect1 - tDescent1) into tDiff1 put tRefVLoc - (item 4 of tFormatRect2 - tDescent2) into tDiff2 -- adjust topMargins to align text set the topMargin of pField1 to tDefaultMargin + tDiff1 set the topMargin of pField2 to tDefaultMargin + tDiff2 unlock screen end alignFieldBaselines --- ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
That would work, but again I am trying to bail if my parameters are out of bounds. Bob S > On Jun 22, 2018, at 11:01 , Niggemann, Bernd via use-livecode > wrote: > > Hi Bob, > > how about: > > > if pOffset is empty then put 0 into pOffset > -- > if pOffset is not strictly an integer then put pOffset div 1 into pOffset -- > <- > -- > catch theError > > > if pOffset is an integer nothing happens, if it is a floating point number > div will turn it into an integer, if it is a string then it will throw an > error. > > Kind regards > Bernd ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
Hi Bob, how about: if pOffset is empty then put 0 into pOffset -- if pOffset is not strictly an integer then put pOffset div 1 into pOffset -- <- -- catch theError if pOffset is an integer nothing happens, if it is a floating point number div will turn it into an integer, if it is a string then it will throw an error. Kind regards Bernd Actually that made me think, someone might try to pass a floating point number, so put pOffset div 1 into pOffset is a better test because it will convert pOffset to an integer. Bob S On Jun 21, 2018, at 14:18 , Bob Sneidar via use-livecode mailto:use-livecode@lists.runrev.com>> wrote: But that won't throw an error in my try catch statement. :-) Bob S On Jun 21, 2018, at 13:23 , J. Landman Gay via use-livecode mailto:use-livecode@lists.runrev.com>> wrote: On 6/21/18 2:58 PM, Bob Sneidar via use-livecode wrote: Also, I check that pOffset is a number by adding 0 to it in a try/catch statement. Or alternately, "if pOffset is a number..." ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
Agreed, it's definitely easier to read, but I had already decided to use a try catch statement with the field names, and then do something with the field names that would only work if they were valid. If either parameter was anything other than the short name of a field or else the long id of a field, it would throw an error. Think of all the things someone might attempt to pass. Button names, arrays, numbers, group names etc. One statement catches it all. Bob S > On Jun 21, 2018, at 14:46 , Ralph DiMola via use-livecode > wrote: > > Option B. I find it easier to see what's going on: > > If pOffset is a number then > put round(pOffset) into pOffset > Else > return "Invalid parameter passed." > End if > > Ralph DiMola ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
RE: Align baselines of 2 fields
Option B. I find it easier to see what's going on: If pOffset is a number then put round(pOffset) into pOffset Else return "Invalid parameter passed." End if Ralph DiMola IT Director Evergreen Information Services rdim...@evergreeninfo.net -Original Message- From: use-livecode [mailto:use-livecode-boun...@lists.runrev.com] On Behalf Of Bob Sneidar via use-livecode Sent: Thursday, June 21, 2018 5:24 PM To: How to use LiveCode Cc: Bob Sneidar Subject: Re: Align baselines of 2 fields Actually that made me think, someone might try to pass a floating point number, so put pOffset div 1 into pOffset is a better test because it will convert pOffset to an integer. Bob S > On Jun 21, 2018, at 14:18 , Bob Sneidar via use-livecode wrote: > > But that won't throw an error in my try catch statement. :-) > > Bob S > > >> On Jun 21, 2018, at 13:23 , J. Landman Gay via use-livecode wrote: >> >> On 6/21/18 2:58 PM, Bob Sneidar via use-livecode wrote: >>> Also, I check that pOffset is a number by adding 0 to it in a try/catch statement. >> >> Or alternately, "if pOffset is a number..." ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
But that won't throw an error in my try catch statement. :-) Bob S > On Jun 21, 2018, at 13:23 , J. Landman Gay via use-livecode > wrote: > > On 6/21/18 2:58 PM, Bob Sneidar via use-livecode wrote: >> Also, I check that pOffset is a number by adding 0 to it in a try/catch >> statement. > > Or alternately, "if pOffset is a number..." > > -- > Jacqueline Landman Gay | jac...@hyperactivesw.com > HyperActive Software | http://www.hyperactivesw.com ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
On 6/21/18 2:58 PM, Bob Sneidar via use-livecode wrote: Also, I check that pOffset is a number by adding 0 to it in a try/catch statement. Or alternately, "if pOffset is a number..." -- Jacqueline Landman Gay | jac...@hyperactivesw.com HyperActive Software | http://www.hyperactivesw.com ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
Okay a newer NEWER version. If no parameters are passed for the fields, it will use the first two hilited objects. Also, I check that pOffset is a number by adding 0 to it in a try/catch statement. on alignFieldBaselines pField1, pField2, pOffset local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef local fFormattedBottom1, fFormattedBottom2 -- check passed parameters if pField1 is empty and pField2 is empty then put the selectedObjects into pFieldList put line 1 of pFieldList into pField1 put line 2 of pFieldList into pField2 end if -- check passed parameters try if word 1 to 2 of pField1 is not "Field ID" then put the long id of field pField1 into pField1 if word 1 to 2 of pField2 is not "Field ID" then put the long id of field pField2 into pField2 if pOffset is empty then put 0 into pOffset add 0 to pOffset catch theError return "Invalid parameter passed." end try -- get the formatted bottoms of both fields put item 4 of the formattedRect of line 1 of pField1 into fFormattedBottom1 put item 4 of the formattedRect of line 1 of pField2 into fFormattedBottom2 -- calculate the descents of both fields put item 4 of measureText(line 1 of pField1, pField1 ,"bounds") into tDescent1 put item 4 measureText(line 1 of pField2, pField2 ,"bounds") into tDescent2 -- get the bottom of both fields put the bottom of pField1 into tBot1 put the bottom of pField2 into tBot2 -- calculate the differences put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 -- calculate and set the new bottom for field 2 put the bottom of pField1 -(tDiff1 - tDiff2) into tRef set the bottom of pField2 to tRef + pOffset end alignFieldBaselines ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
Bernd, I ran this at least 50 times and in the vast majority of cases the baselines align. In a few cases, as Bob noted, it was off by 1 pixel. But that will be OK for my use. I let users pick any font but sizes are limited from 8 to 20. Thanks you guys. A very resourceful group, as usual! Marty > On Jun 21, 2018, at 11:00 AM, Niggemann, Bernd via use-livecode > wrote: > > Hi Marty, > > depending how liberal you are in letting users choose fonts and sizes you > might get "unexpected" results by aligning to field 1 > > > try this stress test > > > - > on mouseUp > lock screen > set the textfont of field 1 to any line of the fontNames > set the textfont of field 2 to any line of the fontNames > set the textSize of field 1 to random(20) + 10 > set the textSize of field 2 to random(20) + 10 > -- put the textFont of field 1 into field "Font1" > -- put the textFont of field 2 into field "Font2" > unlock screen > end mouseUp > - > > then align via your script > Your layout can start "moving" > > Additionally not all fonts report proper ascents and descents > > > > Kind regards > Bernd > >> Marty wrote: >> This works for me, assuming you want to leave field 1 where it is and align >> field 2: >> >> on alignFieldBaselines pField1, pField2 >> local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef >> local fFormattedBottom1, fFormattedBottom2 >> >> put item 4 of the formattedRect of line 1 of fld pField1 into >> fFormattedBottom1 >> put item 4 of the formattedRect of line 1 of fld pField2 into >> fFormattedBottom2 >> >> put item 4 of measureText(line 1 of fld pField1, fld pField1 ,"bounds") into >> tDescent1 >> put item 4 measureText(line 1 of fld pField2, fld pField2 ,"bounds") into >> tDescent2 >> >> put the bottom of fld pField1 into tBot1 >> put the bottom of fld pField2 into tBot2 >> >> put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 >> put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 >> >> put the bottom of fld pField1 -(tDiff1 - tDiff2) into tRef >> >> set the bottom of fld pField2 to tRef >> end alignFieldBaselines > > ___ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
Okay new version. This adds an offset parameter for those cases where the baselines do not exactly align due to font weirdnesses. I also added the ability to pass a short name of a field, or else the long ID. Enjoy! Bob S on alignFieldBaselines pField1, pField2, pOffset local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef local fFormattedBottom1, fFormattedBottom2 -- check passed parameters try if word 1 to 2 of pField1 is not "Field ID" then put the long id of field pField1 into pField1 if word 1 to 2 of pField2 is not "Field ID" then put the long id of field pField2 into pField2 if pOffset is empty then put 0 into pOffset catch theError return "Invalid parameter passed." end try -- get the formatted bottoms of both fields put item 4 of the formattedRect of line 1 of pField1 into fFormattedBottom1 put item 4 of the formattedRect of line 1 of pField2 into fFormattedBottom2 -- calculate the descents of both fields put item 4 of measureText(line 1 of pField1, pField1 ,"bounds") into tDescent1 put item 4 measureText(line 1 of pField2, pField2 ,"bounds") into tDescent2 -- get the bottom of both fields put the bottom of pField1 into tBot1 put the bottom of pField2 into tBot2 -- calculate the differences put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 -- calculate and set the new bottom for field 2 put the bottom of pField1 -(tDiff1 - tDiff2) into tRef set the bottom of pField2 to tRef + pOffset end alignFieldBaselines ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
Sorry my bad. I modified your script to expect the long id of a field, but your second edition still expected short names. I can work around that later. So your new script works, except the second field may be one pixel too high, depending on the font. Not sure there is a workaround for this, but this is still very useful. Bob S > > >> Marty wrote: >> This works for me, assuming you want to leave field 1 where it is and align >> field 2: >> >> on alignFieldBaselines pField1, pField2 >> local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef >> local fFormattedBottom1, fFormattedBottom2 >> >> put item 4 of the formattedRect of line 1 of fld pField1 into >> fFormattedBottom1 >> put item 4 of the formattedRect of line 1 of fld pField2 into >> fFormattedBottom2 >> >> put item 4 of measureText(line 1 of fld pField1, fld pField1 ,"bounds") into >> tDescent1 >> put item 4 measureText(line 1 of fld pField2, fld pField2 ,"bounds") into >> tDescent2 >> >> put the bottom of fld pField1 into tBot1 >> put the bottom of fld pField2 into tBot2 >> >> put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 >> put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 >> >> put the bottom of fld pField1 -(tDiff1 - tDiff2) into tRef >> >> set the bottom of fld pField2 to tRef >> end alignFieldBaselines > > ___ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
Hi Marty, depending how liberal you are in letting users choose fonts and sizes you might get "unexpected" results by aligning to field 1 try this stress test - on mouseUp lock screen set the textfont of field 1 to any line of the fontNames set the textfont of field 2 to any line of the fontNames set the textSize of field 1 to random(20) + 10 set the textSize of field 2 to random(20) + 10 -- put the textFont of field 1 into field "Font1" -- put the textFont of field 2 into field "Font2" unlock screen end mouseUp - then align via your script Your layout can start "moving" Additionally not all fonts report proper ascents and descents Kind regards Bernd > Marty wrote: > This works for me, assuming you want to leave field 1 where it is and align > field 2: > > on alignFieldBaselines pField1, pField2 > local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef > local fFormattedBottom1, fFormattedBottom2 > > put item 4 of the formattedRect of line 1 of fld pField1 into > fFormattedBottom1 > put item 4 of the formattedRect of line 1 of fld pField2 into > fFormattedBottom2 > > put item 4 of measureText(line 1 of fld pField1, fld pField1 ,"bounds") into > tDescent1 > put item 4 measureText(line 1 of fld pField2, fld pField2 ,"bounds") into > tDescent2 > > put the bottom of fld pField1 into tBot1 > put the bottom of fld pField2 into tBot2 > > put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 > put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 > > put the bottom of fld pField1 -(tDiff1 - tDiff2) into tRef > > set the bottom of fld pField2 to tRef > end alignFieldBaselines ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
I changed the font of one of the fields to something with a different descent, and it doesn't seem to work. Bob S > On Jun 21, 2018, at 10:28 , Knapp Martin via use-livecode > wrote: > > This works for me, assuming you want to leave field 1 where it is and align > field 2: > > on alignFieldBaselines pField1, pField2 > local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef > local fFormattedBottom1, fFormattedBottom2 > > put item 4 of the formattedRect of line 1 of fld pField1 into > fFormattedBottom1 > put item 4 of the formattedRect of line 1 of fld pField2 into > fFormattedBottom2 > > put item 4 of measureText(line 1 of fld pField1, fld pField1 ,"bounds") into > tDescent1 > put item 4 measureText(line 1 of fld pField2, fld pField2 ,"bounds") into > tDescent2 > > put the bottom of fld pField1 into tBot1 > put the bottom of fld pField2 into tBot2 > > put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 > put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 > > put the bottom of fld pField1 -(tDiff1 - tDiff2) into tRef > > set the bottom of fld pField2 to tRef > end alignFieldBaselines > --- > Marty > >> On Jun 21, 2018, at 10:24 AM, Bob Sneidar via use-livecode >> wrote: >> >> I modified as follows, but pField2 is one pixel high. Not sure why. >> >> Bob S >> >> on alignFieldBaselines pField1, pField2 >> local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef >> local fFormattedBottom1, fFormattedBottom2 >> >> -- put 120 into tRef >> >> put item 4 of the formattedRect of line 1 of pField1 into fFormattedBottom1 >> put item 4 of the formattedRect of line 1 of pField2 into fFormattedBottom2 >> >> put item 4 of measureText(line 1 of pField1, pField1 ,"bounds") into >> tDescent1 >> put item 4 measureText(line 1 of pField2, pField2 ,"bounds") into tDescent2 >> >> put the bottom of pField1 into tBot1 >> put the bottom of pField2 into tBot2 >> >> put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 >> put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 >> >> -- set the bottom of pField1 to tRef + tDiff1 >> set the bottom of pField2 to tBot1 + tDiff2 >> end alignFieldBaselines >> >> >>> On Jun 21, 2018, at 10:09 , Bob Sneidar via use-livecode >>> wrote: >>> >>> Or better yet: (should probably be submitted to the Master Library). >>> Trouble with this is that it relocates both fields. It should probably only >>> move pField2. >>> >>> on alignFieldBaselines pField1, pField2 >>> local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef >>> local fFormattedBottom1, fFormattedBottom2 >>> >>> put 120 into tRef >>> >>> put item 4 of the formattedRect of line 1 of pField1 into fFormattedBottom1 >>> put item 4 of the formattedRect of line 1 of pField2 into fFormattedBottom2 >>> >>> put item 4 of measureText(line 1 of pField1, pField1 ,"bounds") into >>> tDescent1 >>> put item 4 measureText(line 1 of pField2, pField2 ,"bounds") into tDescent2 >>> >>> put the bottom of pField1 into tBot1 >>> put the bottom of pField2 into tBot2 >>> >>> put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 >>> put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 >>> >>> set the bottom of pField1 to tRef + tDiff1 >>> set the bottom of pField2 to tRef + tDiff2 >>> end alignFieldBaselines >>> >>> Bob S >>> >>> On Jun 21, 2018, at 04:37 , Niggemann, Bernd via use-livecode wrote: Hi Mary, I suppose you want to center those fields around a common horizontal baseline. You might try this if that is what you want. Should work with different fonts and sizes. Two fields, one button. Kind regards Bernd -- on mouseUp local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef local fFormattedBottom1, fFormattedBottom2 put 120 into tRef put item 4 of the formattedRect of line 1 of field 1 into fFormattedBottom1 put item 4 of the formattedRect of line 1 of field 2 into fFormattedBottom2 put item 4 of measureText(line 1 of field 1, field 1 ,"bounds") into tDescent1 put item 4 measureText(line 1 of field 2, field 2 ,"bounds") into tDescent2 put the bottom of field 1 into tBot1 put the bottom of field 2 into tBot2 put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 set the bottom of field 1 to tRef + tDiff1 set the bottom of field 2 to tRef + tDiff2 end mouseUp -- ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode >>> >>> >>>
Re: Align baselines of 2 fields
This works for me, assuming you want to leave field 1 where it is and align field 2: on alignFieldBaselines pField1, pField2 local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef local fFormattedBottom1, fFormattedBottom2 put item 4 of the formattedRect of line 1 of fld pField1 into fFormattedBottom1 put item 4 of the formattedRect of line 1 of fld pField2 into fFormattedBottom2 put item 4 of measureText(line 1 of fld pField1, fld pField1 ,"bounds") into tDescent1 put item 4 measureText(line 1 of fld pField2, fld pField2 ,"bounds") into tDescent2 put the bottom of fld pField1 into tBot1 put the bottom of fld pField2 into tBot2 put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 put the bottom of fld pField1 -(tDiff1 - tDiff2) into tRef set the bottom of fld pField2 to tRef end alignFieldBaselines --- Marty > On Jun 21, 2018, at 10:24 AM, Bob Sneidar via use-livecode > wrote: > > I modified as follows, but pField2 is one pixel high. Not sure why. > > Bob S > > on alignFieldBaselines pField1, pField2 > local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef > local fFormattedBottom1, fFormattedBottom2 > > -- put 120 into tRef > > put item 4 of the formattedRect of line 1 of pField1 into fFormattedBottom1 > put item 4 of the formattedRect of line 1 of pField2 into fFormattedBottom2 > > put item 4 of measureText(line 1 of pField1, pField1 ,"bounds") into > tDescent1 > put item 4 measureText(line 1 of pField2, pField2 ,"bounds") into tDescent2 > > put the bottom of pField1 into tBot1 > put the bottom of pField2 into tBot2 > > put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 > put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 > > -- set the bottom of pField1 to tRef + tDiff1 > set the bottom of pField2 to tBot1 + tDiff2 > end alignFieldBaselines > > >> On Jun 21, 2018, at 10:09 , Bob Sneidar via use-livecode >> wrote: >> >> Or better yet: (should probably be submitted to the Master Library). Trouble >> with this is that it relocates both fields. It should probably only move >> pField2. >> >> on alignFieldBaselines pField1, pField2 >> local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef >> local fFormattedBottom1, fFormattedBottom2 >> >> put 120 into tRef >> >> put item 4 of the formattedRect of line 1 of pField1 into fFormattedBottom1 >> put item 4 of the formattedRect of line 1 of pField2 into fFormattedBottom2 >> >> put item 4 of measureText(line 1 of pField1, pField1 ,"bounds") into >> tDescent1 >> put item 4 measureText(line 1 of pField2, pField2 ,"bounds") into tDescent2 >> >> put the bottom of pField1 into tBot1 >> put the bottom of pField2 into tBot2 >> >> put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 >> put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 >> >> set the bottom of pField1 to tRef + tDiff1 >> set the bottom of pField2 to tRef + tDiff2 >> end alignFieldBaselines >> >> Bob S >> >> >>> On Jun 21, 2018, at 04:37 , Niggemann, Bernd via use-livecode >>> wrote: >>> >>> Hi Mary, >>> >>> I suppose you want to center those fields around a common horizontal >>> baseline. >>> >>> You might try this if that is what you want. Should work with different >>> fonts and sizes. >>> >>> Two fields, one button. >>> >>> Kind regards >>> Bernd >>> >>> -- >>> on mouseUp >>> local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef >>> local fFormattedBottom1, fFormattedBottom2 >>> >>> put 120 into tRef >>> >>> put item 4 of the formattedRect of line 1 of field 1 into fFormattedBottom1 >>> put item 4 of the formattedRect of line 1 of field 2 into fFormattedBottom2 >>> >>> put item 4 of measureText(line 1 of field 1, field 1 ,"bounds") into >>> tDescent1 >>> put item 4 measureText(line 1 of field 2, field 2 ,"bounds") into tDescent2 >>> >>> put the bottom of field 1 into tBot1 >>> put the bottom of field 2 into tBot2 >>> >>> put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 >>> put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 >>> >>> set the bottom of field 1 to tRef + tDiff1 >>> set the bottom of field 2 to tRef + tDiff2 >>> end mouseUp >>> -- >>> >>> >>> >>> ___ >>> use-livecode mailing list >>> use-livecode@lists.runrev.com >>> Please visit this url to subscribe, unsubscribe and manage your >>> subscription preferences: >>> http://lists.runrev.com/mailman/listinfo/use-livecode >> >> >> ___ >> use-livecode mailing list >> use-livecode@lists.runrev.com >> Please visit this url to subscribe, unsubscribe and manage your subscription >> preferences: >> http://lists.runrev.com/mailman/listinfo/use-livecode > > > ___ >
Re: Align baselines of 2 fields
I modified as follows, but pField2 is one pixel high. Not sure why. Bob S on alignFieldBaselines pField1, pField2 local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef local fFormattedBottom1, fFormattedBottom2 -- put 120 into tRef put item 4 of the formattedRect of line 1 of pField1 into fFormattedBottom1 put item 4 of the formattedRect of line 1 of pField2 into fFormattedBottom2 put item 4 of measureText(line 1 of pField1, pField1 ,"bounds") into tDescent1 put item 4 measureText(line 1 of pField2, pField2 ,"bounds") into tDescent2 put the bottom of pField1 into tBot1 put the bottom of pField2 into tBot2 put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 -- set the bottom of pField1 to tRef + tDiff1 set the bottom of pField2 to tBot1 + tDiff2 end alignFieldBaselines > On Jun 21, 2018, at 10:09 , Bob Sneidar via use-livecode > wrote: > > Or better yet: (should probably be submitted to the Master Library). Trouble > with this is that it relocates both fields. It should probably only move > pField2. > > on alignFieldBaselines pField1, pField2 > local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef > local fFormattedBottom1, fFormattedBottom2 > > put 120 into tRef > > put item 4 of the formattedRect of line 1 of pField1 into fFormattedBottom1 > put item 4 of the formattedRect of line 1 of pField2 into fFormattedBottom2 > > put item 4 of measureText(line 1 of pField1, pField1 ,"bounds") into > tDescent1 > put item 4 measureText(line 1 of pField2, pField2 ,"bounds") into tDescent2 > > put the bottom of pField1 into tBot1 > put the bottom of pField2 into tBot2 > > put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 > put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 > > set the bottom of pField1 to tRef + tDiff1 > set the bottom of pField2 to tRef + tDiff2 > end alignFieldBaselines > > Bob S > > >> On Jun 21, 2018, at 04:37 , Niggemann, Bernd via use-livecode >> wrote: >> >> Hi Mary, >> >> I suppose you want to center those fields around a common horizontal >> baseline. >> >> You might try this if that is what you want. Should work with different >> fonts and sizes. >> >> Two fields, one button. >> >> Kind regards >> Bernd >> >> -- >> on mouseUp >> local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef >> local fFormattedBottom1, fFormattedBottom2 >> >> put 120 into tRef >> >> put item 4 of the formattedRect of line 1 of field 1 into fFormattedBottom1 >> put item 4 of the formattedRect of line 1 of field 2 into fFormattedBottom2 >> >> put item 4 of measureText(line 1 of field 1, field 1 ,"bounds") into >> tDescent1 >> put item 4 measureText(line 1 of field 2, field 2 ,"bounds") into tDescent2 >> >> put the bottom of field 1 into tBot1 >> put the bottom of field 2 into tBot2 >> >> put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 >> put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 >> >> set the bottom of field 1 to tRef + tDiff1 >> set the bottom of field 2 to tRef + tDiff2 >> end mouseUp >> -- >> >> >> >> ___ >> use-livecode mailing list >> use-livecode@lists.runrev.com >> Please visit this url to subscribe, unsubscribe and manage your subscription >> preferences: >> http://lists.runrev.com/mailman/listinfo/use-livecode > > > ___ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
Or better yet: (should probably be submitted to the Master Library). Trouble with this is that it relocates both fields. It should probably only move pField2. on alignFieldBaselines pField1, pField2 local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef local fFormattedBottom1, fFormattedBottom2 put 120 into tRef put item 4 of the formattedRect of line 1 of pField1 into fFormattedBottom1 put item 4 of the formattedRect of line 1 of pField2 into fFormattedBottom2 put item 4 of measureText(line 1 of pField1, pField1 ,"bounds") into tDescent1 put item 4 measureText(line 1 of pField2, pField2 ,"bounds") into tDescent2 put the bottom of pField1 into tBot1 put the bottom of pField2 into tBot2 put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 set the bottom of pField1 to tRef + tDiff1 set the bottom of pField2 to tRef + tDiff2 end alignFieldBaselines Bob S > On Jun 21, 2018, at 04:37 , Niggemann, Bernd via use-livecode > wrote: > > Hi Mary, > > I suppose you want to center those fields around a common horizontal baseline. > > You might try this if that is what you want. Should work with different fonts > and sizes. > > Two fields, one button. > > Kind regards > Bernd > > -- > on mouseUp > local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef > local fFormattedBottom1, fFormattedBottom2 > > put 120 into tRef > > put item 4 of the formattedRect of line 1 of field 1 into fFormattedBottom1 > put item 4 of the formattedRect of line 1 of field 2 into fFormattedBottom2 > > put item 4 of measureText(line 1 of field 1, field 1 ,"bounds") into > tDescent1 > put item 4 measureText(line 1 of field 2, field 2 ,"bounds") into tDescent2 > > put the bottom of field 1 into tBot1 > put the bottom of field 2 into tBot2 > > put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 > put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 > > set the bottom of field 1 to tRef + tDiff1 > set the bottom of field 2 to tRef + tDiff2 > end mouseUp > -- > > > > ___ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
Thanks Craig and Bernd, I’ll tinker with this and see how it goes. Marty > On Jun 21, 2018, at 4:37 AM, Niggemann, Bernd via use-livecode > wrote: > > Hi Mary, > > I suppose you want to center those fields around a common horizontal baseline. > > You might try this if that is what you want. Should work with different fonts > and sizes. > > Two fields, one button. > > Kind regards > Bernd > > -- > on mouseUp > local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef > local fFormattedBottom1, fFormattedBottom2 > > put 120 into tRef > > put item 4 of the formattedRect of line 1 of field 1 into fFormattedBottom1 > put item 4 of the formattedRect of line 1 of field 2 into fFormattedBottom2 > > put item 4 of measureText(line 1 of field 1, field 1 ,"bounds") into > tDescent1 > put item 4 measureText(line 1 of field 2, field 2 ,"bounds") into tDescent2 > > put the bottom of field 1 into tBot1 > put the bottom of field 2 into tBot2 > > put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 > put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 > > set the bottom of field 1 to tRef + tDiff1 > set the bottom of field 2 to tRef + tDiff2 > end mouseUp > -- > > > > ___ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
Hi Mary, I suppose you want to center those fields around a common horizontal baseline. You might try this if that is what you want. Should work with different fonts and sizes. Two fields, one button. Kind regards Bernd -- on mouseUp local tDescent1, tDescent2, tBot1, tBot2, tDiff1, tDiff2, tRef local fFormattedBottom1, fFormattedBottom2 put 120 into tRef put item 4 of the formattedRect of line 1 of field 1 into fFormattedBottom1 put item 4 of the formattedRect of line 1 of field 2 into fFormattedBottom2 put item 4 of measureText(line 1 of field 1, field 1 ,"bounds") into tDescent1 put item 4 measureText(line 1 of field 2, field 2 ,"bounds") into tDescent2 put the bottom of field 1 into tBot1 put the bottom of field 2 into tBot2 put tBot1 - fFormattedBottom1 + tDescent1 into tDiff1 put tBot2 - fFormattedBottom2 + tDescent2 into tDiff2 set the bottom of field 1 to tRef + tDiff1 set the bottom of field 2 to tRef + tDiff2 end mouseUp -- ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
So I played around just a little. Make a new field and set its Textheight property. For the first line, this will be a certain number of pixels below the top of the field. Each subsequent line will be a multiple of that value. So if you know the baseLine of any line of text, and you know the top, you can either position the field so that the baseLine attains a certain Y value, or you can adjust the baseline to any Y value. Do the same for the other field, and you can align the text. Craig -- Sent from: http://runtime-revolution.278305.n4.nabble.com/Revolution-User-f278306.html ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
Right. I do not think there is a "baseLine" property. But again, if you play around with the properties I mentioned above, all of which are in pixels, I bet you can create a handler that will determine the "baseLineV" of any text in a field, and you can then match two fields together. This would be useful, since the fields could have different textSizes and such, and still match their vertical value. Craig -- Sent from: http://runtime-revolution.278305.n4.nabble.com/Revolution-User-f278306.html ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
I checked the dictionary. There is no entry for the baseline of anything. Bob S > On Jun 20, 2018, at 14:34 , Knapp Martin via use-livecode > wrote: > > The baseline of the text. > > Marty > >> On Jun 20, 2018, at 2:32 PM, dunbarxx via use-livecode >> wrote: >> >> Hi. >> >> Do you mean the bottom of the field control, or the baseline of the text? >> All are doable. >> >> Craig Newman >> >> >> >> -- >> Sent from: >> http://runtime-revolution.278305.n4.nabble.com/Revolution-User-f278306.html >> >> ___ >> use-livecode mailing list >> use-livecode@lists.runrev.com >> Please visit this url to subscribe, unsubscribe and manage your subscription >> preferences: >> http://lists.runrev.com/mailman/listinfo/use-livecode > > > ___ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
I am sure that with the margins, textHeight and textSize properties you can calculate how to set the text baseline of one field to that of another. A small textSize will require a smaller third margin, for example, and that must take into account the textHeight as a further component. Craig -- Sent from: http://runtime-revolution.278305.n4.nabble.com/Revolution-User-f278306.html ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
The baseline of the text. Marty > On Jun 20, 2018, at 2:32 PM, dunbarxx via use-livecode > wrote: > > Hi. > > Do you mean the bottom of the field control, or the baseline of the text? > All are doable. > > Craig Newman > > > > -- > Sent from: > http://runtime-revolution.278305.n4.nabble.com/Revolution-User-f278306.html > > ___ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
Re: Align baselines of 2 fields
Hi. Do you mean the bottom of the field control, or the baseline of the text? All are doable. Craig Newman -- Sent from: http://runtime-revolution.278305.n4.nabble.com/Revolution-User-f278306.html ___ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode