Delphi TStringGrid Flicker
Я добавляю несколько строк в сетку строк из файла CSV @ runtime, однако StringGrid, похоже, много мигает, когда обновляется, я предполагал, что для этого будет команда beginupadate / Endupdate. Однако я не могу найти это. Есть ли другой способ остановить мерцание при обновлении идентификатора сетки.
Colin
4 ответа
Лучше поздно, чем никогда... Я пользуюсь 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;
...
Да, в TStringgrid нет BeginUpdate/EndUpdate, но есть для каждой строки или для столбца:
StringGrid1.Rows[0].BeginUpdate;
StringGrid1.Cols[0].BeginUpdate;
Обновить
Вы пытались установить DoubleBuffered := true
?
Вы можете использовать функцию Windows LockWindowUpdate(AHandle), чтобы предотвратить обновление элемента управления, а затем LockWindowUpdate(0), чтобы перекрасить его.
В качестве ручки передайте Grid.Handle.