2009-01-27 5 views
0

Comment puis-je faire mon application delphi systray en utilisant la norme vcl inputbox() pour demander la mise au point, maintenant boîte de dialogue semble rester dans la barre des tâches et le dialogue ne ouvert à l'avant des autres applications. C'est le problème de Vista, je pense. Créer une forme propre la résoudrait je crois.Focus pas déplacé à inputbox() et la boîte reste derrière des applications (Vista)

ps: je peux modifier Dialogs.pas si nécessaire, il semble être en utilisant Tcustomforms.showmodal

+0

Parce que votre application n'est pas au premier plan, le système d'exploitation vous empêche d'ouvrir un dialogue sur tout le reste; après tout, ce serait un objet de vol de concentration. Il ya des hacks et des solutions de contournement pour essayer de voler la mise au point, mais [vous vraiment vraiment ne devrait vraiment pas faire cela] (http://blogs.msdn.com/b/oldnewthing/archive/2009/02/20/9435239.aspx) – Petesh

Répondre

1

Vous utilisez probablement la version de delphi plus.

Certaines solutions de contournement spécifiques à Vista pour les anciennes versions de Delphi peuvent être utilisées here.

0

Avez-vous essayé un application.BringtoFront() avant de lancer la boîte d'entrée?

L'édition de dialogs.pas semble être une mauvaise idée. Je préférerais faire mon propre formulaire de saisie.

Les applications qui volent la mise au point peuvent être assez ennuyantes, cependant ... Comment lancer la boîte d'entrée? Sur une minuterie, ou sur une demande d'utilisateur (par exemple en cliquant sur l'icône)?

+0

BringtoFront n'a rien fait, mais je n'ai pas la forme principale de l'application, c'est l'application de fond Systray .. – Tom

0

Essayez Application.ProcessMessages; juste avant l'appel de la zone de saisie.

Questions connexes