Некоторые помогают отследить исключение при загрузке формы с помощью SMDBGrid - PullRequest
0 голосов
/ 05 января 2010

У меня есть форма с сеткой БД. Он работал нормально, как обычный TDBGrid, но когда я заменил его на Scalabium TSMDBGrid, я начал получать исключения при загрузке формы.

Вот проблема, насколько я могу отследить:

При загрузке столбцов из DFM он пытается установить для свойства Expanded в первом столбце значение False. Это устанавливается в конструкторе форм и не может быть изменено, если столбец не связан с полем, представляющим ADT или массив.

По какой-то причине столбцы создаются в конструкторе, для которого FExpanded имеет значение true. Когда читатель достигает этой точки, он вызывает TColumn.SetExpanded (false), что делает это:

begin
  if Value <> FExpanded then
  begin
    Grid := GetGrid;
    WasShowing := (Grid <> nil) and Grid.Columns[Grid.SelectedIndex].Showing;
    ...

К сожалению, на данный момент Grid.SelectedIndex равен -1, поэтому я получаю «Исключительный класс EListError с сообщением« Список индексов выходит за пределы (-1) ».» Это довольно четкий инвариант: SelectedIndex не должен быть равен -1 при вызове SetExpanded. Кто-нибудь знает, почему TSMDBGrid ломает его и что я могу сделать, чтобы это исправить?

Ответы [ 2 ]

0 голосов
/ 06 января 2010

Попробуйте воссоздать список столбцов, если дизайнер

0 голосов
/ 05 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...