7
votes

Comment afficher une fenêtre de message dans le coin inférieur droit de l'affichage actif à l'aide de Delphi

Ces jours-ci, vous voyez beaucoup de logiciels affichant Windows de message dans le coin inférieur droit de l'écran actif fort> pendant quelques secondes ou jusqu'à ce qu'un bouton de fermeture soit cliqué (le fi norton le fait après avoir vérifié Un téléchargement) P>

J'ai trouvé des messages ici sur les formulaires ne se concentrant pas, mais ce n'est qu'une partie du problème. Je pense également à la manière de déterminer la position exacte de cette fenêtre de message (sachant que l'utilisateur a pu mettre sa barre de tâches à droite de l'écran. P>

thx à l'avance. P> Mise à jour 26 janv., 10: strong> à partir du code de drorhan code> J'ai créé le formulaire suivant (dans Delphi 7) qui fonctionne si la barre des tâches est affichée à la bas, la droite, la gauche ou le haut du schreen. em> p> xxx pré>

et p>

fpopupmessage.pas p>

procedure TfrmMain.button1Click(Sender: TObject);
begin
   DisplayPopup('Message displayed at ' + FormatDateTime('ddd mmm yy zzz', Now),'My Program');
   beep;
end;

procedure TfrmMain.button2Click(Sender: TObject);
begin
   DisplayPopup('Another message displayed at ' + FormatDateTime('hh:nn zzz', Now),'My Program');
end;


0 commentaires

7 Réponses :


2
votes

Ce que vous recherchez, ce sont des conseils de ballon dans un plateau système. Pour le général Winapi, voici un Nice Tutoriel pour cela, que vous ne devriez pas avoir de problèmes de traduire à Delphi.

Vous pouvez trouver du code prêt à utiliser pour les astuces de ballons dans Delphi ici .

Une belle implémentation est disponible ici .


1 commentaires

Je pensais que les astuces de Bolloon dans la barre d'état système sont toujours connectées à une icône dans la barre d'état système. Peut-être faux cependant. Je voudrais avoir n'importe quel formulaire DELPHI (avec tout ce que je veux placer sur elle, texte, images, etc.) Pour être positionné en bas à droite de l'écran actif et pour l'afficher sans qu'elle reçoit la mise au point.



1
votes

Vous pouvez vérifier où est la barre des tâches: xxx

puis montrer votre formulaire ...


0 commentaires

1
votes

Vous pouvez utiliser Growl pour Windows - Je ne pense pas qu'il y ait un Bibliothèque DELPHI Pour cependant, mais vous pouvez le contrôler via des messages UDP, de sorte que toute bibliothèque de réseau doit faire.


2 commentaires

Mise à jour: Il semble y avoir du code pour contrôler Growl à growl.matf.de .


Thx pour la pointe, mais je veux contrôler les messages et voir moi-même sans que les utilisateurs ont à installer un logiciel d'addition.



1
votes

4
votes
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
  function TaskBarHeight: integer; // this is just to get the taskbar height to put
  // my form in the correct position
  var
    hTB: HWND;
    TBRect: TRect;
  begin
    hTB := FindWindow('Shell_TrayWnd', '');
    if hTB = 0 then
      Result := 0
    else
    begin
      GetWindowRect(hTB, TBRect);
      Result := TBRect.Bottom - TBRect.Top;
    end;
  end;

begin
  Self.Left := Screen.Width - Self.Width;
  Self.Top := Screen.Height-Self.Height-TaskBarHeight;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  TimeSleep: integer;
begin
  TimeSleep := 5; // the speed you want to show/hide.Increase/descrease this to make it faster or slower
  for i := 1 to Self.Height do
  begin
    Self.Top := Self.Top+1;
    Sleep(TimeSleep);
  end;
  // now let's show it again(use this as code as the show code)
  for i := 1 to Self.Height do
  begin
    Self.Top := Self.Top-1;
    Sleep(TimeSleep);
  end;
end;

end.
via http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_25043483.html

0 commentaires

1
votes

Vérifiez Snarl, semblable à Growl for Windows, mais j'ai trouvé mieux. Il existe un fichier PAS pour une interface facile et la façon dont il fonctionne est très simple, avec simplement envoyer des messages Windows.

http://fullphat.net/

Il permet également à l'utilisateur final une certaine quantité de contrôle de quels messages à voir, durée avant la décoloration, etc.


1 commentaires

THX pour le lien, mais je ne veux pas forcer l'utilisateur final à installer un logiciel supplémentaire. Bien que l'idée de Snarl soit une bonne (juste pas ce que je cherche pour le moment).



4
votes

Essayez d'utiliser le composant TJVDESKTOPALERT WICH est inclus dans le JVCL , vous pouvez trouver un exemple de JVCL \ Exemples \ JVDESKTOPALERT \ JVDESKTOPALERTDEMO.DPR

 text alt
(source: agnisoft.com )


1 commentaires

Thx pour la réponse. Malheureusement, je n'utilise pas les composants JVCL, je l'ai énoncé une fois. Je vais regarder le code pour voir comment ils le font, mais ils ont hérité de leur propre classe TJVexform. Je ne veux pas traîner dans beaucoup de code ou de classes juste pour cela.