Como fazer backup de um atalho SetKey via AdvPL

No artigo de hoje, vamos mostrar 2 formas de fazer um backup das teclas de atalho via AdvPL.

Imagine um cenário, onde você irá definir alguns atalhos customizados para os usuários, através da rotina SetKey. Dessa forma você consegue configurar F4, Shift F5, Ctrl L, entre tantas outras combinações.

Porém se já existisse um atalho configurado na memória, e com o seu sobrepondo, ao acabar sua customização, nós devemos voltar o atalho que estava.

Para isso, existem duas formas mais conhecidas que vamos relatar abaixo.

 

Forma 1 – Manualmente

Quando acionamos a SetKey, ela devolve pra gente o atalho que estava em memória antes de ser trocado.

Então a lógica para esse caso é:

  1. Acionar a SetKey e armazenar o backup em uma variável
  2. Depois voltar o backup também com SetKey

 

Abaixo então um exemplo:

//Define o atalho F5 e guarda o backup
bBkpF5 := SetKey(VK_F5, {|| Alert("Sua função")})

// ... suas customizações ...

//Volta o backup do atalho que foi alterado
SetKey(VK_F5, bBkpF5)

Forma 2 – Restaurando através da GetKeys e RestKeys

Essa segunda forma, tem uma vantagem e uma desvantagem com relação a anterior. A vantagem, é que ela faz o backup de vários atalhos, do F1 ao F12, e assim também pode restaurar eles.

Mas a desvantagem, é que se tiver atalhos específicos como Shift+F5 ou Ctrl+L, ela não funcionará.

A lógica então para usar é a seguinte:

  1. Fazer um backup usando a função GetKeys
  2. Definir seu atalho com SetKey
  3. Resturar o backup usando a RestKeys

 

Abaixo um exemplo:

//Busca os atalhos em memória
aAtalhos := GetKeys()

//Define um atalho qualquer
SetKey(VK_F5, {|| Alert("Sua função")})

//Retorna os atalhos que estavam antes em memória
RestKeys(aAtalhos)

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação