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 :

Alterner la taille d'une fenêtre entre normal et tout l'écran


Sujet :

Lazarus Pascal

  1. #1
    Invité
    Invité(e)
    Par défaut Alterner la taille d'une fenêtre entre normal et tout l'écran
    Bonjour,

    je souhaite alterner la taille de ma fenêtre de normal à tout l'écran.
    Pour cela j'ai un popup menu avec 2 items "Agrandir" et "réduire" qui utilisent le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.mnAgrandirClick(Sender: TObject);
    begin
      WindowState := wsMaximized;
    end;
     
    procedure TForm1.mnReduireClick(Sender: TObject);
    begin
      WindowState := wsNormal;
    end;
    Jusque là tout va bien.
    Maintenant je souhaite passer d'un mode d'affichage à l'autre en double cliquant directement sur le form.
    Je pensais faire simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.FormDblClick(Sender: TObject);
    begin
      if (WindowState = wsNormal)
      then WindowState := wsMaximized
      else WindowState := wsNormal;
    end;
    Le problème est alors que lors de l'agrandissement la fenêtre est mal positionnée, elle reste où elle se trouve au milieu de l'écran avec la bonne taille agrandi.
    Est-ce un bug ? Ou dois-je faire différemment ?

    Merci de vos réponses.
    Ben

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 138
    Points : 172
    Points
    172
    Par défaut
    Bonjour.

    Je ne comprends pas bien votre question. J'ai essayé et le comportement me semble être celui attendu : la fenêtre passe en plein écran puis revient à son état initial (taille et emplacement).

    Christian

  3. #3
    Membre habitué

    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 65
    Points : 133
    Points
    133
    Par défaut
    Bonjour,
    j'ai essayé et pour moi aussi,le comportement est normal.

  4. #4
    Membre chevronné

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 035
    Points : 2 053
    Points
    2 053
    Par défaut
    Pareil pour moi, ça fonctionne. Après agrandissement plein écran le retour à wsNormal la remet à la taille et position qu'elle avait avant.

  5. #5
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    En Delphi, ça pourrait être un problème lié à la propriété Position de la Form.
    Cette propriété existe sous Lazarus ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  6. #6
    Invité
    Invité(e)
    Par défaut
    J'ai 2 écran, je ne sais pas si cela peut jouer.
    Je vous joins une copie du projet si vous pouvez tester ce que cela donne chez vous.

    Merci
    Fichiers attachés Fichiers attachés

  7. #7
    Membre chevronné

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Points : 1 884
    Points
    1 884
    Par défaut
    Bonjour.

    Dans ton code, la propriété Form1.Position = poDefault.
    Ce qui, chez moi (Windows 7), entraine un agrandissement de la fiche par rapport aux dimensions fixées en mode design.
    Si tu fixes Form1.Position = poScreenCenter --> ton problème est-il résolu ?

    Cordialement
    Thierry

  8. #8
    Invité
    Invité(e)
    Par défaut
    J'ai justement changé la propriété Form1.Position de poScreenCenter à poDefault avant de sauvegarder ce projet pour voir si mon problème ne venait pas de là.

  9. #9
    Membre chevronné

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 035
    Points : 2 053
    Points
    2 053
    Par défaut
    Dans l'inspecteur d'objets tu as viré la propriété BorderIcons et par le fait même la possibilité de redimensionner la fenêtre. Remet cette propriété à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [biMinimize,biMaximize]
    Et tout ira bien. J'ai aussi 2 écrans.

  10. #10
    Membre chevronné

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 035
    Points : 2 053
    Points
    2 053
    Par défaut
    Et tu n'as pas non plus besoin de Posx Posy, la fenêtre retrouve bien taille et position sans eux.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mm_71 Voir le message
    Dans l'inspecteur d'objets tu as viré la propriété BorderIcons et par le fait même la possibilité de redimensionner la fenêtre. Remet cette propriété à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [biMinimize,biMaximize]
    Et tout ira bien. J'ai aussi 2 écrans.
    Je n'ai peut être pas utilisé la bonne méthode, je afficher la fenêtre sans icônes ni titre. Je souhaiterais masquer complètement la barre en haut de la fenêtre.
    J'ai tester en les remettant à True, cela ne change rien.


    Et tu n'as pas non plus besoin de Posx Posy, la fenêtre retrouve bien taille et position sans eux.
    Posx et Poxy me servent à déplacer la fenêtre en cliquant à l'intérieur de celle-ci.
    Ils ne sont pas utilisés pour la redimension.



    C'est juste le double clique qui pose problème, les méthodes appelées depuis le menu contextuel, qui semblent faire la même chose, fonctionne correctement.

  12. #12
    Membre chevronné

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 035
    Points : 2 053
    Points
    2 053
    Par défaut
    Je souhaiterais masquer complètement la barre en haut de la fenêtre.
    Pour ça c'est BorderStyle=:=BsNone mais le programme ne fonctionnera plus.
    Pour maximiser ou redimensionner une fenêtre il faut que la barre et les icônes appropriés soient actifs.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Je ne veux pas mettre BorderStyle := BsNone, car la fenêtre doit rester redimensionnable.
    Encore une fois cela fonctionne bien en passant par le menu contextuel, c'est seulement le double clique qui pose problème.

  14. #14
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Salut tu peux essayé ça :

    Je sais plus ou j'ai lu ça mais il faut également re-paramétrer les propriétés FormStyle et Position (cf ExitFullScreen). BorderStyle c'est optionel si je me souviens 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
    procedure TForm1.EnterFullScreen;
    begin
     BorderStyle:=bsNone;
     FormStyle:=fsSystemStayOnTop;
     WindowState:=wsMaximized; //wsFullScreen;
     FFullScreen:=True;
    end;
     
    procedure TForm1.ExitFullScreen;
    begin
      WindowState:=wsNormal;
      Position:=poDesigned;
      FormStyle:=fsNormal;
      BorderStyle:=bsSizeable;
      FFullScreen:=False;
    end;
    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  15. #15
    Invité
    Invité(e)
    Par défaut
    Merci, je teste et vous tiens au courant.

  16. #16
    Membre chevronné

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 035
    Points : 2 053
    Points
    2 053
    Par défaut
    Je sais plus ou j'ai lu ça mais il faut également re-paramétrer les propriétés FormStyle et Position (cf ExitFullScreen). BorderStyle c'est optionel si je me souviens bien.
    Au moins sous Linux mint 18.2 GTK 2 ça ne marche pas, j'avais essayé un truc du genre et ton exemple me donne des résultats similaires et désastreux. La fençetre s'agrandit bien mais après soit elle passe en mode minimisé dans la barre des tâches, soit le système se fige plusieurs dizaines de secondes et quand il revient à lui la fenêtre à carrément disparu .
    C'est du delphi ça non ? Pas trouvé avec Lazarus.
    Encore une fois cela fonctionne bien en passant par le menu contextuel, c'est seulement le double clique qui pose problème.
    Oui, j'avais compris, mais le code que je met ici en P.J. fonctionne parfaitement sous Linux mint 18.2, si après compilation il ne fonctionne pas chez toi il faut en déduire qu'il y-a un bogue dans la version lazarus de winodws.
    Tu as essayé de mettre un showmessage('test'); dans la procédure double click pour voir si elle est bien appelée ?
    testwin.zip

  17. #17
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par mm_71 Voir le message
    Au moins sous Linux mint 18.2 GTK 2 ça ne marche pas, j'avais essayé un truc du genre et ton exemple me donne des résultats similaires et désastreux. La fençetre s'agrandit bien mais après soit elle passe en mode minimisé dans la barre des tâches, soit le système se fige plusieurs dizaines de secondes et quand il revient à lui la fenêtre à carrément disparu .
    Ce que j'avais lu c'était pour Mac, justement. Il y a une chose à faire. Benoit fait une recherche sur le Forum anglais, il me semble que c'etait là que j'avais lu l'info

    Citation Envoyé par mm_71 Voir le message
    C'est du delphi ça non ? Pas trouvé avec Lazarus.
    Non FFullScreen c'est une variable à moi que j'ai laissé trainer

    Sinon il faut sauvegarder la position( Left et Top) Avant passer en plein écran et rétablir ensuite.
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  18. #18
    Invité
    Invité(e)
    Par défaut
    Je me remet dessus dans la semaine, je vous tiendrais informé

Discussions similaires

  1. adapter la taille d'une fenêtre sur un JPanel
    Par Zorgloub dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 29/03/2006, 16h19
  2. Fixer la taille d'une fenêtre
    Par rockelite dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 24/12/2005, 13h09
  3. [HTML] bloquer la taille d'une fenêtre
    Par discogarden dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 15/12/2005, 16h16
  4. taille d'une fenêtre
    Par Zakain dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 27/10/2005, 15h11
  5. [Débutant] Trouvez la taille d'une fenêtre
    Par Sharukh Khan dans le forum MFC
    Réponses: 6
    Dernier message: 06/06/2004, 22h23

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