Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TStringGrid, ошибка 
:(
    Опции темы
Olvit
Дата 13.4.2007, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 13.4.2007

Репутация: нет
Всего: нет



Есть у мя в компоненте удаление столбцов/строк:
Код

procedure TMyStrGrid.RemoveRows(RowIndex, RCount : LongInt);
var
  i: LongInt;
begin

  for i := RowIndex to RowIndex + RCount - 1 do
    Rows[i].Assign(Rows[i+RCount]);
    
  RowCount := RowCount - RCount; // переход к SetRowCount
end;                                                                                                                     
{--------------------------------------------------------------------} 
procedure TMyStrGrid.SetRowCount(RC: Longint);
var
  OldRowCount, i: Longint;
begin
  OldRowCount := RowCount;
  inherited RowCount := RC;
                              
  if OldRowCount < RowCount then
    AddCellObjects(0, ColCount-1, OldRowCount, RowCount-1)
  else if OldRowCount > RowCount then begin
    FreeCellObjects(0, ColCount-1, RowCount, OldRowCount-1);
    for i := 1 to OldRowCount - RowCount do Rows[OldRowCount-i].Clear;
  end;
end;
{--------------------------------------------------------------------}
procedure TMyStrGrid.FreeCellObjects(fromCol, toCol, fromRow, toRow: Longint);
var i,j: Longint;
begin
  for i:= fromCol to toCol do
    for j:= fromRow to toRow do (Objects[i, j] as TCellObj).Free;
end;


На одну из кнопок я повесил вставку n строк в середину грида, на другую - их удаление (RemoveRows). 
После отработки всей цепочки кода удаления, уже на этапе новой отрисовки как раз происходит вышеупомянутая ошибка. Не могу понять, что не так? 

Ошибку вызывает след. строка из OnDrawCell:
Код

Canvas.Brush.Color := (Objects[ACol,ARow] as TCellObj).Color;



И еще, как следствие того же "прокола" в коде удаления строк, ошибка 'Invalid class typecast' на строке из FreeCellObjects при удалении всех объектов при закрытии приложения:
Код

for j:= fromRow to toRow do (Objects[i, j] as TCellObj).Free;


Помогите плз понять, в чем проблема?
PM MAIL WWW   Вверх
MetalFan
Дата 13.4.2007, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



ну тебе ж написали - неверное приведение типов. что тут не ясного?
сделай например is сначала
з.ы. а зачем для Free приводишь к типу?

Это сообщение отредактировал(а) MetalFan - 13.4.2007, 11:05


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Olvit
Дата 13.4.2007, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 13.4.2007

Репутация: нет
Всего: нет



Создавал объекты так: (Objects[x,y] as TCellObj).Create;

И до того как я связался с Assign весь вышеприведенный код работал.
(TCellObj - наследник TObjecta с одним доп. свойством Color)
PM MAIL WWW   Вверх
MetalFan
Дата 13.4.2007, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Цитата(Olvit @  13.4.2007,  11:12 Найти цитируемый пост)
Создавал объекты так:

так, понятно... идите читать книжки по ООП в Делфи.

з.ы. Objects[x,y] := TCellObj.Create;


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Olvit
Дата 13.4.2007, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 13.4.2007

Репутация: нет
Всего: нет



Спасибо, пойду)  Я сейчас к сожалению на работе, поетому исправить смогу только вечером дома

Это сообщение отредактировал(а) Olvit - 13.4.2007, 11:29
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.