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 :

Donner le focus a une application


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 80
    Points : 62
    Points
    62
    Par défaut Donner le focus a une application
    Bonjour,

    Mon probleme est le suivant, je voudrai donné le focus a mon application des lors que la souris passe dans une certaine zone de l'ecran.

    Je sais faire le test pour la position de la souris avec getCursorPos, mais je ne reussi pas a donné le focus a mon application. ( comme si on avait cliqué dans la barre de titre de l'appli. )

    Comment faire ?

    merci

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 444
    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 444
    Points : 5 864
    Points
    5 864
    Par défaut
    salut

    passe par les api windows

    @+ Phil

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut,

    Pour compléter la réponse d'Anapurna tu peux utiliser la fonction SetForegroundWindow(hWND);
    hWND étant le handle de ton application.

    @+

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 80
    Points : 62
    Points
    62
    Par défaut
    oui, mais non.

    Utilisé l'API windows, ca me parrait tres logique, mais pour ce qui est de setForegroundWindow(), ca ne fait que mettre la fenetre au premier plan, manifestement.

    Comme Application.bringToFront();

    je veux vraiment lui donné le focus.

    merci.

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 444
    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 444
    Points : 5 864
    Points
    5 864
    Par défaut
    salut

    regarde les souces que j'ai laissé poue le dephi
    il y a l'info que tu veut

    @+ Phil

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par HopeLeaves
    je veux vraiment lui donné le focus.
    Extrait de la MSDN:
    The SetForegroundWindow function puts the thread that created the specified window into the foreground and activates the window.
    En théorie celà devrait également donner le focus à ton appli !!!
    Il y a autre chose !

    @+

  7. #7
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Et SetFocus ne marcherait pas?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 80
    Points : 62
    Points
    62
    Par défaut
    Set Focus ne marche pas,

    Set foreground, a pour effet de faire clignoté l'appli dans la barre de tache.

    Mais ca fait toujours pas ce que je veux.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    J'ai exactement le Meme probleme

    Si quelqu'un connait une autre solution

  10. #10
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 444
    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 444
    Points : 5 864
    Points
    5 864
    Par défaut
    salut

    donc deux etapes a faire

    1°) Placer la fenetre en TOPMOST
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetWindowPos(fhwnd, HWND_TOPMOST, nVert,nHorz,0,0 , SWP_SHOWWINDOW)
    ensuite pour rafraichir l'ecran le cas echeant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Procedure refreshWindow(hwndGen : HWND );
    var rcWnd : TRECT ;
    begin
      SetFocus(hwndGen);
      GetClientRect(hwndGen,rcWnd);
      InvalidateRect(hwndGen,@rcWnd,FALSE);
      UpdateWindow(hwndGen);
    end;
    @+ Phil

  11. #11
    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
    Citation Envoyé par HopeLeaves
    Set Focus ne marche pas,

    Set foreground, a pour effet de faire clignoté l'appli dans la barre de tache.

    Mais ca fait toujours pas ce que je veux.

    Apres le SetForeGroundwindow(handle) fait SetActiveWindow(handle)

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 80
    Points : 62
    Points
    62
    Par défaut
    setActive windows ne fonctionne pas. ca semble ne rien faire.

    Anapurna, je ne comprend pas ce que ton code fait ...
    plus d'explications seraient bienvenue.

    De plus, setFocus et GetClientRect ne prennent apparement pas d'argument.

    Merci

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 80
    Points : 62
    Points
    62
    Par défaut
    bon, alors :

    Si on fait SetForeGroundWindow(Application.handle), ca passe l'appli au premier plan.

    Reste ensuite a faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
      mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
    Pour simuler un click de souris (bouton droit), ce qui active vraiment la fenetre.
    Reste a supposé que le bouton droit n'y a aucun n'effet, sinon, faut desactivé l'effet a ce moment là.

    C'est pas forcement une solution propore, mais au moin ca marche.

    Merci a vous tous.

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

Discussions similaires

  1. [D5] : DBGrid : Donner le focus à une cellule
    Par micoudev dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/08/2006, 21h03
  2. Mettre le focus sur une application
    Par Raylemon dans le forum Langage
    Réponses: 17
    Dernier message: 10/05/2006, 17h52
  3. donner le focus a une fenetre
    Par HiT dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 03/05/2006, 14h59
  4. [VB.NET] donner le focus a une page de tableau?
    Par leptityugi dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/11/2005, 13h22
  5. Focus sur une application Windows
    Par mixi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/10/2004, 19h57

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