Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.28;
Скачать: CL | DM;

Вниз

Текст в ячейках 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.054 c
15-1167834056
Miau
2007-01-03 17:20
2007.01.28
Проблема с флэшками


2-1168713385
Влад
2007-01-13 21:36
2007.01.28
onMessage


15-1168445263
killmeplease
2007-01-10 19:07
2007.01.28
Что ж это такое?


1-1165392564
Yexel
2006-12-06 11:09
2007.01.28
Из двух зол (TStringGrid vs TDBGrid)?


3-1162973372
jiny
2006-11-08 11:09
2007.01.28
Ширина заголовка строки в DbCross (frxDbCrossObject)