| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Ссылка на объект в строке StringGrid`а |
| Автор: creative 28.2.2006, 11:47 |
| В обработчике StringGrid`а onDoubleClick заложены две процедуры: 1. если строка, на которой стоит курсор, пустая, то открывается маленькая форма с полями ввода и при их заполнении и нажатии ОК, создается объект класса TThing (например), его поля отображаются с соотв. ячейках таблицы и еще - в текущую строку таблицы добавляется ссылка на этот объект: Form1.MyGrid.Objects[0, row]:=NewThing; 2. если строка уже заполнена, то при Double Click`е тоже открыватся форма, но она уже содержит значения полей объекта, связанного с этой строчкой. Предполагается, что если эти значения изменить и нажать ОК, то они обновятся в таблице. обращение к объекты происходит следующим образом: with TThing(Form1.MyGrid.Objects[0, row]) do begin ... end; Но на этой строке программа вылетает. Уточнение: если написать в чистом виде Form1.MyGrid.Objects[0, row] программа даже не скомпилится, написав, что row - ubdeclared identifier Если изголиться и написать var a: integer; .......... Form1.MyGrid.Objects[0, a] то компилятор это проглотит, но при повторном обращении к объекту (при редактировании) программа вылетит. Отладчик показывает, что TThing(Form1.MyGrid.Objects[0, row]) = nil, то есть при создании объекта никакая ссылка на него с строку не добавилась. Объясните почему? Что я делаю неправильно? |
| Автор: _hunter 28.2.2006, 12:13 |
| row -- Это свойство сетки а ты к нему пытаешся обратится без указаеия объекта нужно так: Form1.MyGrid.Objects[0, MyGrid.row] писать |
| Автор: Romikgy 28.2.2006, 12:14 |
| Что есть |
| Автор: creative 28.2.2006, 12:35 | ||
Спасибо за совет насчет row. Проблема все таки оказалась в другом, но это тоже новая и ценная информация. Спасибо. |