2017-01-17 8 views
0

Я работаю над проектом LiveCode, который отображает модальный формат с таблицей DataGrid.Как я могу редактировать поле в произвольной строке в livatode datagrid программно?

Если пользователь выбирает одну или несколько строк в DataGrid и нажимает кнопку OK, выбранные строки копируются в другую таблицу DataGrid в другом стеке.

Я хочу открыть поле редактирования в первой из скопированных строк в другом стеке.

Я нашел команду EditFieldText, но не смог определить, что следует предоставить в качестве первого параметра (pField).

Я предполагаю, что другие параметры (pIndex и pKey) - это индекс строки и столбца DataGrid соответственно.

Это код в моей кнопке OK:

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 документации и поиска. Я нашел много статей, но не объяснил, как это сделать на самом деле.

Я использую LiveCode 9.0.0-dp-4 | Build 15003 Community Edition для Mac OS X 10.11.6.

Редактировать 2017-01-17 13:23: Я нашел команду EditCellOfIndex, изменил мой код, чтобы использовать его на основе различных примеров, которые я нашел, и не имел никакого успеха с ним тоже. Я обновил код выше, чтобы отразить изменения, которые я сделал.

ответ

0

Это все о синтаксисе (я все еще привык к синтаксису LiveCode).
Я использовал неправильный синтаксис для сообщения EditCellOfIndex.

Мне также нужно было переместить сообщение из цикла, добавляя строки к другому DataGrid, потому что следующее дополнение закрывает поле редактирования фантомов.

Благодаря 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