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

Composants VCL Delphi Discussion :

JEDI TJvDesktopAlert souci d'identification de l'alerte


Sujet :

Composants VCL Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2011
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 33
    Points : 27
    Points
    27
    Par défaut JEDI TJvDesktopAlert souci d'identification de l'alerte
    Salut à tous.
    Je tente d'utiliser TJvDesktopAlert pour réaliser un petit "reminder" qui me prévient des choses importantes à ne pas oublier.
    Ca marche presque. Mes alertes s'affichent bien à l'écran à la date et à l'heure voulue et j'y ai ajouté 3 boutons : un qui ferme l'alerte, un qui édite l'alerte et un dernier qui répète l'alerte dans x minutes (style Outlook).
    Sans vraie documentation sur le sujet, je bute sur un truc tout con : lorsque plusieurs alertes sont présentes sur le bureau, comment faire pour distinguer celle sur laquelle l'utilisateur clique ?
    J'ai tenté plusieurs choses sans succès. Par exemple un override sur le OnClick des boutons. Niet ! Un transtypage pour essayer de récupérer le Tag de l'alerte : Niet !

    Des suggestions ?

    Merci

  2. #2
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Tu peux faire cela avec les types procéduraux (procedure of object), tu crées un type.

    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
     
    type
       TDesktopAlertAction = (daaClose, daaEdit, daaRepeat);
       TProcDesktopAlert = procedure (daaCurrentAlert : TDesktopAlertAction) of object;
    // [...]
       private
          FOnDesktopAlert : TProcDesktopAlert;
       public
          property OnDesktopAlert : TProcDesktopAlert read FOnDesktopAlert write FOnDesktopAlert;
       end;
    // [...]
       // tu mets le code derrière tes boutons, par ex. avec une form appelée uFormDesktopAlert
       // sans oublié d'initialiser FOnDesktopAlert à nil dans un FormCreate
       procedure TuFormDesktopAlert.btnCloseClick(Sender : TObject);
       begin
          if Assigned(FOnDesktopAlert) then
          begin
             FOnDesktopAlert(daaClose);
          end;
       end;
    Ensuite dans une autre fiche, par ex. ta fiche principal, tu assignes ta procédure à la création de ta DesktopAction.

    http://docwiki.embarcadero.com/RADSt...uraux_(Delphi)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2011
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 33
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par retwas Voir le message
    Tu peux faire cela avec les types procéduraux (procedure of object), tu crées un type.
    Très intéressant ! Je vais me pencher sur la question.

    Pour l'instant, je m'en suis sorti avec une pirouette de programmeur. Comme je peux récupérer le tag du bouton cliqué, j'ai "encodé" ce tag de manière à mémoriser à la fois l'id de l'alerte affichée et le n° du bouton cliqué.
    Pour ça, j'utilise les 2 derniers bits du tag pour le n° du bouton (4 possibilités donc) et le reste pour l'id de l'alerte.
    Un peu capilo-tracté mais ça marche !

    Le code pour l'encodage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for j := 0 to 2 do
    begin
        With DeskAlert.Buttons.Add do
        Begin
            ImageIndex := j;
            Tag := Alerte.Id shl 2;    // Décale l'id de 2 bits à gauche. Ces 2 bits vont servir à mémoriser le No du bouton cliqué !
            Tag := Tag + j;             // Ajoute le No du bouton en utilisant les 2 bits de droite (4 boutons mémorisables)
            OnClick := DoButtonClick;
        End;
    End;
    Pour le "décodage", je fais l'inverse
    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
     
    procedure TListForm.DoButtonClick;
    var
        nAlert, Btn, xTag : Integer;
    begin
        xTag := (Sender as TControl).Tag; // Récupère l'info codée
        Btn := xTag AND 03; // Masque tous les bits de xTag et ne retient que les 2 derniers (00, 01, 10 ou 11)
        nAlert := xTag shr 2; // Décale de 2 bits à droite pour retrouver la valeur de l'id
        case Btn of
            0: // clic sur 'valider'
            begin
                ShowMessage('Valider le rappel - Bouton N°'+IntToStr(Btn)+ ' - Alerte '+IntToStr(nAlert));
            end;
            1: // Clic sur 'Editer'
            Begin
                ShowMessage('Editer le rappel - Bouton N°'+IntToStr(Btn)+ ' - Alerte '+IntToStr(nAlert));
            End;
            2: // Clic sur 'Editer'
            Begin
                ShowMessage('Répeter le rappel - Bouton N°'+IntToStr(Btn)+ ' - Alerte '+IntToStr(nAlert));
            End;
        end;
    end;
    Je n'ai pas encore repéré d'effets pervers.

    Bon code à tous.

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

Discussions similaires

  1. [XL-2007] Souci sur l'identification d'une option de menu contextuel
    Par basto dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/06/2014, 13h52
  2. [Windows 8.1] Souci lors de l'identification
    Par Lyche dans le forum Windows 8
    Réponses: 14
    Dernier message: 10/03/2014, 09h42
  3. identification lettre (pb accent)
    Par scorbo dans le forum C
    Réponses: 5
    Dernier message: 14/12/2002, 02h59
  4. Réponses: 2
    Dernier message: 03/10/2002, 17h24

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