Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 29 мар 2024, 13:37

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Оптимизация перерисовок.
СообщениеДобавлено: 16 дек 2015, 12:54 
Не в сети

Зарегистрирован: 02 ноя 2012, 13:51
Сообщений: 241
Предлагаю такую оптимизацию

Код:
function TDBLookupDataEh.GetLookupValue: Variant;
var
  KeyValue: Variant;
begin
  Result := Null;
  if DataLink.Active and LookupListActive then
  begin
    DataSetGetFieldValues(DataLink.DataSet, KeyFields, KeyValue);
    if LookupCache then
      Result := FLookupListCache.ValueOfKey(KeyValue)
    else if (LookupDataSet <> nil) and LookupDataSet.Active and not VarIsNull(KeyValue) then  //SAMO
      Result := ListLink.DataSet.Lookup(LookupKeyFieldNames, KeyValue, LookupDisplayFieldName);
  end;
end;


Так, как искать в DataSet значение по KeyValue = Null бессмысленно, то можно этого не делать. Для FireDac это даёт существенную прибавку в скорости перерисовок (потому как из DisplayText вызывается). Для включённого LookupCache нужность этого тоже сомнительна.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB