Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > TStringGrid


Автор: MovAx 14.3.2003, 21:37
Добрый день!

Делаю свой VCL компонент на основе TStringGrid в делфях.
Записи в этот список добавляются по разному, можно через Rows, Cols, Cells, главное выставить свойства ColCount и RowCount.

Но вот что интересно, нет метода очистки этих записей, такого как TListView.Items.Clear. Если RowCount установить в значение 100, а затем в 10, то в памяти останутся висеть 90 записей.

Вопрос, для тех кто знает, каким способом можно сделать полноценный Clear

Автор: AntonSaburov 14.3.2003, 23:06
Можно удалять из объектов Rows или Cols - т.к. это TStrings то там метод Clear есть.
Наслаждайся biggrin.gif

Автор: MovAx 15.3.2003, 00:00
Thanks, я так и делал. Но как удалить сами указатели на TStrings из Rows? Они то остаются

Автор: AntonSaburov 15.3.2003, 00:42
Цитата
Thanks, я так и делал. Но как удалить сами указатели на TStrings из Rows? Они то остаются


У-у-у-у. Я в коды полез - там не так все просто. Я с TStringGrid не работал много, посему с налета решил ответить. И зря.
TStringGrid содержит две структуры FRows и FCols. Оба типа TSparseList.
И вот если его начать копать, то там надо разбираться долго.

Времени у меня нет, но буду крайне признателен, если ты добъешь сию тему и опубликуешь.

Все будут рады и кричать "бис" smile.gif

Автор: Song 15.3.2003, 03:11
With StringGrid1 Do
Begin
For t:=0 to RowCount-1 Do Rows[t].Clear;
RowCount:=1;
End;

Автор: AntonSaburov 15.3.2003, 03:22
Цитата
With StringGrid1 Do
Begin
For t:=0 to RowCount-1 Do Rows[t].Clear;
RowCount:=1;
End;


Это было понятно изначально - а что делать с самим Rows[t]. То, что очистился сам список строк еще не говорит, что сам Rows[t] куда-то делся.

Т.е. надо Rows[t].Free скорее всего надо вызывать

Автор: MovAx 15.3.2003, 03:56
Цитата(AntonSaburov @ 14.3.2003, 16:42)
И вот если его начать копать, то там надо разбираться долго.

Времени у меня нет, но буду крайне признателен, если ты добъешь сию тему и опубликуешь.

Все будут рады и кричать "бис" smile.gif

Я давно понял что копать долго, вот только самому времени на это нет, поэтому и спросил

Автор: Song 15.3.2003, 04:21
>>Т.е. надо Rows[t].Free скорее всего надо вызывать
Чего? :-))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)