Наследник tstringgrid - глюк?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Наследник tstringgrid - глюк?

Сообщение AlexP » 08.02.2010 21:33:37

Обнаружил такой глюк, или я что-то делаю не так?

Мне нужен компонент, наследник 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 то же самое.
AlexP
новенький
 
Сообщения: 20
Зарегистрирован: 11.05.2007 19:04:01

Re: Наследник tstringgrid - глюк?

Сообщение Climber » 09.02.2010 09:25:04

Для решения указанной проблемы ("чтобы при создании в нем были две колонки с заданными свойствами") наследника делать не нужно, можно сделать проще. На форму кидаем StringGrid, делаем двойной клик, открывается редактор, в редакторе заполняем сетку как хочется, делаем ширину столбцов и т. д. И не надо городить огород. А еще есть свойство Columns, это вообще супер вещь, позволяет настраивать форматирование для всего столбца.
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Наследник tstringgrid - глюк?

Сообщение AlexP » 09.02.2010 13:38:43

Climber

Спасибо, это все понятно, можно конечно каждый раз настраивать внешний вид в design-time, но нужно именно в виде компонента, т.к. он будет часто использоваться и плюс там еще у него будут разные другие функции.
AlexP
новенький
 
Сообщения: 20
Зарегистрирован: 11.05.2007 19:04:01


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 50

Рейтинг@Mail.ru