Перейти к содержанию
Fire Monkey от А до Я

Лидеры

  1. Евгений Корепов

    Евгений Корепов

    Пользователи


    • Баллы

      2

    • Постов

      738


  2. Freezer_86

    Freezer_86

    Пользователи


    • Баллы

      2

    • Постов

      8


  3. GASCHE

    GASCHE

    Пользователи


    • Баллы

      1

    • Постов

      208


  4. Euvene

    Euvene

    Пользователи


    • Баллы

      1

    • Постов

      12


Популярный контент

Показан контент с высокой репутацией 28.12.2017 во всех областях

  1. Если вы понаблюдаете дальше, то обнаружите что выполняется гораздо больше раз. Попробуйте к примеру повернуть устройство горизонтально, потом опять вертикально - еще пара выполнений. OnUpdateObjects и OnUpdatingObjects выполняется постоянно - при изменении размеров, скрытии и повторном показе, переключении приложений и т.д. В справке так и написано "Occurs immediately after the list view component is updated." Так что надо придерживаться двух правил : 1. При добавлении/изменении TListViewItem отключайте обработку вышеуказанных процедур. Setting.Flags.ListViewUpdating:=True; // Глобальная переменная или ListView.OnUpdatingObjects:=nil; AItem:=ListView.Items.Add; AItem.Data['Type']:='MySuperPuperItem'; AItem.Data['Name']:=AName; AItem.Data['Value']:=AValue; Setting.Flags.ListViewUpdating:=False; // Глобальная переменная или ListView.OnUpdatingObjects:=ListViewUpdatingObjects; AItem.Adapter.ResetView(AItem); // принудительно вызываем ListViewUpdatingObjects ... procedure TFormMain.ListViewUpdatingObjects(const Sender: TObject; const AItem: TListViewItem; var AHandled: Boolean); begin if Setting.Flags.ListViewUpdating then // Если используете глобальную переменную Exit; ... 2. Внутри OnUpdateObjects и OnUpdatingObjects при добавлении TListItemText и прочих элементов, проверяйте их существование, возможно они уже были добавлены вашим кодом ранее.
    2 балла
  2. Freezer_86

    WebBrowser + ComboBox = ошибка ?

    Это не очень относиться к теме но оставлю это здесь, вдруг кому пригодиться. В моей задаче нужно было еще отслеживать на какой странице находиться пользователь, а как оказалось свойство URL тоже работает некорректно. Пришлось "накостылять" следующее: В WebBrowser.Android.pas добавляем: function TAndroidWebBrowserService.originalUrl: string; begin if FJWebBrowser = nil then Result := FURL else Result := JStringToString(FJWebBrowser.getOriginalUrl); end; В WebBrowser.Win.pas добавляем: function TWindowsWebBrowserService.LocationUrl: string; begin Result := FUrl; if FInstance <> nil then Result := FInstance.LocationURL; end; В WebBrowser.pas изменим: function TKCustomWebBrowser.GetURL: string; begin if (csDesigning in ComponentState) or (FWeb = nil) then Result := FURL else {$IFDEF MSWINDOWS} Result := (FWeb as TWinWBMediator).WB.LocationUrl; {$ELSE} Result := (FWeb as TAndroidWebBrowserService).originalUrl {$ENDIF} end; Как результат - корректная работа панели навигации.
    1 балл
  3. Freezer_86

    WebBrowser + ComboBox = ошибка ?

    Натыкался на такую проблему, смог обойти написанием своей копией TWebBrowser. Основное изменение для обхода именно ошибки с CoboBox'ом это в начале процедуры TCustomWebBrowser.FormHandleCreated вставкой кода: {$IFDEF MSWINDOWS} exit; {$ENDIF} После этого никаких проблем с пересозданием. Правда у меня все браузера создаются в Runtime. Не знаю или это подойдет для нормальной работы с загрузкой из DFM.
    1 балл
  4. GASCHE

    Canvas,

    Application.ProcessMessages; Это костыль для решения вашей проблемы, я бы вместо panel.Repaint; очищал так panel.Canvas.Clear(TAlphaColorRec.White); Тогда Application.ProcessMessages не нужен.
    1 балл
  5. 1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...