Форум: "Основная";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
ВнизТекст в ячейках Stringrid и память Найти похожие ветки
← →
Medved_ (2006-12-01 13:42) [0]Здраствуйте.
Уважаемые мастера, скажите как
съэкономить память в данном примере для Stringgrid(если
неотпускаешь кнопку вниз или PageDown) идет
колоссальная потеря памяти.
var
SizeLeftCol:integer;
procedure TForm1.sgTopLeftChanged(Sender: TObject);
var
i:integer;
begin
if sg.FixedCols >0 then
begin
for i:=sg.TopRow to (sg.TopRow+sg.TopRow+sg.VisibleRowCount-1) do
sg.Cells[0,i]:=inttostr(i-1);
SizeLeftCol:=sg.Canvas.TextWidth(inttostr(sg.TopRow+sg.VisibleRowCount-1));
sg.ColWidths[0]:=SizeLeftCol+10;
end;
end;
Заранее спасибо.
← →
Jeer © (2006-12-01 17:32) [1]
> колоссальная потеря памяти.
Чьей ?
← →
Igor_Zal (2006-12-01 23:41) [2]Нажмите CTR+ALT+DEl с программой, реализующий данный алгоритм и все станет ясно.
← →
Medved_ (2006-12-02 08:56) [3]Самое главное забыл сказать:
RowCount = 65536 (как в Excel) и для того, чтобы при загрузке
программы - она быстро открывалась я выбрал тот вариант.
Если же при загрузке сразу писать
if sg.FixedCols >0 then
begin
for i:=0 to sg.RowCount-1 do
sg.Cells[0,i]:=inttostr(i+1);
SizeLeftCol:=sg.Canvas.TextWidth(inttostr(sg.TopRow+sg.VisibleRowCount-1));
sg.ColWidths[0]:=SizeLeftCol+10;
end;
то загрузка занимает очень много времени.
И при этом, если если
неотпускаешь кнопку вниз или PageDown) идет постоянное опускание увеличение Row и памяти расходуется по возрастающей.
В Excele такого нет, хотя я думаю подход у них такой же, только
с память они как-то организовали процесс.
← →
ЮЮ © (2006-12-02 09:29) [4]Какая же это загрузка?
StringGrid1.RowCount := 65536; и отрисовывать номер в OnDrawCell, а не создавать 65536 тысяч строк, в смысле string
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.043 c