Objeto App no Power Apps
Aplica-se a: Aplicações de tela Aplicações condicionadas por modelo
Fornece informações sobre a aplicação a ser atualmente executada e permite controlar o comportamento da mesma.
Descrição
Tal como um controlo, o objeto da Aplicação fornece propriedades que identificam qual o ecrã que está a ser apresentada e que pedem que o utilizador guarde alterações para que não sejam perdidas. Cada aplicação tem um objeto de Aplicação.
Pode escrever fórmulas para algumas propriedades do objeto de Aplicação. Na parte superior do painel Vista de árvore, selecione o objeto de Aplicação como faria com qualquer outro controlo ou ecrã. Veja e edite uma das propriedades do objeto selecionando-a na lista pendente à esquerda da barra de fórmulas.
Propriedade ActiveScreen
A propriedade ActiveScreen identifica o ecrã que está a ser mostrado.
Esta propriedade devolve um objeto de ecrã. Utilize-a para consultar propriedades do ecrã atualmente apresentado, como o nome com a fórmula App.ActiveScreen.Name. Também pode comparar esta propriedade com outro objeto de ecrã, tal como com a fórmula de comparação App.ActiveScreen = Screen2 para testar se Screen2 é o ecrã atualmente apresentado.
Utilize a função Back ou Navigate para alterar o ecrã que está a ser mostrado.
Propriedade BackEnabled
A propriedade BackEnabled muda a forma como a aplicação responde ao gesto de voltar do dispositivo (deslizar ou usar o botão Voltar do hardware em dispositivos Android, deslize da esquerda em dispositivos iOS) quando executado no Power Apps Mobile. Quando ativado, o gesto de voltar do dispositivo navega de volta para o ecrã que foi apresentado mais recentemente, o que é semelhante à fórmula Voltar. Quando desativado, o gesto de voltar do dispositivo retorna o utilizador para a lista de aplicações.
Propriedades ConfirmExit
Ninguém quer perder alterações não guardadas. Utilize as propriedades ConfirmExit e ConfirmExitMessage para avisar o utilizador antes de fecharem a sua aplicação.
Nota
- ConfirmExit não funciona em aplicações incorporadas no, por exemplo, Power BI e SharePoint.
- Atualmente, estas propriedades só podem referenciar controlos no primeiro ecrã se a funcionalidade de pré-visualização Carregamento atrasado estiver ativada (o que é predefinido para novas aplicações). Se forem efetuadas referências, o Power Apps Studio não mostra um erro, mas a aplicação publicada resultante não é aberta no Power Apps Mobile ou num browser. Estamos a trabalhar ativamente para levantar esta limitação. Entretanto, pode desativar Carregamento retardado em Definições>Funcionalidades futuras (em Pré-visualização).
ConfirmExit
ConfirmExit é uma propriedade Booleana que, quando true, abre uma caixa de diálogo de confirmação antes da aplicação ser fechada. Por predefinição, esta propriedade é false e não é apresentada qualquer caixa de diálogo.
Em situações em que o utilizador pode ter alterações não guardadas na aplicação, utilize esta propriedade para mostrar uma caixa de diálogo de confirmação antes de sair da aplicação. Utilize uma fórmula que possa verificar variáveis e propriedades de controlo (por exemplo, a propriedade Unsaved do controlo Edit form).
A caixa de diálogo de confirmação é apresentada em qualquer situação na qual haja a possibilidade de perder dados, como nos seguintes exemplos:
- Executar a função Exit.
- Se a aplicação estiver a ser executada num browser:
- Feche o browser ou o separador do browser no qual a aplicação está a ser executada.
- Selecionar o botão Anterior do browser.
- Executar a função Launch com um LaunchTarget de Self.
- Se a aplicação estiver em execução no Power Apps Mobile (iOS ou Android):
- Passar o dedo para mudar para uma aplicação diferente no Power Apps Mobile.
- Selecionar o botão Anterior num dispositivo Android.
- Executar a função Launch para lançar outra aplicação de tela.
A aparência exata da caixa de diálogo de confirmação poderá variar de acordo com os dispositivos e versões do Power Apps.
A caixa de diálogo de confirmação não aparece no Power Apps Studio.
ConfirmExitMessage
Por predefinição, a caixa de diálogo de confirmação mostra uma mensagem genérica, tal como "Poderá ter alterações não guardadas." no idioma do utilizador.
Utilize ConfirmExitMessage para fornecer uma mensagem personalizada na caixa de diálogo de confirmação. Se esta propriedade estiver em branco, é utilizado o valor predefinido. As mensagens personalizadas são truncadas conforme necessário para se ajustarem na caixa de diálogo de confirmação, para manter a mensagem a algumas linhas no máximo.
Num browser, a caixa de diálogo de confirmação poderá ser apresentada com uma mensagem genérica a partir do browser.
Nota
O objeto da aplicação tem mais duas propriedades, OnMessage
e BackEnabled
, que são experimentais. Estas propriedades serão removidas eventualmente do objeto da aplicação. Recomendamos que não utilize estas propriedades no seu ambiente de produção.
Exemplo
Crie uma aplicação que contenha dois controlos de formulário, AccountForm e ContactForm.
Defina a propriedade ConfirmExit do objeto da Aplicação para esta expressão:
AccountForm.Unsaved Or ContactForm.Unsaved
Esta caixa de diálogo é apresentada se o utilizador alterar dados em qualquer um dos formulários e, em seguida, tentar fechar a aplicação sem guardar essas alterações.
Defina a propriedade ConfirmExitMessage do objeto da Aplicação para esta fórmula:
If( AccountsForm.Unsaved, "Accounts form has unsaved changes.", "Contacts form has unsaved changes." )
Esta caixa de diálogo é apresentada se o utilizador alterar dados no formulário de conta e, em seguida, tentar fechar a aplicação sem guardar essas alterações.
Configurar a Chave de Instrumentação para o Application Insights
Para exportar os registos de aplicação gerados pelo sistema para o Application Insights, é necessário configurar a Chave de Instrumentação para a sua aplicação de tela.
- Abra a sua aplicação para edição no Power Apps Studio.
- Selecione o objeto da Aplicação na vista de árvore na navegação esquerda.
- Introduza a Chave de Instrumentação no painel de propriedades.
Se os dados não forem enviados para o App Insights, contacte o seu administrador do Power Platform e verifique se o App Insights está desativado a nível do inquilino.
Propriedade de fórmulas
Utilize fórmulas nomeadas, na propriedade Formulas, para definir uma fórmula que pode ser reutilizada em toda a aplicação.
No Power Apps, as fórmulas determinam o valor das propriedades de controlo. Por exemplo, para definir a cor de fundo de forma consistente numa aplicação, poderá definir a propriedade Fill para cada uma com uma fórmula comum:
Label1.Fill: ColorValue( Param( "BackgroundColor" ) )
Label2.Fill: ColorValue( Param( "BackgroundColor" ) )
Label3.Fill: ColorValue( Param( "BackgroundColor" ) )
Com muitos locais onde esta fórmula pode aparecer, torna-se chato e dado a erros atualizá-los a todos se for necessária uma alteração. Em vez disso, pode criar uma variável global em OnStart para definir a cor uma vez e, em seguida, reutilizar o valor em toda a aplicação:
App.OnStart: Set( BGColor, ColorValue( Param( "BackgroundColor" ) ) )
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
Embora este método seja melhor, também depende de OnStart em execução antes que o valor de BGColor seja estabelecido. BGColor também pode ser manipulado em algum canto da aplicação do qual o criador não está ciente, uma alteração efetuada por outra pessoa e que pode ser difícil de localizar.
As fórmulas nomeadas fornecem uma alternativa. Da mesma forma que escrevemos normalmente controlo-propriedade = expressão, podemos escrever nome = expressão e, em seguida, reutilizar o nome na nossa aplicação para substituir a expressão. As definições destas fórmulas são efetuadas na propriedade Formulas:
App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
As vantagens de utilizar fórmulas nomeadas incluem:
- O valor da fórmula está sempre disponível. Não existe dependência de tempo, nenhum OnStart que tenha de ser executado primeiro, antes de o valor ser definido, sem tempo em que o valor da fórmula seja incorreto. As fórmulas nomeadas podem referenciar-se umas às outras por qualquer ordem, desde que não criem uma referência circular. Podem ser calculadas em paralelo.
- O valor da fórmula está sempre atualizado. A fórmula pode efetuar um cálculo que dependa das propriedades de controlo ou dos registos da base de dados e, à medida que se altera, o valor da fórmula é atualizado automaticamente. Não necessita de atualizar manualmente o valor como faria com uma variável. E as fórmulas só serão recalculadas quando necessário.
- A definição da fórmula é imutável. A definição em Formulas é a única origem da verdade e o valor não pode ser alterado em qualquer outro local na aplicação. Com variáveis, é possível que algum código altere inesperadamente um valor, mas esta situação difícil de depurar não é possível com fórmulas nomeadas.
- É possível diferir o cálculo da fórmula. Uma vez que o seu valor é imutável, pode sempre ser calculado quando necessário, o que significa que não tem de ser calculado até que seja necessário. Os valores de fórmula que não são utilizados até que o ecrã2 de uma aplicação seja apresentado não precisam de ser calculados até que o ecrã2 seja visível. Adiar este trabalho pode melhorar o tempo de carregamento da aplicação. As fórmulas nomeadas são declarativas e fornecem oportunidades para o sistema otimizar como e quando são calculadas.
- As fórmulas nomeadas é um conceito do Excel. O Power Fx utiliza conceitos do Excel onde possível, uma vez que muitas pessoas conhecem bem o Excel. As fórmulas nomeadas são o equivalente a células nomeadas e fórmulas nomeadas no Excel, geridas com o Gestor de Nomes. Recalculam automaticamente, tal como as células de uma folha de cálculo e as propriedades de controlo.
São definidas fórmulas nomeadas, uma após a outra na propriedade Formulas, cada uma a terminar com um ponto e vírgula. O tipo de fórmula é inferido a partir dos tipos dos elementos dentro da fórmula e como são usados em conjunto. Por exemplo, estas fórmulas nomeadas podem obter informações úteis sobre o utilizador atual a partir do Dataverse:
UserEmail = User().Email;
UserInfo = LookUp( Users, 'Primary Email' = User().Email );
UserTitle = UserInfo.Title;
UserPhone = Switch( UserInfo.'Preferred Phone',
'Preferred Phone (Users)'.'Mobile Phone', UserInfo.'Mobile Phone',
UserInfo.'Main Phone' );
Se a fórmula para UserTitle precisar de ser atualizada, pode ser feito facilmente nesta localização. Se UserPhone não for necessário na aplicação, estas chamadas para a tabela Utilizadores no Dataverse não são feitas. Não existe penalização por incluir uma definição de fórmula que não esteja utilizada.
Algumas limitações de fórmulas nomeadas:
- Não podem utilizar funções de comportamento, nem causar efeitos colaterais na aplicação.
- Não podem criar uma referência circular. Não é permitido ter a = b; e b = a; na mesma aplicação.
Funções definidas pelo utilizador
Importante
- As funções definidas pelo utilizador são experimentais.
- As caraterísticas experimentais não se destinam à produção e podem não estar completas. Estas caraterísticas estão disponíveis antes do lançamento oficial, para que possa ter acesso antecipado e enviar comentários. Mais informações: Compreender caraterísticas experimentais, de pré-visualização e retiradas em aplicações de tela
- O comportamento descrito neste artigo só está disponível quando a caraterística experimental de funções definidas pelo utilizador em Definições > Próximas caraterísticas > Experimentais está ativada (está desativada por predefinição).
- O seu feedback é valioso para nós. Diga-nos o que pensa no fórum da comunidade de caraterísticas experimentais do Power Apps.
O Power Fx inclui uma longa lista de funções incorporadas, como If, Text e Set. As funções definidas pelo utilizador permitem que escreva as suas próprias funções que usam parâmetros e devolvem um valor, assim como as funções incorporadas. Pode pensar em funções definidas pelo utilizador como uma extensão para fórmulas nomeadas que adiciona parâmetros e oferece suporte a fórmulas de comportamento.
Por exemplo, pode definir uma fórmula nomeada que devolve livros de ficção de uma biblioteca:
Library = [ { Title: "The Hobbit", Author: "J. R. R. Tolkien", Genre: "Fiction" },
{ Title: "Oxford English Dictionary", Author: "Oxford University", Genre: "Reference" } ];
LibraryFiction = Filter( Library, Genre = "Fiction" );
Sem parâmetros, precisaríamos de definir fórmulas nomeadas separadas para cada género. Mas, em vez disso, vamos parametrizar a nossa fórmula nomeada:
LibraryType := Type( [ { Title: Text, Author: Text, Genre: Text } ] );
LibraryGenre( SelectedGenre: Text ): LibraryType = Filter( Library, Genre = SelectedGenre );
Agora, podemos chamar LibraryGenre( "Fiction" )
, LibraryGenre( "Reference" )
ou filtrar em outros géneros com uma única função definida pelo utilizador.
A sintaxe é:
FunctionName( [ ParameterName1: ParameterType1 [ , ParameterName2: ParameterType2 ... ] ] ) : ReturnType = Formula;
- FunctionName — Obrigatório. O nome da função definida pelo utilizador.
- ParameterName(s) – Opcional. O nome de um parâmetro da função.
- ParameterType(s) — Opcional. O nome de um tipo, seja um nome de tipo de dados incorporado, um nome de origem de dados ou um tipo definido com a função Type.
- ReturnType — Obrigatório. O tipo do valor de devolução da função.
- Formula – Obrigatório. A fórmula que calcula o valor da função com base nos parâmetros.
Cada parâmetro e a saída da função definida pelo utilizador têm de ser digitados. Neste exemplo, SelectedGenre: Text
define o primeiro parâmetro para que a nossa função seja do tipo Text e SelectedGenre
é o nome do parâmetro usado no corpo para a operação Filtrar. Consulte Tipos de dados para obter os nomes de tipo suportados. A função Type é usada para criar um tipo agregado para a nossa biblioteca, para que possamos devolver uma tabela de livros da nossa função.
Definimos LibraryType
como uma tabela plural do tipo de registos. Se quisermos passar um único livro para uma função, podemos extrair o tipo de registo para esta tabela com a função RecordOf:
BookType := Type( RecordOf( LibraryType ) );
IsGenre( Book: BookType, SelectedGenre: Text ): Boolean = (Book.Genre = SelectedGenre);
A correspondência de registos para parâmetros de função é mais apertada do que em outras partes do Power Fx. Os campos de um valor de registo têm de ser um subconjunto adequado da definição de tipo e não podem incluir campos adicionais. Por exemplo, IsGenre( { Title: "My Book", Published: 2001 }, "Fiction" )
resultará num erro.
Observe que a recursão ainda não é suportada por funções definidas pelo utilizador.
Funções de comportamento definidas pelo utilizador
As fórmulas nomeadas e a maioria das funções definidas pelo utilizador não suportam funções de comportamento com efeitos secundários, tais como Set ou Notify. Em geral, é melhor evitar a atualização do estado, se possível, confiando, em vez disso, em padrões de programação funcionais e permitindo que o Power Fx recalcule fórmulas automaticamente conforme necessário. Mas, há casos em que é inevitável. Para incluir a lógica de comportamento numa função definida pelo utilizador, envolva o corpo em chavetas:
Spend( Amount: Number ) : Void = {
If( Amount > Savings,
Error( $"{Amount} is more than available savings" ),
Set( Savings, Savings - Amount );
Set( Spent, Spent + Amount)
);
}
Agora, podemos chamar o Spend( 12 )
para verificar se temos 12 na nossa Poupanças e, em caso afirmativo, debitá-la por 12 e adicionar 12 à variável Gastos. O tipo de devolução desta função é Void, pois não devolve um valor.
A sintaxe de uma função de comportamento definida pelo utilizador é:
FunctionName( [ ParameterName1: ParameterType1 [ , ParameterName2: ParameterType2 ... ] ] ) : ReturnType = { Formula1 [ ; Formula2 ... ] };
- FunctionName — Obrigatório. O nome da função definida pelo utilizador.
- ParameterName(s) – Opcional. O nome de um parâmetro da função.
- ParameterType(s) — Opcional. O nome de um tipo, seja um nome de tipo de dados incorporado, um nome de origem de dados ou um tipo definido com a função Type.
- ReturnType — Obrigatório. O tipo do valor de devolução da função. Use Void se a função não devolver um valor.
- Fórmula(s) – Obrigatório. A fórmula que calcula o valor da função com base nos parâmetros.
Tal como acontece com todas as fórmulas do Power Fx, a execução não termina quando um erro é encontrado. Depois de a função Error ter sido chamada, a função If impede que as alterações em Poupança e Gastos aconteçam. A função IfError também pode ser usada para impedir a execução adicional após um erro. Mesmo que devolva Void, a fórmula ainda pode devolver um erro se houver um problema.
Tipos definidos pelo utilizador
Importante
- Os tipos definidos pelo utilizador são uma caraterística experimental.
- As caraterísticas experimentais não se destinam à produção e podem não estar completas. Estas caraterísticas estão disponíveis antes do lançamento oficial, para que possa ter acesso antecipado e enviar comentários. Mais informações: Compreender caraterísticas experimentais, de pré-visualização e retiradas em aplicações de tela
- O comportamento descrito neste artigo só está disponível quando a caraterística experimental de Tipos definidos pelo utilizador em Definições > Próximas caraterísticas > Experimentais está ativada (está desativada por predefinição).
- O seu feedback é valioso para nós. Diga-nos o que pensa no fórum da comunidade de caraterísticas experimentais do Power Apps.
As fórmulas nomeadas podem ser usadas com a função Type para criar tipos definidos pelo utilizador. Use :=
em vez de =
para definir um tipo definido pelo utilizador, por exemplo Book := Type( { Title: Text, Author: Text } )
. Consulte a função Type para obter mais informações e exemplos.
Propriedade OnError
Use OnError para agir quando ocorrer um erro em qualquer lugar da aplicação. Fornece uma oportunidade global para intercetar uma faixa de erro antes de ser apresentada ao utilizador final. Também pode ser utilizada para registar um erro com a função Trace ou escrever numa base de dados ou serviço Web.
Em Aplicações de tela, o resultado da avaliação de cada fórmula é verificado para detetar erros. Se encontrar um erro, OnError é avaliado com as mesmas variáveis de âmbito FirstError e AllErrors que teriam sido usados se a fórmula completa tivesse sido moldada numa função IfError.
Se OnError estiver vazio, é apresentada uma faixa de erro predefinda com a FirstError.Message do erro. A definição de uma fórmula OnError substitui este comportamento, o que permite ao criador tratar o relatório de erros conforme achar adequado. O comportamento predefinido pode ser solicitado em OnError, relançando o erro com a função Error. Utilize a abordagem de lançar novamente se alguns erros devem ser filtrados ou tratados de um modo diferente, enquanto outros devem ser transmitidos.
OnError não pode substituir um erro nos cálculos da mesma forma que IfError. Se OnError for invocado, o erro já ocorreu e já foi processado através de cálculos de fórmulas, como IfError; só relatório de erros de controlo OnError.
As fórmulas OnError são avaliadas em simultâneo e é possível que a avaliação das mesmas possa sobrepor-se ao processamento de outros erros. Por exemplo, se definir uma variável global para além de OnError e a ler posteriormente na mesma fórmula, o valor poderá ter sido alterado. Utilize a função With para criar um valor nomeado que seja local para a fórmula.
Embora cada erro seja processado individualmente por OnError, a faixa de erro predefinida poderá não aparecer para cada erro individualmente. Para evitar que sejam apresentadas demasiadas faixas de erro ao mesmo tempo, a mesmo faixa de erro não será apresentada novamente se tiver sido apresentada recentemente.
Exemplo
Considere um controlo Label e Slider que são mutuamente dependentes através da fórmula:
Label1.Text = 1/Slider1.Value
A predefinição do slider é 50. Se o slider for movido para 0, Label1 não mostrará nenhum valor e é apresentada uma faixa de erro:
Vamos ver o que ocorreu em detalhe:
- O utilizador moveu o slide para a esquerda e a propriedade Slide1.Value foi alterada para 0.
- Label1.Text foi novamente avaliado automaticamente. Ocorreu uma divisão por zero, gerando um erro.
- Não existe IfError nesta fórmula. O erro de divisão por zero é devolvido pela avaliação da fórmula.
- Label1.Text não pode mostrar nada para este erro, pelo que mostra um estado em branco.
- OnError é invocado. Visto que não existe nenhum processador, a faixa de erro padrão é mostrada com a informação do erro.
Se for necessário, também podemos modificar a fórmula para Label1.Text = IfError( 1/Slider1.Value, 0 )
. Utilizar IfError resultará num erro ou numa faixa de erro. Não podemos alterar o valor de um erro a partir de OnError, uma vez que nesse momento o erro já ocorreu, é apenas uma questão de como será reportado.
Se adicionarmos um processador OnError, este não tem impacto antes do passo 5, mas poderá afetar o forma como o erro é reportado:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" )
Com este processador OnError ativado, a partir da perspetiva do utilizador da aplicação, não ocorre nenhum erro. No entanto, o erro será adicionado ao rastreio do Monitor com a origem das informações de erro de FirstError:
Se também quiser que a mesma faixa de erro predefinida seja apresentada para além do rastreio, podemos relançar o erro com a função Error após a chamada Trace tal como se Trace não estivesse presente:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )
Propriedade OnStart
Nota
A utilização da propriedade OnStart pode causar problemas de desempenho ao carregar uma aplicação. Estamos no processo de criar alternativas para as duas principais razões para usar dados de caching de propriedade e configurar variáveis globais. Já criámos uma alternativa para definir o primeiro ecrã a ser mostrado com Navigate. Dependendo do seu contexto, esta propriedade pode ser desativada por predefinição. Se não a vir e precisar de a utilizar, ative as definições Avançadas da aplicação para a ativar. A propriedade OnVisible de um ecrã também pode ser usada. Por predefinição, quando a regra sem bloqueio OnStart está ativada, permite que a função OnStart seja executada simultaneamente com outras regras da aplicação. Portanto, se as variáveis referenciadas noutras regras de aplicação forem inicializadas dentro da função OnStart, podem não estar totalmente inicializadas ainda. Além disso, existe a possibilidade de que um ecrã possa compor e se tornar interativo antes que as funções Screen.OnVisible ou App.OnStart terminem de ser executadas, especialmente se demorarem muito tempo para serem concluídas.
A propriedade OnStart é executada quando o utilizador inicia a aplicação. Esta propriedade é frequentemente usada para executar as seguintes tarefas:
- Obter e armazenar em cache dados em coleções utilizando a função Collect.
- Configure variáveis globais com a função Set.
Esta fórmula é avaliada antes de aparecer o primeiro ecrã. Não é carregado nenhum ecrã, pelo que não é possível definir variáveis de contexto com a função UpdateContext. No entanto, pode transmitir variáveis de contexto com a função Navigate.
Depois de alterar a propriedade OnStart, teste-a passando com o rato por cima do objeto Aplicação no painel Vista de árvore, selecionando reticências (...), e depois Executar OnStart. Ao contrário de quando a aplicação é carregada pela primeira vez, as coleções e variáveis existentes já estarão definidas. Para começar com coleções vazias, utilize a função ClearCollect em vez da função Collect.
Nota
- A utilização da função Navigate na propriedade OnStart foi retirada. As aplicações existentes continuarão a funcionar. Durante um tempo limitado, ainda a pode ativar nas definições da aplicação (disponível em Desativado). No entanto, a utilização de Navigate desta forma pode levar a atrasos no carregamento da aplicação, uma vez que obriga o sistema a concluir a avaliação do OnStart antes de exibir o primeiro ecrã. Utilize a propriedade StartScreen para calcular o primeiro ecrã apresentado.
- O comutador descontinuado será desligado nas aplicações criadas antes de março de 2021, onde adicionou Navigate a OnStart entre março de 2021 e este momento. Quando editar essas aplicações Power Apps Studio, poderá ver um erro. Rode o comutador descontinuado para ativado para limpar este erro.
Propriedade StartScreen
A propriedade StartScreen determina qual o ecrã que será apresentado primeiro. É avaliado uma vez quando a aplicação é carregada e devolve o objeto do ecrã a ser exibido. Por predefinição, esta propriedade está vazia e o primeiro ecrã na vista Studio Tree é apresentado primeiro.
O StartScreen é uma propriedade do fluxo de dados que não pode conter funções de comportamento. Todas as funções de fluxo de dados estão disponíveis, em particular, utilizar estas funções e sinais para determinar qual o ecrã a mostrar primeiro:
- Função Param para ler parâmetros usados para iniciar a aplicação.
- Função User para ler informações sobre o utilizador atual.
- LookUp, Filter, CountRows, Max, e outras funções que se leem a partir de uma origem de dados.
- Qualquer API chama através de um conector, mas tenha cuidado para que volte rapidamente.
- Sinais como Ligação, Bússola e Aplicação.
Nota
Variáveis e coleções globais, incluindo as criadas no OnStart não estão disponíveis no StartScreen. As fórmulas nomeadas estão disponíveis e, geralmente, são uma alternativa melhor para a reutilização de fórmulas em toda a aplicação.
Se o StartScreen devolver um erro, o primeiro ecrã na vista Studio Tree será apresentado como se o StartScreen não tivesse sido definido. Utilize a função IfError para apanhar quaisquer erros e redirecione para um ecrã de erro apropriado.
Depois de alterar o StartScreen no Studio, teste-o passando com o rato por cima do objeto Aplicação no painel Vista de árvore, selecionando as reticências (...), e depois Navigar para StartScreen. O ecrã mudará como se a aplicação tivesse acabada de carregar.
Exemplos
Screen9
Indica que o Screen9
deve ser mostrado primeiro sempre que a aplicação começa.
If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )
Verifica se o "modo de administração" Param foi definido pelo utilizador e utiliza-o para decidir se o HomeScreen ou o AdminScreen devem ser apresentados primeiro.
If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )
Verifica se um participante numa conferência é membro do staff e direciona-o para o ecrã adequado no arranque.
IfError( If( CustomConnector.APICall() = "Forest",
ForestScreen,
OceanScreen
),
ErrorScreen
)
Direciona a aplicação com base numa chamada à API para o ForestScreen
ou o OceanScreen
. Se a API falhar por qualquer motivo, é utilizado o ErrorScreen
.
Propriedade StudioVersion
Use a propriedade StudioVersion para apresentar ou registar a versão do Power Apps Studio que foi usada para publicar uma aplicação. Isto pode ser útil ao depurar e para garantir que a sua aplicação foi republicada com uma versão recente do Power Apps Studio.
StudioVersion é devolvido como texto. O formato do texto pode mudar ao longo do tempo e deve ser tratado como um todo; evite extrair porções individuais.