Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) recados


biakeffer

Pergunta

Oláaaaa....estou com uma duvida...tipo, estou fazendo um programa para anotações de recados e ai gostaria que toda vez que tivesse recado pra alguém subisse uma janelinha avisando que tem recado

eu já consegui o codigo pra fazer a janelinha subir...ta fucionando direitinho, porém só aparece quando eu clico no botão, gostaria que aparecece automaticamente quando tivesse um recado.

a janelinha subindo fiz assim:

procedure Tfrmcarregar.Button1Click(Sender: TObject);

var

I: Integer;

fAlertaMsn: TForm;

BarraIniciar: HWND; {Barra Iniciar}

tmAltura: Integer;

tmRect: TRect;

xTop : Integer;

xIniTop : Integer;

begin

//localiza o Handle da janela iniciar

BarraIniciar := FindWindow('Shell_TrayWnd', nil);

//Pega o "retângulo" que envolve a barra e sua altura

GetWindowRect(BarraIniciar, tmRect);

tmAltura := tmRect.Bottom - tmRect.Top;

fAlertaMsn := TForm3.Create(Self);

with fAlertaMsn do

begin

Left := Screen.Width - ClientWidth;

if tmRect.Top = -2 then

tmAltura := 30;

//Pega o top final

xTop := Screen.Height - ClientHeight - tmAltura;

//Pega o top inicial

xIniTop := Screen.Height + ClientHeight + tmAltura;

Top := xIniTop;

for I := xIniTop downto xTop do

begin

Top := Top - 1;

Show;

Update;

Application.ProcessMessages;

Sleep(10);

end;

Sleep(3000);

Close;

FreeAndNil(fAlertaMsn);

end;

end;

agora como faço pra ela aparecer automaticamente???tipo imagino que tenha que ter uma pesquisa e se tiver recado ela aparece e tal...mas não sei bem como vou fazer isso, onde vou colocar pra essa pesquisa ser feita, e como vou fazer pra ela ficar sendo executada sempre ou de tempo em tempo sei la..

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

Acho que voce poderia utilizar o componente TIMER do Delphi ( System/timer ) ,por exemplo,voce poderia programar este componente para cada 5 min ele realizar um rotina que checa se há novas mensagens.O timer é bom para isto.Voce chegou a pensar nele ?

De qualquer forma vamos aguardar alguém mais experiente para lhe auxiliar melhor

Abraços

Editado por Silva_henry
Link para o comentário
Compartilhar em outros sites

  • 0

O Timer seria como se fosse um relógio.

Ele possue a propriedade Interval,onde 1000 ms se não me engano é 1 segundo.

Voce poderia utilizar este componente e ir checando o tempo,e depois de um determinado intervalo definido por voce,ele realiza a checagem de novas mensagens para voce,provavelmente voce já deve ter esta função de checagem pronta.

Segue um link que fala sobre o timer,não cheguei a ler ,só uma olhada por cima pois estou no serviço,mas veja se ajuda em alguma coisa,esta no meio da pagina eu acho.>

http://www.geocities.com/WallStreet/Exchan...hi/delphi_3.htm

Abraços

Editado por Silva_henry
Link para o comentário
Compartilhar em outros sites

  • 0
O Timer seria como se fosse um relógio.

Ele possue a propriedade Interval,onde 1000 ms se não me engano é 1 segundo.

Voce poderia utilizar este componente e ir checando o tempo,e depois de um determinado intervalo definido por voce,ele realiza a checagem de novas mensagens para voce,provavelmente voce já deve ter esta função de checagem pronta.

Seguindo a idéia do nosso colega Silva, voce pode colocar o codigo dentro do timer

procedure TForm1.Timer1Timer(Sender: TObject);
var
   I: Integer;
   fAlertaMsn: TForm;
   BarraIniciar: HWND; {Barra Iniciar}
   tmAltura: Integer;
   tmRect: TRect;
   xTop : Integer;
   xIniTop : Integer;
begin
   //localiza o Handle da janela iniciar
   BarraIniciar := FindWindow('Shell_TrayWnd', nil);
   //Pega o "retângulo" que envolve a barra e sua altura
   GetWindowRect(BarraIniciar, tmRect);
   tmAltura := tmRect.Bottom - tmRect.Top;
   fAlertaMsn := TForm1.Create(Self);
   with fAlertaMsn do
      begin
         Left := Screen.Width - ClientWidth;
         if tmRect.Top = -2 then
            tmAltura := 30;
            //Pega o top final
            xTop := Screen.Height - ClientHeight - tmAltura;
            //Pega o top inicial
            xIniTop := Screen.Height + ClientHeight + tmAltura;
            Top := xIniTop;
            for I := xIniTop downto xTop do
               begin
                  Top := Top - 1;
                  Show;
                  Update;
                  Application.ProcessMessages;
                  Sleep(1);
               end;
            Sleep(3000);
            Close;
            FreeAndNil(fAlertaMsn);
      end;
end;

Neste sentido, voce deve complementar o codigo fazendo a pesquisa em sua tabela e mostrando o recado

Na propriedade interval do timer coloque 60000 = a 1 minuto.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Bia ... voce tambem pode tentar usar este componente

http://spreendigital.de/delphi/MagForm.zip

O MagneticForm é parecido com aqueles recadinhos em papel amarelo com cola que voce gruda em algum lugar. ( no caso será grudado na tela )

Como ele vem com o código fonte, se não funcionar na versão do delphi que está usando, basta corrigir o codigo e compilar novamente.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

biakeffer, tem também um componente freeware que funciona exatamente como aquelas janelinhas do messenger, inclusive empilhando elas caso ainda haja uma aberta. Chama-se TMSNPopUp.

Download neste neste link

Após você instalá-lo, ele estará disponível na paleta Custom criada por ele. Eu preferi mudar este local e, antes de instalá-lo, alterei o destino para a paleta Additional (já temos paletas demais).

Para mostra uma mensagem, basta utilizar a propriedade Text. A apresentação da janelinha é feita através do método ShowPopUp.

Um exemplo:

procedure TForm1.BtnMsgClick(Sender :TObject);
begin
  MSNPopUp1.Text := 'Mensagem apresentada na janela tipo lembretes do messenger no canto direito';
  MSNPopUp1.ShowPopUp;
end;

Há várias propriedades que podem ser utilizadas, como largura, altura, timeout (tempo antes que se feche), fundo gradiente e por aí vai. é só explorar.

Basta apenas um componente, para que vários lembretes possam ser abertos. Neste exemplo que postei, cada vez que você pressiona o botão, uma nova janela vai aparecendo empilhada na anterior.

Abraços

Editado por Micheus
Link para o comentário
Compartilhar em outros sites

  • 0

pessoal muitoo obrigada pela ajuda...consegui resolver utilizando o timer...agora preciso fazer com que clicando no form abra o recado mas não estou conseguindo por que quando aparece o form da mensagem fica tudo desabilitado...tentei colocar no evento ondblclik pra chamar a tela com o recado...tipo: frmrecado.show;

mas não deu certo e tipo quando eu clicar na caixa e ir para o recado teria que parar de ficar aparecendo a caixa com a mensagem

Link para o comentário
Compartilhar em outros sites

  • 0
agora preciso fazer com que clicando no form abra o recado mas não estou conseguindo por que quando aparece o form da mensagem fica tudo desabilitado...tentei colocar no evento ondblclik pra chamar a tela com o recado...tipo: frmrecado.show;

mas não deu certo e tipo quando eu clicar na caixa e ir para o recado teria que parar de ficar aparecendo a caixa com a mensagem

biakeffer, tem certeza que não vai preferir usar o componente que já faz tudo isto (e muito bem feitinho)?

Fica aqui um pequeno exemplo: TSTMSNPopup.zip

Abraços

Editado por Micheus
Link para o comentário
Compartilhar em outros sites

  • 0

ufaaaa....em fim eu consegui instalar os componente \o/

agora sim to usando o componente TSTMSNPopup...realmente ficou bem mais bonitinho e mais facil...só uma coisa...tem como eu fazer a janelinha ficar aparecendo e só sumir quando clicar nela?ao invez de ficar aparecendo e sumindo toda hora?

Link para o comentário
Compartilhar em outros sites

  • 0
..só uma coisa...tem como eu fazer a janelinha ficar aparecendo e só sumir quando clicar nela?ao invez de ficar aparecendo e sumindo toda hora?
esse povo... quanto mais tem, mais quer... :D

biakeffer, tem jeito sim.

Voce pode desabilitar na propriedade Options a opção msnAllowScroll, só que daí a janelinha vai aparecer de uma vez só.

Para que ela apareça "suavemente" mas não desapareça, o jeito será manter esta propriedade ativa e alterar a procedure abaixo, no código fonte do componente (MSNPopUp.pas). Depois eu vou dar uma avaliada melhor e ver se não podemos usar alguma propriedade para isto e passar ao criador do componente.

Procedure TfrmMSNPopUp.tmrExitTimer(Sender: TObject);
Begin
  // after several seconds, the popup window will disappear
  // add by Ahmed Hamed 20-3-2002
  tmrExit.Enabled       := False;
  tmrScrollDown.Enabled := False;  // <<==== AQUI troque o True por este False
  //
End;

Abraços e divirta-se. ;)

Link para o comentário
Compartilhar em outros sites

  • 0
O Timer seria como se fosse um relógio.

Ele possue a propriedade Interval,onde 1000 ms se não me engano é 1 segundo.

 

Voce poderia utilizar este componente e ir checando o tempo,e depois de um determinado intervalo definido por voce,ele realiza a checagem de novas mensagens para voce,provavelmente voce já deve ter esta função de checagem pronta.

 

Seguindo a idéia do nosso colega Silva, voce pode colocar o codigo dentro do timer

 

 

 
procedure TForm1.Timer1Timer(Sender: TObject);
var
   I: Integer;
   fAlertaMsn: TForm;
   BarraIniciar: HWND; {Barra Iniciar}
   tmAltura: Integer;
   tmRect: TRect;
   xTop : Integer;
   xIniTop : Integer;
begin
   //localiza o Handle da janela iniciar
   BarraIniciar := FindWindow('Shell_TrayWnd', nil);
   //Pega o "retângulo" que envolve a barra e sua altura
   GetWindowRect(BarraIniciar, tmRect);
   tmAltura := tmRect.Bottom - tmRect.Top;
   fAlertaMsn := TForm1.Create(Self);
   with fAlertaMsn do
      begin
         Left := Screen.Width - ClientWidth;
         if tmRect.Top = -2 then
            tmAltura := 30;
            //Pega o top final
            xTop := Screen.Height - ClientHeight - tmAltura;
            //Pega o top inicial
            xIniTop := Screen.Height + ClientHeight + tmAltura;
            Top := xIniTop;
            for I := xIniTop downto xTop do
               begin
                  Top := Top - 1;
                  Show;
                  Update;
                  Application.ProcessMessages;
                  Sleep(1);
               end;
            Sleep(3000);
            Close;
            FreeAndNil(fAlertaMsn);
      end;
end;

 

 

Neste sentido, voce deve complementar o codigo fazendo a pesquisa em sua tabela e mostrando o recado

 

Na propriedade interval do timer coloque 60000 = a 1 minuto.

 

abraço

 

E aonde eu passo as informações nesse procedimento, no caso as informações que desejo que apareça na janelinha?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...