Login:

iMasters | Por uma internet mais criativa e dinâmica

Feeds

V. FoxPro

Feed da seção V. FoxPro

Newsletter de V. FoxPro

Patrocínio:

Quinta-feira, 01/03/2007 - 09:20 - Por Fabiano Costa
Seções relacionadas:

Criando mensagens para os usuários

É sempre assim. Basta a Microsoft fazer a revisão do layout dos seus produtos e todos os clientes começam a pedir nossos sistemas neste mesmo perfil achando que montar o layout de uma aplicação pode ser feito rapidamente.

Algumas novas funcionalidades são muito interessantes, como aquele pequeno aviso de novo e-mail do Outlook. Discreto e ao mesmo tempo informativo ele pode ser muito útil em vários momentos do nosso sistema. Para termos um processo semelhante podemos usar uma função presente na API do Windows chamada SetLayeredWindowAttributes que permite alterar a transparência de uma form, dando o efeito aparecer/desaparecer semelhante ao do Outlook.

Observe o fonte para criarmos este efeito:

alerta=CREATEOBJECT("alerta")
alerta.mensagem("O backup foi realizado com sucesso.")

DEFINE CLASS alerta AS form
	Height = 120
	Width = 375
	ShowWindow = 2
	BorderStyle = 0
	Caption = ""
	TitleBar = 0
	AlwaysOnTop = .T.
	BackColor = RGB(14,173,241)
	Name = "alerta"

	ADD OBJECT edtmensagem AS editbox WITH ;
		FontSize = 20, ;
		Alignment = 2, ;
		BackStyle = 0, ;
		BorderStyle = 0, ;
		Height = 103, ;
		Left = 2, ;
		ScrollBars = 0, ;
		Top = 3, ;
		Width = 370, ;
		IntegralHeight = .T., ;
		Name = "edtmensagem"


	PROCEDURE visualizar
		PARAMETERS m.lnAção as Integer 
		LOCAL m.lnInicio as Integer, m.lnFim as Integer, m.lnStep as Integer 
		m.lnInicio=IIF(m.lnAção=1,10,255)
		m.lnFim=IIF(m.lnAção=1,255,0)
		m.lnStep=IIF(m.lnAção=1,10,-10)
		FOR m.loop1=m.lnInicio TO m.lnFim STEP m.lnStep
			INKEY(.01,"H")
			_Sol_SetLayeredWindowAttributes(THISFORM.hWnd, 0, m.loop1, 2)
		ENDFOR
	ENDPROC


	PROCEDURE mensagem
		PARAMETERS m.lcmensagem
		thisform.edtmensagem.Value=m.lcmensagem
		thisform.Visible=.t.
		_Sol_SetLayeredWindowAttributes(THISFORM.hWnd, 0, 10, 2)
		thisform.visualizar(1)
		INKEY(2)
		thisform.visualizar(0)
		_Sol_SetLayeredWindowAttributes(THISFORM.hWnd, 0, 0, 2)
		thisform.Visible=.f.
	ENDPROC


	PROCEDURE Init
		zoom window alerta max
		m.lnHeight=this.Height
		m.lnWitdh=this.Width 
		zoom window alerta normal
		this.left=m.lnWitdh-375-10
		this.top=m.lnHeight-120+20
		DECLARE SetWindowLong In Win32Api AS _Sol_SetWindowLong Integer, Integer, Integer
		DECLARE SetLayeredWindowAttributes In Win32Api AS _Sol_SetLayeredWindowAttributes Integer, String, Integer, Integer
		_Sol_SetWindowLong(THISFORM.hWnd, -20, 0x00080000)
		_Sol_SetLayeredWindowAttributes(THISFORM.hWnd, 0, 0, 2)
	ENDPROC


ENDDEFINE

Note que o mais importante pode ser encontrado no procedimento visualizar que contém o código necessário para o efeito proposto.

A forma com que você desejar programar este processo pode ser das mais variadas, mas uma das melhores é criar um pequeno executável que passe como parâmetro a informação que deseja informar ao usuário, pois assim o trabalho normal do software não será interrompido, caso contrário, pela falta de execução simultânea do VFP, o usuário não poderia utilizar nada até a mensagem ser apagada.

Bom divertimento.

Todos os artigos de Fabiano Costa

4 comentários publicados

  • 1. Correção

    Quinta-feira, 01/03/2007, por Paulo Henrique Almeida

    Olha eu aqui de novo... Nós também temos uma janela de aviso parecida com a sua. Mas você não precisa criar um exe para funcionar paralelo a sua aplicação: basta estar setada como 'ShowWindow' = 'as top level' e ser chamada com DO FORM nome_do_form. Outra solução para mensagens como esta é usar uma classe que coloca sua aplicação em Vfp no Systray, e que tenha funções de mensagens naqueles balões amarelos...
    Já existe uma classe nativa a partir do Vfp 8, que se encontra em ...\microsoft Visual Foxpro 9\Samples\Soluction\Toledo\Systray.vcx
    . É uma boa alternativa, além de ser mais leve do que um form com efeitos de transparencia.
    Abraços Fabiano!

    Responder comentário
  • 2. Obrigado

    Quinta-feira, 01/03/2007, por Fabiano Costa

    Obrigado pelos comentários. Observe que como é uma mensagem que leva cerca de 10 a 15 segundos para ser visualizada e removida, este ciclo faz com que outras rotinas não possam ser executadas, pois existe um loop for na mesma. Por isso a questão de outro exe. A forma mais simples e leve de fazer uma comentário para o usuário também acho que é o messagebox :). Mas a questão que desejei abordar é que muitos reclamam que um software tem isso ou aquilo e no fox não tem. Na verdade tem, basta arregaçar as mangas.

    Responder comentário
  • 3. Uso API

    Terça-feira, 27/03/2007, por Jean-Luc Steylaerts

    Gostei do exemplo, principalmente porque mostra o uso de APIs do Windows, assunto que sou iniciante ainda, só me pergunto onde você consegue as informações sobre APIs do Windows e o significado de seus parâmetros.

    Responder comentário
  • 4. Segue link

    Terça-feira, 27/03/2007, por Fabiano Costa

    Obrigado pelo comentário.
    Esta documentação é direcionada para o Visual Fox Pro, mas como o VFP tem uma sintaxe muito clara, você pode usa-la para qualquer linguagem: http://www.news2news.com/vfp/index.php

    Responder comentário

Poste um comentário


Os textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.

Sobre o autor

Fabiano Costa é consultor e trabalha com Fox Pro a mais de 13 anos.


Indique para um amigo

captcha

TI SHOP Produtos iMasters

  • Lançamento: CD-ROM Treinamento Aplicado de SQL - Lançamento! Treinamento Aplicado de SQL - Aprenda a trabalhar com SQL com bancos de dados Oracle e SQL Server. São mais de 100 tópicos explicados por Mauro Pichilliani, um articulistas mais lidos do iMasters. Aproveite! Apenas R$ 69,90 no TI SHOP.
  • Lançamento: Livro iMasters "O Encontro de 2 Mundos"- Este livro conta com 56 crônicas de profissionais mais admirados e influentes do mercado brasileiro de Internet. Aproveite o preço especial para leitores do iMasters. Apenas R$ 40,00 e envio imediato!
  • DVD Curso Completo de Photoshop - Do conceito à finalização Lançamento! Curso Completo de Photoshop, em DVD, com mais de 230 aulas dividas em 4 módulos: conceito, básico, avançado e finalização. Apenas R$ 69,50 no TI SHOP - Frete com 50% de desconto
  • DVD Javascript Starter - Curso Completo Com mais de 9 horas de vídeo-aulas, é um curso completo sobre Javascript. Ideal para quem deseja aprender a linguagem. Apenas R$ 64,90 no TI SHOP - Frete com 50% de desconto!

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.