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 :

Ajout d'un Tpanel sur l'horloge de la TrayIcon


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 423
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 423
    Points : 1 326
    Points
    1 326
    Par défaut Ajout d'un Tpanel sur l'horloge de la TrayIcon
    Bonsoir à toutes et à tous,

    Reprenant une ancienne source qui fonctionnait sur XP et qui consiste à afficher un Tpanel avec une horloge de couleurs sur l"horloge se trouvant dans la TrayIcon, je constate qu"avec Vista, lors de l'affichage des icônes cachés, le Tpanel se déplace aussi au lieu de rester calé dans le coin à droite.

    Voici la procédure ;

    procedure creation_control;

    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
     
    function donne_Trayform: integer;
    var
      hdle: integer;
    begin
      hdle := FindWindow('Shell_TrayWnd', nil);
      Hdle := FindWindowEx(hdle, 0, 'TrayNotifyWnd', nil);
      result := FindWindowEx(hdle, 0, 'TTrayForm', nil);
    end;
     
    function donne_Hdle_Clock: integer;
    var
      hdle: integer;
    begin
      hdle := FindWindow('Shell_TrayWnd', nil);
      Hdle := FindWindowEx(hdle, 0, 'TrayNotifyWnd', nil);
      result := FindWindowEx(hdle, 0, 'TrayClockWClass', nil);
    end;
     
    function TrayIconWindowHandle: HWnd;
    var
      trayHWnd: HWnd;
    begin
      trayHWnd := FindWindow('Shell_TrayWnd', nil);
      result := FindWindowEx(trayHWnd, 0, 'TrayNotifyWnd', nil);
    end;
     
    procedure Tform1.creation_control;
    var
      Tray_taille, taille2: Trect;
      larg, haut: integer;
    begin
      GetWindowRect(donne_Hdle_Clock, Tray_taille);
      GetWindowRect(TrayIconWindowHandle, taille2);
      if donne_Trayform = 0 then
      try
        Trayform := TTrayform.CreateParented(TrayIconWindowHandle);
        Trayform.ParentWindow := TrayIconWindowHandle;
        Trayform.show;
      except; end;
      larg := Tray_taille.right - Tray_taille.left;
      haut := Tray_taille.bottom - Tray_taille.top - 13;
      MoveWindow(Trayform.handle, Tray_taille.left - taille2.left + 0,
        Tray_taille.top - taille2.top + 8, larg,
        haut, true);
    end;
    Quant à la libération de la mémoire, je ne suis pas certain quelle se fasse.

    @+,

    Cincap

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 691
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 691
    Points : 13 121
    Points
    13 121
    Par défaut
    Je suis toujours étonné lorsque des gens veulent modeler l'environnement à leur application. L'utilisateur final (que je suis aussi) déteste ça ! C'est à l'application de se fondre dans l'environnement.

    Je comprends que dans certain cas, le pc soit dédié à une tâche précise (ex. caisse enregistreuse), mais alors, on remplacera carrément le shell par une nouvelle application. (ou au minimum, on la met en plein écran)

    De plus, ton code, depuis où l'appelles-tu ?
    Comment se comporte-t-il, même sous XP, si je redimensionne ou déplace la barre de tâches ?
    ...qu'elle est autohide ?

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 423
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 423
    Points : 1 326
    Points
    1 326
    Par défaut
    Bonjour à toutes et à tous,

    @ AndNotOr, tu as parfaitement raison, j"ai deux fiches, la principale contient un calendrier et à l'exécution lance la fiche "Trayform.show;" sur cette fiche l'heure écriture verte sur fond noir et sur le double click rend la fiche calendrier "hide" ou "show".

    Sur Xp, même en déplacant la TrayIcon, le TPanel se place correctement, sur Vista, le TPanel s'affiche bien mais lors du changement dans le cas d'un affichage des icônes cachés, le TPanel s'écarte du coin droit et reprend sa place lorsque les iônes sont à nouveau cachés.

    Notes bien que je fais des tests sur des anciennes sources D3 et D6 et que je constate des comportements différents sur Vista.

    @+,

    Cincap

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 423
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 423
    Points : 1 326
    Points
    1 326
    Par défaut
    @ tous, en testant le code cité, j'ai constaté une erreur d'une fonction sur ma fiche principale.

    Maintenant, le TPanel suit le comportement de la barre de tâche (déplacement, agrandissement, hide, ect...).

    Je considère ce topic comme résolut.

    @+,

    Cincap

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

Discussions similaires

  1. Ajouter un objet type Tpanel sur un page HTML
    Par QAYS dans le forum Webdesign & Ergonomie
    Réponses: 0
    Dernier message: 06/04/2013, 19h14
  2. Réponses: 7
    Dernier message: 01/03/2006, 18h14
  3. Réponses: 11
    Dernier message: 28/01/2006, 20h52
  4. Ajout de menu perso sur clique droit de la souris !!
    Par Kyp dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/12/2005, 17h06

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