Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
Сделать свой Application.ProcessMessage с фильтром на данное сообщение.
Примерно так можно сделать, хотя никто не мешает своё окно создать.
unit AsyncFreeRout;
interface
procedure AsyncFree(Instance: TObject);
implementation
uses
Messages, Windows, Forms;
const
WM_FREEOBJECT = WM_USER + 101;
type
TDummyClass = class
class function WndProc(var Message: TMessage): Boolean;
end;
class function TDummyClass.WndProc(var Message: TMessage): Boolean;
begin
Result := Message.Msg = WM_FREEOBJECT;
if Result then TObject(Message.lParam).Free;
end;
procedure AsyncFree(Instance: TObject);
begin
PostMessage(Application.Handle, WM_FREEOBJECT, 0, Integer(Instance));
end;
Спасибо за помощь. Я примерно так и предпологал сделать.
Но в моем случаи получается более сложный вариант описанный ниже, что приводит практически к невозможности решения проблемы, кроме одного - более сложного.
Сделать свой Application.ProcessMessage с фильтром на данное сообщение. Что я и собираюсь сделать.
Просто думал что могут быть другие варианты, окоторых я незнаю
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.