RUS  ENG 

Мерцание при использовании файла темы.

Страницы: 1
RSS
Мерцание при использовании файла темы.
 
Доброго времени суток уважаемые знатоки! Возник вот такой вопрос. Пишу на делфи. Необходимо элементы выбранного слоя с определенными ключами по разному раскрашивать. Это я делаю так
var
th: Theme;
file_theme: string;
nd: PVirtualNode;
data: ^TStringList;
tmp_key, res: integer;
begin

th := CoTheme.Create();
file_theme := ChangeFileExt(Application.ExeName,'.ztm');
th.Create(file_theme,'тест',MapCtrl1.Map.Layers.Active.Name);
try
nd := VT.GetFirst();
while Assigned(nd) do
begin
data := VT.GetNodeData(nd);
if Assigned(data) and Assigned(data^) then
begin
tmp_key := Integer(data^.Objects[1]);
if tmp_key > 0 then
begin
res := vt_CaseTheme(VT_DB, data^.Strings[1]);
case res of
0: // к элементу привязана вся выделенная документация
begin
th.Parameter[tmp_key,eThemeLineColor] := clLime;
th.Parameter[tmp_key,eThemeBorderColor] := clLime;
end;
1: // к элементу привязана часть выделенной документации
begin
th.Parameter[tmp_key,eThemeLineColor] := clYellow;
th.Parameter[tmp_key,eThemeBorderColor] := clYellow;
end;
2: // к элементу из выделенной документации ничего не привязано
begin
th.Parameter[tmp_key,eThemeLineColor] := clRed;
th.Parameter[tmp_key,eThemeBorderColor] := clRed;
end;
end;
end;
end;
nd := VT.GetNext(nd);
end;
th.Save;
MapCtrl1.Map.Layers.Active.ThemeName := file_theme;
MapCtrl1.Redraw;
finally
th.Close;
end;
Все работает, но при изменении темы наблюдается мерцание. Такое ощущение, что перерисовка делается не один раз. Можно ли как-нибудь избавиться от этого? Заранее благодарен.
 
Выражение MapCtrl1.Map.Layers.Active.ThemeName := file_theme; итак должно вызвать перерисовку
Тогда MapCtrl1.Redraw; уже лишняя перерисовка
 
Спасибо за ответ. Убрал MapCtrl1.Redraw, но изменений практически не заметил.
 
Скачайте обновление. Кое-что сделал, но это уже будет все.
Страницы: 1