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 :

Probleme de focus de fiche.


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2004
    Messages : 85
    Points : 39
    Points
    39
    Par défaut Probleme de focus de fiche.
    Salut a tous,

    J'ai un programme (une fiche principale qui contient un Tpanel) et dans ce Tpanel je peux ouvrir d'autre fiche (programme) a l'interieur de celui ci.
    tout fonctionne comme il faut a part le fait que si le focus est sur un programme a l'interieur du programme principal (donc le programme principale n'a plus le focus) je ne peux plus remettre le programme principale par dessus les autres fenetre de windows (en tenant compte que le programme est cacher par un autre programme ex: Explorer). tout ce que je peux faire, c'est cliquer sur le programme dans la barre de tache pour le minimiser et le refaire pour le maximiser de cette facon le programme principal regagne son focus et reaparait par dessus les autres programmes de windows.

    Bon j'espere que c'est assez clair!

    Comment je pourrais regler ca ?
    Merci

  2. #2
    Membre régulier
    Inscrit en
    Janvier 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2003
    Messages : 110
    Points : 109
    Points
    109
    Par défaut
    Tes fenêtres sont en fsMDI ou en fsNormal ?

  3. #3
    Membre confirmé

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Points : 508
    Points
    508
    Par défaut
    As-tu essayé de remettre ta fiche principale au premier plan avec SetForeGroundwindow(LaFichePrincipale.Handle) ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2004
    Messages : 85
    Points : 39
    Points
    39
    Par défaut
    Pinson : le programme principale anisi que tout les sous programme sont tous
    en Fsnormal.

    Okaryn : Je ne connais meme pas cette fonction (je suis debutant), comment je dois l'implanter ?

    Merci

  5. #5
    Membre confirmé

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Points : 508
    Points
    508
    Par défaut
    Déjà, il me semble que tu devrais mettre les fenêtres filles en 'fsMDI' puisqu'elle sont inclues dans une fenêtre parente. Mais bon, je ne réalise pas d'application MDI...

    Pour la fonction SetForeGroundwindow, tu peux l'appeler pour mettre en avant plan ta fenêtre principale, même si elle détient déjà le focus. Elle fait partie de l'unité "Windows".

  6. #6
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par Brain3D
    Salut a tous,

    J'ai un programme (une fiche principale qui contient un Tpanel) et dans ce Tpanel je peux ouvrir d'autre fiche (programme) a l'interieur de celui ci.
    tout fonctionne comme il faut a part le fait que si le focus est sur un programme a l'interieur du programme principal (donc le programme principale n'a plus le focus) je ne peux plus remettre le programme principale par dessus les autres fenetre de windows (en tenant compte que le programme est cacher par un autre programme ex: Explorer). tout ce que je peux faire, c'est cliquer sur le programme dans la barre de tache pour le minimiser et le refaire pour le maximiser de cette facon le programme principal regagne son focus et reaparait par dessus les autres programmes de windows.

    Bon j'espere que c'est assez clair!

    Comment je pourrais regler ca ?
    Merci
    L'un des défieurs du défi Delphi n°1 avait utilisé cette méthode pour placer la fenêtre du démineur dans son Panel, et à priori, pour lui ça marchait très bien, donc..................................
    va vite dans la rubrique Défi de notre site et déterre ce code, il te donnera surement des indications pour résoudre ton problême

  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Problème de focus sur des fiches MDICHILD
    salut la compagnie,

    j'ai le même problème que Brain3D, mais avec des fiches filles d'une fenêtre principale.

    j'explique, j'utilise des boutons d'ajout, modif et supression communs mais je n'arrive pas à détecté la bonne fiche pour lancer la procédure adéquate.

    avec la propriété assigned qui passe à nil dés la création de la fiche fille ou avec la propriété activeMdiChild=à la formeFille qui convient.

    donc je ne sais plus quoi utilisé?

    alors est ce que la fonction SetForeGroundwindow est correcte dans ce cas et sur tout comment l'utiliser j'avoue ne pas avoir bien compris.

    en tous cas merci, pour l'idée c'est déja un début.

  8. #8
    Membre confirmé

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Points : 508
    Points
    508
    Par défaut
    Je n'arrive pas trop à comprendre ton problème.

    Tu veux, en appuyant sur un bouton, savoir quelle fiche fille de ton application détient le focus ?

    Si ta fiche Parent s'appelle FMain, alors FMain.ActiveMDIChild te retourne la fiche fille en question.

    Un exemple bête : lors de l'appuie sur un bouton, le titre de la fenêtre fille affiche 'C'est moi' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TFMain.Button1OnClick(Sender: TObject);
    begin
      FMain.ActiveMDIChild.Caption := 'C''est moi !!!';
    end;

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Ben j'ai un peu le même problème ...

    J'ai beau être un vieux briscar j'avais encore jamais tenté le MDI ...
    J'ai essayé pleins de trucs y compris via les API ... mais rien ne marche !

    A bout d'arguments je me suis décidé pour une bidouille ...
    Suffit d'avoir dans son projet un forme "vide" que l'on crée au démarrage avec borderstyle à "bsnone" et que l'on crée avec "width et "height" à "0"
    (ne pas oublier de la libérer en fin de programme)

    Pour remettre tout correct suffit de faire un "Show", "Hide" de cette forme qui de toute manière ne se voit pas ...

    Nota : je sais ça va faire hurler "puristes" et "intégristes" ... mais en attendant de trouver mieux, ça marche !

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Je n'aime pas m'avouer vaincu ...
    Et je crois qu'il y a toujours une bonne réponse ou une réponse correcte et "propre" à chaque problème ...

    Donc de temps en temps je cherchais la-dite solution concernant ce PB de perte de focus de la "MDIChild"

    Finalement je pense avoir trouvé
    Lorsque la souris revient dans la forme suffit d'appeler "DefFrameProc"

    Exemple :

    DefFrameProc( Frm_Main.Handle, Handle, WM_SETFOCUS, 0, 0 ) ;

    où Frm_Main.Handle est la forme principale bien entendu ...

    Je me dis que y'en a ptet qui ont le même souci et que ma réponse intéressera ...
    L'avantage que cette solution par rapport à ma précédente et qu'il évite le "chti" suitillement du titre de la fenêtre qui était consécutif à sa désactivation/réactivation ...

Discussions similaires

  1. Bouton moche sous IE, probleme de Focus
    Par nicottin dans le forum Mise en page CSS
    Réponses: 12
    Dernier message: 30/08/2007, 14h43
  2. probleme avec focus sous ie du flash
    Par éloi_75 dans le forum Flash
    Réponses: 15
    Dernier message: 22/02/2007, 23h27
  3. Surment un probleme de focus ?
    Par quentingsc dans le forum VB 6 et antérieur
    Réponses: 20
    Dernier message: 04/02/2007, 18h34
  4. Réponses: 4
    Dernier message: 31/07/2006, 20h06
  5. [C#] Probleme de focus
    Par kenzo080 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 27/01/2006, 15h58

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