如何以编程方式编辑livecode datagrid中任意行中的字段?

时间:2017-01-17 19:57:29

标签: datagrid livecode

我正在使用一个显示带有DataGrid表的模态的LiveCode项目。

如果用户在DataGrid中选择一行或多行并单击“确定”按钮,则所选行将复制到另一个堆栈中的另一个DataGrid表。

我想在另一个堆栈中的第一个复制行中打开一个编辑字段。

我找到了EditFieldText命令,但还没有能够找出要提供的内容作为第一个参数(pField)。

我假设其他参数(pIndex和pKey)分别是DataGrid行索引和列名。

这是我的确定按钮中的代码:

on mouseUp
   lock screen
   put the dgHiLitedLines of group selectComponentGrid into rowNumbers
   put the dgData of group selectComponentGrid into rows
   put true into firstTime
   repeat for each item rowNumber in rowNumbers
      put rows[rowNumber] into row 
      dispatch "AddData" to group bomGrid of card inventoryItem of stack inventory with row
      if firstTime is true then
         # Set focus to this row's quantity field.
         put "quantity" into colName
         put the result into lineNo -- the result contains the index of the new row
         send "EditCellOfIndex colName lineNo" to group bomGrid on card "inventoryItem" of stack "inventory"
         # At this point the result contains "no control exists for index column"
         put false into firstTime
      end if
      #end if
   end repeat
   unlock screen
   close this stack
end mouseUp

我花了几个小时阅读LiveCode文档和搜索。我发现了很多文章,但没有解释如何实际做到这一点。

我在Mac OS X 10.11.6上使用LiveCode 9.0.0-dp-4 | Build 15003 Community Edition。

编辑2017-01-17 13:23: 我找到了EditCellOfIndex命令,根据我找到的各种示例修改了我的代码以使用它,并且也没有成功。 我已更新上面的代码以反映我所做的更改。

1 个答案:

答案 0 :(得分:0)

所有关于语法的问题(我仍然习惯了LiveCode语法)。
我在EditCellOfIndex消息中使用了错误的语法。

我还需要将消息发送出循环,将行添加到另一个DataGrid,因为下一个add会关闭幻像编辑字段。

感谢sritcp在LiveCode论坛上获取语法catch。 这是功能代码:

on mouseUp
   lock screen
   put empty into lineNo
   put the dgHiLitedLines of group selectComponentGrid into rowNumbers
   put the dgData of group selectComponentGrid into rows
   repeat for each item rowNumber in rowNumbers
      put rows[rowNumber] into row
      Dispatch "AddData" to group bomGrid of card inventoryItem of stack inventory with row
      if lineNo is empty then
         put the result into lineNo
      end if
   end repeat
   if lineNo is not empty then
      # Set focus to the first new row's quantity field.
      dispatch "EditCellOfIndex" \
            to group bomGrid on card "inventoryItem" of stack "inventory" \
            with "quantity", lineNo
   end if
   unlock screen
   close this stack
end mouseUp