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 :

Rendre le focus à l'application appellante


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Par défaut Rendre le focus à l'application appellante
    salut tout le monde!

    Voilà, un petit soucis qui m'empêche de perfectionner mon application:

    Je lance une application grâce à un click sur un bouton, et lorsque mon application est créée, je veux rendre le focus à l'application qui l'a appellée...

    Dans le Tform.Create, j'ai précisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       SetForeGroundwindow(windows.GetFocus);
    GetFocus renvoi la fenetre qui détient le flux venant du clavier.. et sur mon application créée il n'y a pas de Edit ou autre...

    logiquement ça devrait suffir, non?

    Mais ça ne marche pas, mon application créée détient le focus...

    merci pour les conseils...

    ludo

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 16
    Par défaut
    Ma soluce pour ton problème c'est de lancer ton appli et tu fais un sleep de 500 ou 1000 millisecondes, puis tu appelles la méthode SetForeGroundwindow( Self.Handle);

    regarde le code ci-dessous:


    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ShellExecute(0, 'open', 'C:\another_project\project.exe', nil, nil, SW_SHOWNORMAL);
    sleep(500);
    SetForegroundWindow(self.Handle);
    end;


    J'espère que c'est ce que tu voulais faire.

    Bonne continuation

  3. #3
    Membre éclairé Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Par défaut
    Ca m'ennui d'utiliser un sleep mais j'avoue ta méthode marche visuellement donc... merci pour ce conseil...

    ludo

  4. #4
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    ET pourquoi pas simplement faire un setfocus sur un des composants de l'applciation voir meme sur la form elle meme ?

  5. #5
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    ha non ca ne marche pas .... Mais le setForGround avec le handle ca oui

    Sinon je ne voit pas trop l'utilité d'un sleep ... surtout de 500ms.

  6. #6
    Membre éclairé Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Par défaut
    L'utilité est de permettre à l'application appellée de se lancée, et ensuite je rend le focus à l'application qui a lancé l'appel. Moi j'ai fait un sleep de 200ms et ça marche très bien, mais par exemple à sleep(150) ça ne marche plus... L'application appellée garde le focus...

    Voila...

    Mais je vais revoir tout ça pour vérifier que je n'ai pas un "setfocus" qui traine dans mon application dans "form.create" par exemple... =)

    Dans ce cas il est vrai que le sleep pourra surement être éviter!

    ludo

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

Discussions similaires

  1. [GtkTextView] Comment lui rendre le focus ?
    Par SpiceGuid dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 09/11/2008, 21h08
  2. Rendre le focus a la fenetre
    Par Mercenary Developer dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 26/07/2007, 13h55
  3. Rendre le focus à champ de saisie après une action
    Par Gothico dans le forum WinDev
    Réponses: 3
    Dernier message: 24/10/2006, 16h21
  4. [VB]donner le focus à une application déja ouverte ou fermée
    Par Nicko29 dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 21/01/2006, 14h28
  5. "Mettre le focus" à une application à partir de son Handle
    Par Tardiff Jean-François dans le forum Composants VCL
    Réponses: 2
    Dernier message: 04/07/2005, 08h54

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