Компонента компилится, однако, при выборе в инспекторе какого-либо существующего датамодуля в это свойство, Дэльфя пишет Invalid Property Value.
А свойство типа array of TStringList вообще не получается определить. Если кто знает как передать через published-поля указатель на переменную array of TStringList, подскажите пожалуйста (ну очень надо).
Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
04-12-2006 01:53 | Сообщение от автора вопроса
Большое спасибо за советы,
пошел разбираться в редакторах свойств.
Обычно "штатных" редакторов вполне достаточно. Указанная ошибка возникает при попытке присвоения свойству недопустимого значения.По поводу свойства типа массив: и не получится определить. Вместо этого пользуйте "индексные" свойства. Они очень похожи на массивы, но не являются таковыми, например:
TSomeclass = class(...)
private
FList: array of TStringList;
function GetList(Index: Integer): TStringList;
procedure SetList(Index: Integer; Value: TStringList);
public
property List[Index: Integer]: TStringList read GetList wrtite SetList;
end;
А вообще, лучше посмотреть реализацию свойства типа Strings в любом компоненте. Разница только в том, что вам нужен тип свойства TStringList.
Что бы в Object Inspector свойство можно было редактировать мало просто объявить в published, нужно что бы для свойства был подходящий редактор свойств. Для стандартных типов и большинства стандартных VCL объектов уже есть готовые редакторы.
Так что пишите свой редактор свойств.
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.