Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Решение Проблемы Заморозки Forms в Windows 10: Delphi 10.2 Tokyo vs. Runtime Themes

Delphi , ОС и Железо , Windows

Вопрос пользователя заключается в том, что при работе с формой в Delphi 10.2 Tokyo, которая содержит TreeView, непрерывное скроллинг вверх и вниз приводит к замораживанию формы в операционной системе Windows 10. При этом, несмотря на неработоспособность элементов управления, события таймера продолжают обрабатываться, а клики по TreeView выполняются корректно. Отмечается, что проблема не наблюдается в Windows 7. Переключение фокуса на приложение путем Alt-Tab или возвращение к нему позволяет восстановить работоспособность формы.

Подтвержденный ответ:

Как указано в обновлении, отключение поддержки runtime-тем в настройках компиляции (Enable Runtime Themes) позволяет решить проблему. Это подтверждается сообщениями пользователей, которые сообщили о успешном устранении проблемы после внесения данной настройки в проект.

Альтернативный ответ:

Также было предложено использовать функцию DisableThemesApp, ссылка на которую приведена в контексте вопроса. Этот метод предполагает отключение тем в приложении во время выполнения, что также может помочь в решении проблемы.

Пример кода:

В коде, предоставленном пользователем, можно увидеть, как создается форма с TreeView и таймером, который обновляет содержимое TreeView каждые 2 секунды. Приведенный код можно использовать для воспроизведения проблемы.

unit Win10Freezing;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.ComCtrls;

type
  TWin10FreezingForm = class(TForm)
  private
    FTreeView: TTreeView;
    procedure TimerTimer(Sender: TObject);
    function HasASecondPassedSinceLastInput: Boolean;
  public
    constructor Create(AOwner: TComponent); override;
  end;

var
  Win10FreezingForm: TWin10FreezingForm;

implementation

{$R *.dfm}

constructor TWin10FreezingForm.Create(AOwner: TComponent);
begin
  inherited;
  Width := 355;
  Height := 355;
  FTreeView := TTreeView.Create(self);
  with FTreeView do
  begin
    Parent := self;
    Align := alClient;
  end;
  with TTimer.Create(self) do
  begin
    OnTimer := TimerTimer;
    Interval := 2000;
    Enabled := True;
  end;
  TimerTimer(self);
end;

procedure TWin10FreezingForm.TimerTimer(Sender: TObject);
var
  i: Integer;
begin
  // ...
  with FTreeView.Items do
  begin
    BeginUpdate;
    try
      Clear;
      for i := 0 to 30 + Random(10) do
        AddChild(nil, IntToStr(Random(100)));
    finally
      EndUpdate;
    end;
  end;
  // ...
end;

function TWin10FreezingForm.HasASecondPassedSinceLastInput: Boolean;
var
  lii: TLastInputInfo;
begin
  lii.cbSize := SizeOf(TLastInputInfo);
  Result := GetLastInputInfo(lii) and (GetTickCount - lii.dwTime > 1000);
end;

end.

Рекомендации по решению проблемы:

  1. Отключить поддержку runtime-тем в настройках компиляции.
  2. Использовать функцию DisableThemesApp для отключения тем во время выполнения приложения.
  3. При необходимости, рассмотреть возможность оптимизации обновления данных в TreeView, чтобы избежать конфликтов с другими операциями пользователя.

Заключение:

Проблема заморозки формы в Windows 10 при использовании Delphi 10.2 Tokyo может быть решена путем отключения runtime-тем. Это изменение в настройках компиляции приводит к устранению конфликтов, связанных с обновлением интерфейса пользователя в фоновом режиме. Пользователям, столкнувшимся с подобной проблемой, рекомендуется обратить внимание на эти рекомендации.

Создано по материалам из источника по ссылке.

Пользователь столкнулся с проблемой заморозки формы в Windows 10 при разработке на Delphi 10.2 Tokyo, которая решается отключением поддержки runtime-тем.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 11:28:56/0.0036261081695557/0