Como criar um assistente de preenchimento automático em Power Apps / Power Platform
Este tutorial ensina a criar um assistente de preenchimento automático em Power Apps / Power Platform que sugere valores enquanto o utilizador escreve. É útil para acelerar a introdução de dados, reduzir erros tipográficos e melhorar a experiência do utilizador em formulários ou pesquisas.
Pré-requisitos
- Conta com acesso ao Power Apps.
- Uma fonte de dados simples: lista do SharePoint, Excel no OneDrive ou Dataverse com a coluna a sugerir.
- Conhecimentos básicos de Canvas Apps: galerias, Text Input e funções Filter/StartsWith.
Passo 1: Preparar a fonte de dados
Escolha ou crie uma fonte de dados com os valores a sugerir. Por exemplo, uma lista do SharePoint chamada "Produtos" com a coluna "Title" contendo nomes de produtos. Ter dados limpos facilita as sugestões.
// Exemplo de itens (na prática estão na lista do SharePoint ou Excel) // Title
// Monitor 24"
// Teclado Mecânico
// Rato Óptico
// Monitor 27"
Passo 2: Criar um Canvas App e ligar a fonte de dados
Abra o Power Apps Studio, crie um Canvas App (Tablet ou Phone) e adicione a fonte de dados escolhida a partir do painel Data.
Data sources -> Add data -> SharePoint -> selecionar site -> Produtos
Passo 3: Adicionar controlo Text Input para digitação
Insira um controlo Text input e defina o seu Name para txtSearch. Este será o campo onde o utilizador escreve e que dispara as sugestões.
// Propriedades principais
Name: txtSearch
HintText: "Pesquisar produto..."
Passo 4: Adicionar uma galeria para apresentar sugestões
Insira uma Gallery (vertical, sem cabeçalho) abaixo de txtSearch. Configure-a para mostrar apenas as sugestões filtradas da fonte de dados, usando StartsWith ou Filter para correspondência.
// Propriedade Items da Gallery (chamada galSuggestions)
Items:
If(
IsBlank(txtSearch.Text),
[],
FirstN(
Filter(Produtos, StartsWith(Title, txtSearch.Text)),
10
)
)
// TemplateLabel.Text: ThisItem.Title
Passo 5: Permitir seleção e preencher o campo
No template da galeria, adicione um botão ou torne o próprio template clicável. Ao selecionar um item, atualize txtSearch.Text com o valor escolhido e esconda as sugestões (por exemplo, limpar a galeria).
// OnSelect do template (ou botão dentro do template)
Set(varSelected, ThisItem.Title);
UpdateContext({showSuggestions: false});
Reset(txtSearch);
// Preencher o campo de destino se existir outro campo, por exemplo txtChosen
txtSearch.Text := varSelected
// Em Canvas Apps, para forçar atribuição use:
// Set(varChosen, ThisItem.Title)
Nota: Text input Text é uma propriedade de leitura no runtime — em vez de atribuir a Text diretamente, use uma variável para ligar o valor mostrado. Por exemplo defina Default do txtSearch como varChosen.
// Default do txtSearch
Default: If(IsBlank(varChosen), "", varChosen)
Passo 6: Melhorar a experiência (debounce e mostrar/ocultar)
Para evitar muitos filtros enquanto o utilizador escreve, use um temporizador (Timer) para aplicar um pequeno atraso (debounce). Mostrar/ocultar a galeria com uma variável torna a interação mais limpa.
// Adicionar um Timer (Name: tmrDebounce)
Duration: 400 // 400 ms
AutoStart: false
Repeat: false
// OnChange do txtSearch
UpdateContext({showSuggestions: true});
Reset(tmrDebounce); Start(tmrDebounce);
// OnTimerEnd do tmrDebounce (faz o filtro ao terminar)
// Forçar refresh da Galeria ao terminar (a Items já usa txtSearch.Text)
UpdateContext({doFilterToggle: !doFilterToggle});
Passo 7: Tratar erros e otimizar
Erros comuns: usar Filter em grandes fontes de dados sem delegação. Para listas grandes, prefira funções delegáveis (StartsWith é delegável no SharePoint para texto). Se a fonte for maior que os limites de delegação, considere índices, vistas filtradas no servidor ou usar Azure Functions/Custom Connector.
// Exemplo de fallback para grandes volumes
Items:
If(CountRows(Produtos) < 2000,
Filter(Produtos, StartsWith(Title, txtSearch.Text)),
FirstN( Filter(Produtos, StartsWith(Title, txtSearch.Text)), 100 )
)
Verificar o resultado
Testar a app: escreva no txtSearch e verifique se a galeria mostra sugestões relevantes em tempo real. Seleccione uma sugestão e confirme que o campo principal recebe o valor. Verifique também comportamentos para termos inexistentes e para entradas vazias.
Conclusão
Agora tem um assistente de preenchimento automático funcional em Power Apps / Power Platform que melhora a rapidez e qualidade dos dados. Próximos passos: adicionar ordenação por relevância, destacar o texto correspondente nas sugestões ou integrar com Dataverse para lógica mais avançada. Dica: experimente ajustar o Duration do Timer para equilibrar rapidez e número de chamadas delegadas.