OBJECT SET HELP TIP
OBJECT SET HELP TIP ( {* ;} objeto ; mensagemAjuda )
Parâmetro | Tipo | Descrição | |
---|---|---|---|
* | Operador | → | Se especificado, objeto é um nome de objeto (cadeia)Se omitido, objeto é uma variável |
objeto | any | → | Nome de objeto (se especificado *) ou Variável (se omitido *) |
mensagemAjuda | Text | → | Conteúdo da mensagem de Ajuda |
Esse comando não é seguro para thread e não pode ser usado em código adequado.
Descrição
O comando OBJECT SET HELP TIP permite definir ou modificar dinamicamente a mensagem de ajuda associado ao objeto ou aos objetos designados pelos parâmetros objeto e * para o processo atual.
Passa-se o parâmetro opcional *, indica que o parâmetro objeto é um nome de objeto (uma cadeia). Se não passa este parâmetro, isto indica que o parâmetro objeto é uma variável. Neste caso, se passa uma referencia de variável em lugar de uma cadeia.
Passe o conteúdo da mensagem no parâmetro mensagemAjuda. Pode passar:
- uma cadeia de caracteres, por exemplo "Utilize ele / como separador",
- uma cadeia vazia "" para eliminar o mensagem de ajuda,
Quando o formulário executa-se, as mensagens de ajuda aparecem como mensagens de ajuda quando o cursor passa sobre o campo de objeto. Os mensagens de ajuda também podem definir-se utilizando Tips delay e os seletores do comando SET DATABASE PARAMETER.
Quando aparece uma mensagem de ajuda, chamando ao comando OBJECT SET HELP TIP se fecha, abre uma nova mensagem no local do mouse e reinicia o contador Tips duration, permitindo o manejo dinâmico das sugestões.
Notas:
- O conteúdo da mensagem de ajuda também pode ser definida utilizando o editor de formulários (ver Controles de entrada de dados e ajuda de entrada) e o editor de estrutura (ver Propriedades Campo) em modo Desenho.
- Os conselhos de ajuda podem ser desativados globalmente para a aplicação utilizando o seletor Tips enabled do comando SET DATABASE PARAMETER.
Exemplo 1
Neste formulário, uma mensagem de ajuda se visualiza e muda dinamicamente quando o mouse passar sobre diferentes partes de um botão de imagem:
//Método objeto "myFlag"
var $x;$y;oldX;oldY : Real
var $left;$right;$top;$bottom : Real
var $b : Integer
var $tip : Text
var oldTip : Text
var $doRefresh : Boolean
Case of
:(FORM Event=On Load)
oldTip:=""
SET DATABASE PARAMETER(Tips enabled;1) //Para ter certeza que os conselhos estão habilitados
SET DATABASE PARAMETER(Tips delay;0) // Sugestão mostrada imediatamente ao deter o mouse
SET DATABASE PARAMETER(Tips duration;60*10) // 10 segundos máximo de visualização
:(FORM Event=On Mouse Move)
MOUSE POSITION($x;$y;$b)
OBJECT GET COORDINATES(*;"myFlag";$left;$top;$right;$bottom)
$x:=$x-$left
$y:=$y-$top
Case of //cada parte da bander é de 76 píxels
:($x<76)
$tip:="Green color"
:($x<152)
$tip:="White color"
Else
$tip:="Orange color"
End case
$doRefresh:=($tip#oldtip) //true se a mensagem for diferente
If(Not($doRefresh)) //os mesmos conteúdos
$doRefresh:=((Abs($x-oldX)>30)|(Abs($y-oldY)>30)) //true se mover o cursor
End if
If($doRefresh) //mostrar outra mensagem
OBJECT SET HELP TIP(*;"myFlag";$tip)
oldX:=$x
oldY:=$y
oldTip:=$tip
End if
End case
Exemplo 2
Se tiver um list box, "Commands List", que contenha uma lista e quiser definir uma mensagem de ajuda que mostre a descrição de cada elemento de lista. A descrição se encontra na tabela [Documentation].
var $mouseX;$mouseY;$mouseZ : Real
var $col;$row : Integer
Case of
:(FORM Event=On Mouse Enter)
SET DATABASE PARAMETER(Tips delay;1) // faz com que a mensagem apareça rapidamente
:(FORM Event=On Mouse Move)
//#1 : encontra a fila que se se moveu
MOUSE POSITION($mouseX;$mouseY;$mouseZ)
LISTBOX GET CELL POSITION(*;"Commands List";$mouseX;$mouseY;$col;$row)
//#2 : configure a mensagem de ajuda correspondente
If($row#0)
GOTO SELECTED RECORD([Documentation];$row)
OBJECT SET HELP TIP(*;"Commands List";[Documentation]Description) // A descrição completa se utilizará como "mensagem de ajuda" quando (se) o mouse deixar de se mover.
End if
:(FORM Event=On Mouse Leave)
SET DATABASE PARAMETER(Tips delay;3) // faz com que a mensagem apareça normalmente
End case
O resultado é...