Delphi TStringGrid Мерцание - PullRequest
       37

Delphi TStringGrid Мерцание

9 голосов
/ 14 сентября 2010

Я добавляю несколько строк в сетку строк из файла CSV @ runtime, однако StringGrid, похоже, сильно мерцает, когда обновляется, я предполагал, что будет команда beginupadate / Endupdate, чтобы остановить это.Однако я не могу найти это.Есть ли другой способ остановить мерцание при обновлении идентификатора сетки.

Колин

Ответы [ 4 ]

16 голосов
/ 18 августа 2011

Лучше поздно, чем никогда ... Я использую WM_SETREDRAW. Например:

...
StringGrid1.Perform(WM_SETREDRAW, 0, 0);
try
  // StringGrid1 is populated with the data here 
finally
  StringGrid1.Perform(WM_SETREDRAW, 1, 0);
  StringGrid1.Invalidate; // important! to force repaint after all
end;
...
2 голосов
/ 15 сентября 2010

Да, в TStringgrid нет BeginUpdate / EndUpdate, но для каждой строки или столбца:

StringGrid1.Rows[0].BeginUpdate;
StringGrid1.Cols[0].BeginUpdate;

1 голос
/ 14 сентября 2010
Это методы объекта `TStrings`.Use StringGrid1.Rows [i] / Cols [i] .BeginUpdate;... StringGrid1.Rows [i] / Cols [i] .EndUpdate;

Обновление

Вы пытались установить DoubleBuffered := true?

0 голосов
/ 15 сентября 2010

Вы можете использовать функцию Windows LockWindowUpdate (AHandle), чтобы предотвратить обновление элемента управления, а затем LockWindowUpdate (0), чтобы перекрасить его.

Как ручку передайте Grid.Handle.

...