Página 1 de 1

Criar uma função Alert()

Enviado: 23 Jul 2016 11:48
por rubens
Bom dia...

Se já tiver isso no Fórum me desculpem, não sabia nem como pesquisar isso...
Eu vi que é fácil usar a função wapi_messagebox(), daí queria que toda vez que eu chamasse no programa o alert() ele executasse a minha função e não a função nativa alert()
Tem como fazer isso? Daí não preciso mudar dentro dos prgs a chamada para a nova função...
Até pesquisei nos prgs todos os alerts, mas se fosse só alert() beleza trocava facinho mas tem os argumentos enviados junto com a função, daí não vi como alterar tudo de uma vez...

Obrigado
Rubens

Criar uma função Alert()

Enviado: 23 Jul 2016 12:09
por Toledo
Rubens, você pode usar a directive #command no início do PRG, por exemplo:

Código: Selecionar todos

#command Alert( <xMessage>, [<aOptions>], [<cColor>], [<nDelay>] ) => SuaAlert(<xMessage>, <aOptions>, <cColor>, <nDelay>)
Obs.: pode colocar o comando acima dentro de algum CH que você chama no início de cada PRG.

Abraços,

Criar uma função Alert()

Enviado: 23 Jul 2016 19:56
por fladimir
Aproveitando o gancho...

#command e #translate tem o mesmo efeito????

Criar uma função Alert()

Enviado: 24 Jul 2016 08:49
por Toledo
Acho que a única diferença entre estas duas directivas é que na #translate você pode alterar parte de uma declaração, já o #command tem que passar a declaração completa, como fiz no exemplo da minha mensagem anterior.

Por exemplo:

Código: Selecionar todos

#command Left( <cString>, <nCount> ) => SuaLeft( <cString>, <nCount> )

Código: Selecionar todos

#translate LEFT => RIGHT
Aqui todas as funções LEFT serão mudadas para RIGHT, independente dos parâmetros que a função LEFT tenha.

Obs.: mas a #translate também pode ser usada em uma declaração completa:

Código: Selecionar todos

#translate Left( <cString>, <nCount> ) => SuaLeft( <cString>, <nCount> )
Abraços,

Criar uma função Alert()

Enviado: 26 Jul 2016 09:39
por rubens
Bom dia...

Toledo o que tô fazendo de errado?

Código: Selecionar todos

#include "hbwin.ch"
#Command Alert( <xMessage>, [<aOptions>], [<cColor>], [<nDelay>] ) => Pergunta(<xMessage>, [<aOptions>],[<cColor>], [<nDelay>])		

REQUEST HB_GT_WVT_DEFAULT

FUNCTION MAIN
	ALERT(' TESTE ')
RETURN NIL 

********************************************************************************
FUNCTION PERGUNTA(cTexto)
wapi_MessageBox( wapi_GetActiveWindow(), cTexto, "Confirmacao" )
RETURN NIL
Continua aparecendo a telinha vermelha do Alert()...
Tentei com o Translate também e o alert continua aparecendo...

Obrigado
Rubens

Criar uma função Alert()

Enviado: 26 Jul 2016 11:35
por Jairo Maia
Olá Rubens,

É que o #command não está permutando a sequência porque não existe essa sequência em seus fontes. Também tenha em mente, que tanto o #define como o #command são Case Sensitives.

Pelo seu exemplo, troque o #command pelo #translate que não é Case Sensitive e teste dessa forma:

Código: Selecionar todos

#translate Alert => Pergunta
Veja se ajuda.

Criar uma função Alert()

Enviado: 26 Jul 2016 12:22
por Toledo
Amigos, o problema está no número de parâmetros passado na função ALERT(), se for passar apenas 1 parâmetro (Texto), então faça assim:

Código: Selecionar todos

#Command Alert( <xMessage> ) => Pergunta(<xMessage>)
Abraços,

Criar uma função Alert()

Enviado: 26 Jul 2016 14:43
por rubens
Agora sim Toledo... funcionou...

Jairo, eu já tinha percebido a questão do case sensitive, mas mesmo corrigindo não funcionou...

Agora é verificar os parâmetros que virão porque as vezes é só um ok, as vezes vem com opção sim-nao...

Obrigado
Rubens