使用回调时如何使用SQLite数据库修复数据网格中的可变行高

时间:2014-07-07 01:57:06

标签: livecode

我正在使用SQLite数据库使用一个名为callbacks的功能处理数据网格,如本课所述:displaying-large-amounts-of-data

我想对该课程中包含的示例堆栈进行一些更改(您可以从该页面顶部的链接下载堆栈)。

我想在DG中显示“情节”文字而不是电影的“标题”,并且情节文字应该具有本课程中描述的可变线高:how-do-i-create-a-form-with-variable-line-heights

在示例堆栈中,我进行了以下更改:

行模板中的

: 将字段“Title”重命名为“plot”,将dontWrap设置为false并将fixedLineHeight更改为false

将字段“ReleaseDate”重命名为“nr”

加入: 将我的字段“nr”的文本设置为pDataArray [“id”]

行行为

    ## changed the layoutControl to make space for wrapping of field "plot"

    on LayoutControl pControlRect
    local theFieldRect

   put the rect of me into theFieldRect
   set the right of button "Genre" of me to item 3 of theFieldRect
   set the right of field "LblGenre" of me to the left of button "Genre" of me

   set the right of field "nr" of me to item 3 of theFieldRect

   ## Expand field "plot"
   put the rect of field "plot" of me into theFieldRect
   put item 3 of pControlRect - 180 into item 3 of theFieldRect
   set the rect of field "plot" of me to theFieldRect

   ##Now resize field to fit content
   put item 2 of theFieldRect \
         + the formattedheight of field "plot" of me - \
         the bottommargin of field "plot" of me \
   into item 4 of theFieldRect
   set the rect of field "plot" of me to theFieldRect

   ## Now update the bounding rect to match total height you
   ## want this row to have
   put item 4 of theFieldRect into item 4 of pControlRect

   set the rect of graphic "Background" of me to pControlRect
end LayoutControl

在设置变量线高度的课程中,它说要关闭数据网格的“固定控制高度”。但是,当我这样做时,没有任何东西显示出来,我收到了一个错误。

我的更改堆栈在这里:Databases-callbacks-variable-line-height.zip (只需用课程替换课程中的原始堆栈; SQLite数据库是相同的,应该放在与堆栈相同的文件夹中)。

如何解决这个问题,以便变量行高可以使用?

1 个答案:

答案 0 :(得分:1)

我找到了关闭固定控制高度的问题。在缓存每行的高度时,数据网格行为未正确设置GetDataForLine pLine参数。我将对数据网格行为进行修改,直到LiveCode中包含修复,但您应该重新考虑您的方法。当关闭固定线高度时,数据网格必须在显示数据网格之前计算每条线的高度。对于您正在使用的50,000记录示例,这需要花费很多时间。

首先,编辑数据网格行为的脚本:

edit script of btn "data grid" of stack "revdatagridlibrary"

接下来,转到第3097行。在3097以下添加以下代码行:

add 1 to theSequence

现在代码应如下所示:

repeat for each key theIndex in sDataArray     
            add 1 to theSequence

            ## Get height
            if sDataArray[theIndex] is NULL then

保存脚本。这将保存您当前版本的LiveCode的更改。请注意,下次更新LiveCode时,更改将会丢失。我将修复程序提交给RunRev,所以它应该在下一个版本中修复。

此外,设置图形“背景”矩形的代码需要进行少量更改。现在,如果字段的底部高于“类型”按钮的底部,它将无法工作。代码应该是这样的:

put max(item 4 of theFieldRect, the bottom of button "Genre" of me + 4) into item 4 of pControlRect