IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Fenetre popup à la MSN


Sujet :

Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut Fenetre popup à la MSN
    Bonjour,

    je cherche à reproduire le même affichage que lorsqu'un de mes contact se
    connecte sur MSN, vous savez la petite fenetre qui monte en bas à droite et puis quelques secondes ensuite disparait à moins de
    cliquer dessus.

    j'ai fait un truc :
    Dans ma form principal j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ....
          with TAlerte.Create(Self) do
          try
             Show;
          finally
            Free;
          end;
    ....
    et dans la petite fenetre qui doit apparaitre dans le OnShow j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    procedure  TAlerte.FormShow(Sender: TObject);
    begin
       Left:=Screen.WorkAreaWidth-Width;
      Top:=Screen.WorkAreaHeight+Height;
       while Top<>Screen.WorkAreaHeight-Height do
      Begin
         Top:=Top-1;
        sleep(10);
      End;
     
       TimerAlert.Enabled:=True;
    end;
     
    procedure TAlerte.Timer1Timer(Sender:  TObject);
    begin
      while Top<>Screen.WorkAreaHeight+Height do
       Begin
        Top:=Top+1;
        sleep(10);
      End;
       close;
    end;


    Mais hélas cela ne fonctionne pas, mon appli n'affiche pas la deuxieme form
    ???
    mon TimerAlert est reglé à 10000ms donc je devrait au moins la voir non ?

    Avez vous une solution un peu plus pro svp ?

    Merci à tous de votre aide.

    Bruno

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Tu fais un Show qui n'est pas blocant donc ca passe direct sur le free
    Essai avec ShowModal
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    oui, je m'en suis aperçu maintenant.
    Par contre une chose, j'ai bien l'affichage de la boite d'alerte mais uniquement lorsque celle-ci à fini de se positionner.

    une idée de mon erreur ?
    Est-ce bien dans le onShow que je dois mettre l'affichage de celle-ci qui monte ?

    Bruno

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ....
          with TAlerte.Create(Self) do
          try
             Show;
          finally
            Free;
          end;
    ....
    et dans la petite fenetre qui doit apparaitre dans le OnShow j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    procedure  TAlerte.FormShow(Sender: TObject);
    begin
       Left:=Screen.WorkAreaWidth-Width;
      Top:=Screen.WorkAreaHeight+Height;
       while Top<>Screen.WorkAreaHeight-Height do
      Begin
         Top:=Top-1;
         Application.processMessages;
        sleep(10);
      End;
    
       TimerAlert.Enabled:=True;
    end;
    
    procedure TAlerte.Timer1Timer(Sender:  TObject);
    begin
      while Top<>Screen.WorkAreaHeight+Height do
       Begin
        Top:=Top+1;
        Application.processMessages;
        sleep(10);
      End;
       close;
    end;

    Voir en rouge dans le code
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    Hélas, ma fenêtre popup arrive toujours d'un seul coup, cela n'a rien changé :'(

    une autre idée ?

    En tout cas merci pour ton aide précieuse.

    Bruno

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    C'est normal qu'elle apparaisse d'un seul coup puisque tu utilises l'événement onshow. Il faut savoir que c'est uniquement à la fin du onshow que la propriété visible de la fiche prend la valeur true.

    Je te conseille donc d'utiliser également l'événement onActivate par exemple de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure  TAlerte.FormShow(Sender: TObject);
    begin
      Left:=Screen.WorkAreaWidth-Width;
      Top:=Screen.WorkAreaHeight+Height;
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TAlerte.FormActivate(Sender: TObject);
    begin
      while Top<>Screen.WorkAreaHeight-Height do
      Begin
         Top:=Top-1;
         Application.processMessages;
         sleep(10);
      End;
      TimerAlert.Enabled:=True;
    end;
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

  7. #7
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 416
    Points : 5 814
    Points
    5 814
    Par défaut
    salut

    la fenettre de message est un tooltips

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  8. #8
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Encore mieux je te donne une version correcte de la chose:

    Donc lancer l'alerte par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     with TAlerte.Create(Self)
        do show;
    Puis dans l'unité Alerte

    Place un timer sur la fiche Alerte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    procedure TAlerte.FormCreate(Sender: TObject);
    begin
      Left:=Screen.WorkAreaWidth-Width;
      Top:=Screen.WorkAreaHeight+Height;
      Timer1.Interval := 10000;
      Timer1.Enabled := False;
    end;
     
    procedure TAlerte.FormActivate(Sender: TObject);
    begin
      while Top<>Screen.WorkAreaHeight-Height 
        do Top:=Top-1;
      timer1.Enabled := true;
    end;
     
    procedure TAlerte.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      try
        while Top<>Screen.WorkAreaHeight+Height
          do Top:=Top+1;
      finally
        Action := CaFree;
      end;
    end;
     
    procedure TAlerte.Timer1Timer(Sender: TObject);
    begin
      Timer1.Enabled := false;
      close;
    end;
    Une petite question en passant, quel version de delphi utilises-tu ?

    Cordialement
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

  9. #9
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 416
    Points : 5 814
    Points
    5 814
    Par défaut
    salut

    si tu veut absolument un tform

    dans le Formcreate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
     FormStyle := fsStayOnTop;                               
     Left:=Screen.Width-ClientWidth;           
     SystemParametersInfo(SPI_GETWORKAREA,0,@Rect,0);// On récupère la hauteur de la barre des tâches
    Top := Screen.Height - (Screen.Height - Rect.Bottom)-1;
    ClientHeight := 1; // Le bas de la form restera confondu avec le haut : on ne verra qu'une ligne au début
    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  10. #10
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Si tu disposes de delphi 2005 tu peux gérer les propriétés alphablend de la fenêtre et donc de donner un effet identique au fenêtre surgissantes d'office 2003

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    procedure TAlerte.FormCreate(Sender: TObject);
    begin
      Left:=Screen.WorkAreaWidth-width-50;
      Top:=Screen.WorkAreaHeight-height-50;
      AlphaBlend := true;
      AlphaBlendValue := 0;
      Timer1.Interval := 10000;
    end;
     
    procedure TAlerte.FormActivate(Sender: TObject);
    begin
      while AlphaBlendValue < 200 do
      begin
        AlphaBlendValue := AlphaBlendValue + 1;
        application.ProcessMessages;
      end;
      timer1.Enabled := true;
    end;
     
    procedure TAlerte.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      try
        while AlphaBlendValue > 0 do
        begin
          AlphaBlendValue := AlphaBlendValue - 1;
          Application.ProcessMessages;
        end;
      finally
        Action := CaFree;
      end;
    end;
     
    procedure TAlerte.Timer1Timer(Sender: TObject);
    begin
      Timer1.Enabled := false;
      close;
    end;
    Cordialement
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

  11. #11
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 416
    Points : 5 814
    Points
    5 814
    Par défaut
    Salut ,

    bon allez je suis bon prince je te donne l'affichage du tooltip
    a toi de trouver le bouton de la barre de tache

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    uses
       Commctrl;
     
    procedure ShowBalloonTip(hWnd: THandle; Icon: integer; Title: pchar; Text: PWideChar;
    BackCL, TextCL: TColor;dwDuration : DWORD;Itime : longint =0);
    const
      TOOLTIPS_CLASS = 'tooltips_class32';
      TTS_ALWAYSTIP = $01;
      TTS_NOPREFIX = $02;
      TTS_BALLOON = $40;
      TTF_SUBCLASS = $0010;
      TTF_TRANSPARENT = $0100;
      TTF_CENTERTIP = $0002;
      TTM_ADDTOOL = $0400 + 50;
      TTM_SETTITLE = (WM_USER + 32);
      ICC_WIN95_CLASSES = $000000FF;
    type
      TOOLINFO = packed record
        cbSize: Integer;
        uFlags: Integer;
        hwnd: THandle;
        uId: Integer;
        rect: TRect;
        hinst: THandle;
        lpszText: PWideChar;
        lParam: Integer;
      end;
    var
      hWndTip: THandle;
      ti: TOOLINFO;
     
    begin
      hWndTip := CreateWindow(TOOLTIPS_CLASS, nil,
        WS_POPUP or TTS_NOPREFIX or TTS_BALLOON or TTS_ALWAYSTIP,
        0, 0, 0, 0, hWnd, 0, HInstance, nil);
      if hWndTip <> 0 then
      begin
        SetWindowPos(hWndTip, HWND_TOPMOST, 0, 0, 0, 0,
          SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
        ti.cbSize := SizeOf(ti);
        ti.uFlags := TTF_CENTERTIP or TTF_TRANSPARENT or TTF_SUBCLASS;
        ti.hwnd := hWnd;
        ti.lpszText := Text;
        Windows.GetClientRect(hWnd, ti.rect);
        SendMessage(hWndTip, TTM_SETTIPBKCOLOR, BackCL, 0);
        SendMessage(hWndTip, TTM_SETTIPTEXTCOLOR, TextCL, 0);
        SendMessage(hWndTip, TTM_ADDTOOL, 1, Integer(@ti));
        SendMessage(hWndTip, TTM_SETTITLE, Icon mod 4, Integer(Title));
        SendMessage(hWndTip, TTM_SETDELAYTIME,dwDuration,Itime);
      end;
    end;
    pour plus d'info voir
    http://msdn.microsoft.com/
    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    Merci à tous,
    j'ai enfin réussi avec tous vos conseils précieux, voir même au delà de mes espérences, je peux donc changer monh titre en RESOLU

  13. #13
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    @Pascal

    Je passais par là, et je voulais juste dire que je prenais le code, très simple et concis, j'adore ca ,
    je pense que je vais l'utiliser.

    A+ et merci
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    juste un dernier petit détail, en fait maintenant ma fenetre popup n'a pas l'air de se dessiner completement, c'est à dire que les bords de la fenetre sont noir.

    Pourtant j'ai bien mis les application.processmessage.

    une idée ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fenetre popup à la MSN, suite...
    Par Bruno13 dans le forum Delphi
    Réponses: 14
    Dernier message: 18/05/2006, 10h13
  2. passage de parametre a une fenetre popup
    Par Tempotpo dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 02/05/2006, 09h57
  3. Fenetre popup
    Par whbh dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 26/01/2006, 08h54
  4. Fenetre popup ?
    Par whbh dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/12/2005, 17h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo