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

Lazarus Pascal Discussion :

Fonctionnalité AlwaysOnTop disparue sous Windows XP [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 719
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 719
    Points : 15 105
    Points
    15 105
    Par défaut Fonctionnalité AlwaysOnTop disparue sous Windows XP
    Bonjour,

    pendant des millénaires j'ai utilisé avec satisfaction sous D7 et Win2000 un truc pour avoir la fenêtre principale du programme "toujours visible" (ça peut être utile selon le programme), qui se résume à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.ckbxToujoursVisibleClick(Sender: TObject);
    begin
      if ckbxToujoursVisible.Checked
      then
    //    ShowMessage('Yes')
    //    SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE)
        FormStyle := fsStayOnTop
      else
    //    ShowMessage('No');
    //    SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
        FormStyle := fsNormal;
    end;
    Pour tester, une "nouvelle application" avec juste une case à cocher sur la fiche et l'événement OnClick activé avec le code ci-dessus.

    Le problème, comme vous pouvez le voir avec les lignes en commentaires (ce qui indique des essais, donc des soucis...), c'est que ça ne fonctionne pas avec Laz 1.6rc1 dans XP sp2.
    Et je ne peux pas donner de message d'erreur puisque c'est purement fonctionnel et visuel : juste qu'en cochant la case la fenêtre d'un autre programme (n'importe quoi, le bête Notepad par ex.) peut recouvrir le mien quand même...

    Si quelqu'un avait une piste, ça me rendrait un service inappréciable !

    Ah, pour faire fonctionner le mode API (SetWindowPos), il faut rajouter LCLIntf, LCLType, dans les uses.

    Le code complet, pour tester sous Linux (où ça fonctionne très bien) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    procedure TForm1.ckbxToujoursVisibleClick(Sender: TObject);
    begin
      {$IFDEF LINUX}
        if (FormStyle = fsNormal) then
          FormStyle := fsStayOnTop
        else
          FormStyle := fsNormal;
      {$ELSE}
      //if ckbxToujoursVisible.Checked
      if (FormStyle = fsNormal)
      then
    //    ShowMessage('Yes')
    //    SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE)
        FormStyle := fsStayOnTop
      else
    //    ShowMessage('No');
    //    SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
        FormStyle := fsNormal;
      {$ENDIF}
    end;
    Grand merci par avance,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 719
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 719
    Points : 15 105
    Points
    15 105
    Par défaut
    Toujours pareil, suffit que je poste pour trouver la soluce !

    Bon, il suffit de remplacer fsStayOnTop par fsSystemStayOnTop et le tour est joué.

    Je laisse le post et le coche , ça peut toujours servir à d'autres.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

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

Discussions similaires

  1. quel langage choisir pour faire de script sous windows
    Par pas05 dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 18/11/2002, 22h42
  2. Assembleur sous Windows et sous Linux
    Par Bibouda dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 28/10/2002, 07h55
  3. Tester connexion Internet active sous Windows
    Par Altau dans le forum Développement
    Réponses: 3
    Dernier message: 12/08/2002, 12h43
  4. Pas de fork sous Windows?
    Par chezjm dans le forum POSIX
    Réponses: 8
    Dernier message: 11/06/2002, 12h15
  5. OmniORB : code sous Windows et Linux
    Par debug dans le forum CORBA
    Réponses: 2
    Dernier message: 30/04/2002, 17h45

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