RevQueryDatabase error in standalone

Bob Sneidar bobsneidar at iotecdigital.com
Fri Feb 2 12:37:30 EST 2018


Okay I found the issue with the standalone not building properly. I wrote a new handler to size a window based on the min/max left, top,right,bottoms of every visible object, so that the "air" or empty space is consistent for every stack opened. It *sorta* works, as long as the topmost and leftmost of the most extreme top left objects are where you want them to be. But that is neither here nor there. 

To do this more easily, I gather the rects of every object, along with a few other properties into an array, then convert the array to a memory database, where I can query it for the rect,visible and owner properties, excluding simple groups (not datagrids) and the menu group. The result is a text variable containing these properties of every object on a card that I queried for, and I can sort the lines by item 2,3,4 or 5 of each to get the min left and top, and the max right and bottom of all the objects. Good so far? 

All that works a peach in development mode. But in a standalone, something fails when the app launches AS A STANDALONE. If I open the mainstack in the standalone folder in the IDE, it ALSO runs fine, so it isn't that something is going wrong in the build process!!! Just not as a STANDALONE! 

Here is the code. After commenting out all the calls to this handler, the standalone works fine again. I am completely befuddled by this. If anyone can find fault in this code, which would ONLY cause a problem with a standalone, I'd love to hear it: 

on setWindowRect pCardID
   lock screen
   put the short name of pCardID into tCardName
   if not there is a card tCardName then return "ERROR: No Card ID supplied."
   put getParentStack(pCardID) into pStackID
   put the left of pStackID into tOldLeft
   put the top of pStackID into tOldTop
   put tOldLeft into item 1 of tOldTopLeft
   put tOldTop into item 2 of tOldTopLeft
   put the loc of pStackID into tOldLoc
   put "rect,visible,owner" into tPropList
   put getCardObjects(pCardID, tPropList) into aCardObjects
   put aCardObjects ["props"] into aObjectProperties
   put arrayToMemoryDB(aObjectProperties) into tDBID
   put "select * from arraydata where" into tQuery
   put " visible = 'true'" after tQuery
   put " AND (NOT controlname LIKE 'group " & quote & "grp%" & quote & "')" after tQuery
   put " AND (NOT controlname LIKE '%MainMenu%')" after tQuery
   put " AND (NOT owner LIKE  '%MainMenu%')" after tQuery
   if the environment is not "Development" then answer "about to query memory database."
   
   try
      put revDataFromQuery(comma,cr,tDBID,tQuery) into tQueryResults
   catch theError
      answer theError
   end try
   
   revCloseDatabase tDBID
   if the environment is not "Development" then answer "just queried memory database."
   sort tQueryResults numeric by item 2 of each
   put item 2 of line 1 of tQueryResults into minLeft
   sort tQueryResults numeric by item 3 of each
   put item 3 of line 1 of tQueryResults into minTop
   sort tQueryResults numeric descending by item 4 of each
   put item 4 of line 1 of tQueryResults into maxRight
   sort tQueryResults numeric descending by item 5 of each
   put item 5 of line 1 of tQueryResults into maxBottom
   subtract 26 from maxBottom -- Title Bar Height
   -- if the platform contains "MAC" then subtract 21 from maxBottom -- for menubar
   -- if the platform contains "WIN" then add 21 to maxBottom
   put minLeft + tOldLeft -30 into item 1 of tNewRect
   put minTop + tOldTop -45 into item 2 of tNewRect
   put maxRight + tOldLeft + minLeft into item 3 of tNewRect
   put maxBottom + tOldTop into item 4 of tNewRect
   set the rect of pStackID to tNewRect
   if the platform contains "WIN" then set the height of pStackID to the height of pStackID +21
   set the topLeft of pStackID to tOldTopLeft
   
   put the effective working screenrect into tScreenRect
   put rectWithin(tNewRect, tScreenRect) into tIsWithin
   
   if not tIsWithin then
      set the loc of pStackID to the screenLoc -- center window
   end if
   unlock screen
end setWindowRect





More information about the Use-livecode mailing list