/// < since> /// . A função Application retorna a aplicação corrente. /// . A função Application será usada para compartilhar self de TApplication com todas classes filhas de Tview. /// . Caso a aplicação corrente não esteja em ambiente multitarefa a função deve retornar a ultima aplicação da lista. /// < /since> Function Application : TApplication;//TProgram; {$REGION '---> Declaração de variáveis locais'} var Session: TDSSession; var Index: Integer; var aObject : system.TObject; {$ENDREGION} BEGIN {$REGION '---> Se a lista de aplicações não foi inicializada retornar nil'} if Applications=nil then begin Result := nil; exit; end; {$ENDREGION} /// < since> /// . procura o Application associado a sessão do usuário. /// < /since> Session := TDSSessionManager.GetThreadSession; if (Session<>nil) then Begin {$REGION '---> O sistema está trabalhando em ambiente multitarefa com TDSSessionManager' } if Applications.Find(Session.SessionName,Index) Then Begin {$REGION '---> Localizou a sessão do usuário conectado.'} {$REGION '---> Calcula o resultado da função'} aObject := Applications.GetObject(Index); if aObject is TApplication then result := aObject as TApplication else result := nil; {$ENDREGION} {$REGION '---> Se a sessão não é válida a mesma deve ser destruída.'} if (Result<>nil) and (Not Session.IsValid) then Begin Result.Free; Result := nil; End; {$ENDREGION} {$ENDREGION} End else result := nil; {$ENDREGION} End else begin {$REGION '---> A aplicação não está em ambiente multitarefa com DSSessionManager ' } if Applications.Count>0 then begin /// < since> /// . Quando não está em ambiente multitarefa deve retornar a última aplicação da lista /// < /since> /// < since> /// . Pega a ultima tarefa /// < /since> aObject := Applications.GetObject(Applications.Count-1); if aObject is TApplication then result := aObject as TApplication else result := nil; end else Result := nil; {$ENDREGION} end; END;
Comentários
Postar um comentário