Delphi: Afficher la fenêtre sans activation
J'ai du mal à afficher une deuxième forme au-dessus de la principale forme sans perdre le focus.
J'ai essayé ShowWindow(second.handle, SW_SHOWNOACTIVATE)
, mais la mainform perd le focus.
Si j'ai mis Visible := false
sur la deuxième fenêtre, l'appel à ShowWindow
ne pas activer la deuxième forme, mais windows est vide lorsque vous le montre...
Quelqu'un a une bonne recette pour cela?
Mise à JOUR: Ce que j'essaie de faire, c'est de montrer un notify-fenêtre à un événement donné. Il est crucial que le formulaire principal ne pas perdre le focus à tout moment.
- Hum... Un de mes montages est parti... je suppose que SI certains avaient des problèmes plus tôt...?
Vous devez vous connecter pour publier un commentaire.
Il y a quelque chose de mal avec votre code.
J'ai testé ce code, il fonctionne:
Veillez à utiliser
Visible
, pasShow
! Sinon ça va remplacer leSW_SHOWNOACTIVATE
.Vous pouvez afficher la fenêtre (non modale) et réinitialiser le focus à la mainwindow.
Testé sur 2006.
Cela ne veut pas montrer l'autre forme sur le dessus. Mais il est très contre-intuitif d'avoir une fenêtre sur le dessus qui n'a pas le focus.
J'ai utilisé dans le passé
Je n'ai pas testé avec les dernières versions de Delphi bien que...
Si possible, vous devriez étudiés à l'aide d'une sorte de pointe de l'outil de la fenêtre pour afficher les informations de notification. Un outil de pointe ne sera pas voler le focus de vous de la fenêtre principale lorsqu'elle est affichée ou lorsqu'un utilisateur clique dessus. Une forme régulière aura une bordure par défaut et si l'utilisateur clique sur cette frontière, votre formulaire principal va perdre le focus.
Voici le code de base pour ce faire. La pointe disparaît lorsque free est appelé; cependant, vous feriez mieux de réglage d'un minuteur de veille.
Vous êtes ici:
Je l'ai fait dans le passé, mais je n'ai pas le code car il était propietary en cours d'emploi (désolé).
Si je me souviens bien, ce que j'ai fait:
Le code (de l'étape 3) pourrait aller quelque chose comme ceci:
Je suis désolé si cela ne fonctionne pas, je n'ai pas de Delphi trop.
Daniels code fonctionne jusqu'à ...
Jusqu'à ce que votre deuxième forme est créé dynamiquement. Puis votre deuxième forme est situé à la position 0,0 à défaut de la largeur et de la hauteur.
Pour un court instant lorsque
ShowWindow
est exécuté, vous verrez la deuxième forme sur l'écran, en train de disparaître lors de la prochaine ligne est exécutée.Je suis en utilisant le code pour une superposition transparente forme qui est créé dyamically. Le code suivant est une combinaison des réponses données et des lieux de la deuxième forme sans l'activation du formulaire parent.