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 :

Un popup AlwaysOnTop


Sujet :

Composants VCL Delphi

  1. #41
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 31
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    1/Désolé de ne pas avoir été clair mais je ne voulais pas faire long
    En fait tu conseillais de faire passer le string par WM_USER, mais je ne vois pas comment le faire... faire passer une valeur entière, je vois bien mais un string, je bloque...

    Voila il te reste plus qu'a transmettre le text obtenu via WM_User, comme pour le code du bouton 'OK' du PopUp.
    Et Shailetroll proposait une autre stratégie plus complexe mais que j'arrive pas non plus à mettre en oeuvre (bon, je suis un peu débutant tout de même en fait )...

    En fait, je pense qu'il y a un jeu de pointeurs dans l'affaire et je ne suis pas très à l'aise avec ça (même si je comprends un peu le principe!).

    2/ok, C'est noté!

    3/Non, en fait, il s'agissait d'un test dans une même appli pour tester la fonction que tu avais trouvé sur google (je ne savais pas si tu avais eu le temps de le tester... du coup, je l'ai fais!).

    Bon on touche le bout je pense... le dernier obstacle pour ce post est mon ignorance!!!

    En tout cas, merci pour tous les conseils jusque là!

    CrocoB
    ---------------------------------------
    Niveau débutant
    Rad : Delphi 6 Perso (Français)
    Delphi 7 perso (Français)
    OS : Win98/ Win 2000/ Win Xp

  2. #42
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    En Fait, je ne fais passer qu'un pointeur (avec les string c'est à considérer en lecture seule), bon j'ai écrit le code avec un WM_USER sur le forum, je ne l'ai pas testé, mais c'était dans le sens inverse de que tu as pu penser

    C'est l'application cliente qui demandait à son serveur de lui envoyé une chaine, toi c'est l'inverse, c'est l'application server qui envoie sa chaine au client

    ça devrait donner ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const
      UM_SEND_POPUP_STRING = WM_USER + 1234 // UM comme User Message, j'évite CM comme Custom Message souvent utilisé par Delphi, voir aussi RegisterWindowMessage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure SendStringToPopup(const PopupHandle: Cardinal; const AString: string);
    begin
      SendMessage(PopupHandle, UM_SEND_POPUP_STRING, Length(AString), @AString[1]);
    end;
    du côté reception, donc l'Exe Popup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function TPopupMainForm.ManageMessagePopupString(var Message: TMessage): string;
    begin
      SetLength(Result, Message.wParam);
      CopyMemory(Pointer(Message.lParam), @Result[1], Message.wParam);
    end;
    bon il te faut le PopupHandle, tu peux le récupérer via un CreateProcess ou un FindWindow (tout dépend si tu raccroche le message à une fênetre ou si tu scrute les messages via le TApplication)

    déclaration pour une fenêtre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function TPopupMainForm.ManageMessagePopupString(var Message: TMessage): string; message  UM_SEND_POPUP_STRING;
    via TApplication

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TPopupMainForm.FormCreate(Sender: TObject);
    begin
      Application.OnMessage := AppMessage;
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TPopupMainForm.AppMessage(var Msg: TMsg; var Handled: Boolean);
    var
      Message: TMessage;
    begin
      Message.wParam := Msg.wParam;
      Message.lParam := lsg.wParam;
      ManageMessagePopupString(Message);
      Handled := True;
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #43
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 31
    Points : 6
    Points
    6
    Par défaut
    Salut Shailetroll,

    Ta réponse est très claire mais je me heurte à un problème!
    SendMessage(PopupHandle, UM_SEND_POPUP_STRING, Length(AString), @AString[1]);
    Cette ligne génère une erreur... "Types incompatibles : 'Integer' et 'Pointer'

    Sinon, j'ai juste une petite question! Peux-tu... m'expliquer...à quoi sert... le @ ? (oups, j'ai honte!)

    Allez une dernière pour la route (mais j'ai ma petite idée)...
    Pourquoi je dois définir un autre code? pourquoi ne pas utiliser WM_USER? (juste par curiosité)
    const
    UM_SEND_POPUP_STRING = WM_USER + 1234 // UM comme User Message, j'évite CM comme Custom Message souvent utilisé par Delphi, voir aussi RegisterWindowMessage
    ---------------------------------------
    Niveau débutant
    Rad : Delphi 6 Perso (Français)
    Delphi 7 perso (Français)
    OS : Win98/ Win 2000/ Win Xp

  4. #44
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut pere Fourasse

    Bon alors je n'ai pas reussi non plus avec WM_User, mais le WM_CopyData sité par Shail plus haut m'a ete plus joyeux.
    Avec quelque petite recherche sur le net et un bon mal de crane voila ca marche... je t'ai meme rajouter une identification de message recu

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #45
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Effectivement, je n'ai pas testé le code, je l'ai tapé direct

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendMessage(PopupHandle, UM_SEND_POPUP_STRING, Length(AString), Integer(@AString[1]));
    @ me parait d'avoir le pointeur, et je veux le pointeur sur le Premier caractère [1] et non le pointeur du TRecStr

    Pour WM_USER, je n'ai pas de réponse ... c'est que je préfère un autre numéro ... mais le mieux reste le Register !!!

    Pour le WM_SENDDATA, j'ai donné un exemple avec une Structure contenant une chaine, ... plus haut
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #46
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 31
    Points : 6
    Points
    6
    Par défaut
    Bon bin ca marche!!!

    Merci les gars...

    Si jamais quelqu'un à une meilleure solution, qu'il n'hésite pas...

    Dans tous les cas, ça marche!!!
    ---------------------------------------
    Niveau débutant
    Rad : Delphi 6 Perso (Français)
    Delphi 7 perso (Français)
    OS : Win98/ Win 2000/ Win Xp

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Comment créer un menu popup style XP ?
    Par chaours dans le forum Composants VCL
    Réponses: 4
    Dernier message: 29/09/2003, 09h38
  2. Popup avec un clic gauche
    Par Jéremy A dans le forum Composants VCL
    Réponses: 7
    Dernier message: 27/02/2003, 22h15
  3. Mettre un popup menu invisible ??
    Par Alberto dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/12/2002, 09h02
  4. Image popup d'une fiche à partir d'un TListImage
    Par FW-S dans le forum Composants VCL
    Réponses: 3
    Dernier message: 17/11/2002, 13h42

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