Показать сообщение отдельно
  #5  
Старый 05.12.2010, 11:43
3nick 3nick вне форума
Прохожий
 
Регистрация: 05.12.2010
Сообщения: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
все же еще проще. сообщение WM_QUERYENDSESSION вызывает событие OnCloseQuery. см. код:
Код:
unit Forms;

  TCustomForm = class(TScrollingWinControl)
  private
    procedure WMQueryEndSession(var Message: TWMQueryEndSession); message WM_QUERYENDSESSION;

procedure TCustomForm.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
  Message.Result := Integer(CloseQuery and CallTerminateProcs);
end;

function TCustomForm.CloseQuery: Boolean;
var
  I: Integer;
begin
  if FormStyle = fsMDIForm then
  begin
    Result := False;
    for I := 0 to MDIChildCount - 1 do
      if not MDIChildren[i].CloseQuery then Exit;
  end;
  Result := True;
  if Assigned(FOnCloseQuery) then FOnCloseQuery(Self, Result);
end;
тоже самое - не понял как сделать так чтобы форма не зависала.
например
begin
TCustomForm.create(Self);
//мой код
...
end.
таким образом форма зависнет и там не будет обрабатываться ссобщения вообще((
Ответить с цитированием