У меня есть форма с сеткой БД. Он работал нормально, как обычный 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 ломает его и что я могу сделать, чтобы это исправить?