Мне нужен компонент, наследник tstringgrid, чтобы при создании в нем были две колонки с заданными свойствами.
Для этого создаю пакет, как обычно, в нем компонент tmystringgrid, пишу в его конструкторе
- Код: Выделить всё
constructor tmystringgrid.Create(TheOwner: TComponent);
begin
inherited Create(TheOwner);
RowCount:=1;
FixedCols:=0;
Columns.Add;
Columns.Add;
Options:=[goEditing];
Columns[0].ButtonStyle:=cbsCheckboxColumn;
Columns[0].Width:=21;
Columns[1].Width:=132;
Columns[0].Title.Caption:=' ';
Columns[1].Title.Caption:='заголовок';
end;
Устанавливаю пакет, создаю новый проект, кладу на пустую форму свой новый компонент, всё ОК - на компоненте есть две колонки. Компилирую программу, она компилируется, но при запуске программы возникает сообщение -
error reading tmystringgrid1.colcount: Use Column property to add/remove columns.
и далее программа вылетает.
Я закомментировал строки в конструкторе начиная с Columns.Add; тогда программа и компилируется и запускается, причем компонент в программе имеет нужный мне вид и две колонки, и это несмотря на то, что строки их добавления в конструкторе закомментированы!
Еще что интересно - я закрываю ИДЕ и снова запускаю Лазарус, и мне при открытии этого проекта выводится сообщение -
Read error
Stream=TForm1 :Root=:TForm1
Component Class: tmystringgrid
error reading tmystringgrid1.colcount: Use Column property to add/remove columns.
Я выбираю Continue Loading, и, несмотря на это предупреждение, проект нормально открывается, на форме лежит мой компонент со своими двумя колонками, программа компилируется, но, как и раньше, откомпилированная программа запускается только тогда, когда я закомментировал строки создания столбцов в конструкторе.
Вышел из положения следующим образом
1) закомментировал строки
2) пересобрал Лазарус
3) раскомментировал строки
Теперь, если положить компонент на форму, то он выглядит как обычный stringgrid. Но после компиляции и запуска программы он выглядит так, как мне надо.
Лазарус 0.9.28.2 бета, winXP
В последнем снапшоте Lazarus-0.9.28.3-23661-fpc-2.4.0-20100208-win32.exe то же самое.