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

Composants VCL Delphi Discussion :

Comment griser ou faire disparaitre le bouton Maximize ?


Sujet :

Composants VCL Delphi

  1. #1
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut Comment griser ou faire disparaitre le bouton Maximize ?
    Bonsoir,

    Tout est dans le titre

    Je ne sait pas trop comment m'y prendre ...
    J'ai lu qu'il fallait surement travaillé avec GetWindowLongA et SetWindowLongA ...

    Si vous pouvez m'éclaircir sur le sujet ...

    PS : En gros, ce que je souhaite faire, c'est comme certains logiciel, c'est lorsque l'on passe du maximize et qu'on reclique dessus (donc passé au niveau inférieur), la form ne rétrécie pas bcp (je sais pas si j'arrive à me faire comprendre ). Et c'est ce que je souhaites faire ... et comme je n'y parviens pas, je voulais griser le maximize ...

    Merci

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Tout simplement, dans le FormCreate (ou en conception) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BorderIcons := BorderIcons - [biMaximize];
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Ah !!! Vraiment très très facile ... et moi qui cherchais midi à 14h

    Sinon, j'ai éditer mon post d'avant qui explique plus en profondeur le pourquoi de la chose ...

    Merci pour cette élément Graffito

  4. #4
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Un p'tit ?
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  5. #5
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut sjrd,

    Le sujet n'est pas encore résolu (j'avais pas eu le temps de mettre mon petit soucis hier).

    J'ai ma Form qui est lancé "maximizée" et, dans le OnCreate de la Form, j'ai mis le code de Graffito. Je n'ai pas Delphi sous la main (je reverrai ce soir mon code) mais lorsque l'on double clic sur la barre de menu (barre avec les boutons réduire, maximiser, fermer), ma Form n'est plus Maximisée et Impossible de la remettre dans cet état... J'espère que vous comprenez un peu ce qui se passe ... (Pas simple d'expliquer mon cas ).

    Si je n'ai pas de réponse avant ce soir, j'éditerai ce message pour vous donner plus d'info

    Merci

  6. #6
    Membre actif
    Profil pro
    DEV
    Inscrit en
    Août 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DEV

    Informations forums :
    Inscription : Août 2006
    Messages : 182
    Points : 211
    Points
    211
    Par défaut
    Je ne sais pas si ca répondrai a ta question
    mais dans le OnCanResize de ta fiche
    tu met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
      NewHeight: Integer; var Resize: Boolean);
    begin
      Resize := False;
    end;
    cela empéche tous redimensionnement de la fiche.

    Cecis dis tu peu quand meme minimizé ta fiche dans la barre des taches !

  7. #7
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Je reviens posté mon soucis! J'avais peur de dire une bêtise ce matin mais là je confirme :

    En mode conception, j'ai mis le Windows State en Maximized. Ca fonctionne, mon bord bas de l'application est juste au dessus de la barre des taches, donc c'est OK.

    Maintenant, en conception (ou pas code), j'édite BorderIcons pour enlever le Maximized et là on testant, ma Form d'application passe en dessous de la barre des taches! Il me manque un morceau

    Donc je me dis que je vais remettre en code le morceau du Maximized ce qui donne dans le OnCreate :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BorderIcons := BorderIcons - [biMaximize];
    WindowState:=wsMaximized;
    Mais ce ne change rien ...

    Mais revenons au but principal qui est en faite, de faire comme certain programme lorsque sont lancé. Le programme est "Maximized", on clic donc sur "Niveau inférieur" et là, la Form doit prendre les valeurs Height et Width lors de la conception en mode "Design".

    Ce que je voudrais, c'est que lorsque je suis en Maximize et que je clic sur le niveau inférieur, j'ai quasiment la même valeur en Width et Height que si j'étais en pleine écran ....

    Essayer de faire un test, vous verrez (car la plus je vais expliquer le soucis, plus je vais vous embrouiller )

    Merci de m'avoir lu

  8. #8
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    As-tu essayé de mettre BorderStyle de ta Form à bsSingle?
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  9. #9
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut Pedro,

    Merci de te pencher sur mon cas!

    Si je fais ce que tu me dis, tout en laissant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BorderIcons := BorderIcons - [biMaximize];
    WindowState:=wsMaximized;
    Celà me mets la fenêtre en plein écran (je n'ai plus de barre des taches). De plus, je peux toujours réduire la fenêtre en double cliquant sur le le "SystemMenu" donc c'est pas trop ce que je souhaite faire ...

    Et moi qui pensait que c'était un problème simple

    [EDIT]

    De plus, il faudrait éviter que ma form soit déplacable lorsqu'elle est maximisée, ce qui pour l'instant n'est pas le cas

  10. #10
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par ero-sennin
    Salut Pedro,

    Merci de te pencher sur mon cas!
    Salut l'ermite
    Citation Envoyé par ero-sennin
    Si je fais ce que tu me dis, tout en laissant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BorderIcons := BorderIcons - [biMaximize];
    WindowState:=wsMaximized;
    Celà me mets la fenêtre en plein écran (je n'ai plus de barre des taches). De plus, je peux toujours réduire la fenêtre en double cliquant sur le le "SystemMenu" donc c'est pas trop ce que je souhaite faire ...

    Et moi qui pensait que c'était un problème simple
    C'est bizarre! C'est pourtant la valeur que je mets lorsque je veux éviter un redimensionnement que ce soit depuis la barre de titre ou le redimensionnement par les bords...
    As-tu essayé d'enlever biMaximize en Design Time?
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  11. #11
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Re,

    J'ai fais un nouveau projet, en mettant en design time :

    - WindowsState = wsMaximized
    - BorderIcons => biMaximized = False
    - BorderStyle = bsSingle

    Résultat :

    Form en plein écran (pas de barre de tâche), redimensionnement impossible par les bords (c'est OK), passage du niveau inférieur en double cliquand sur le "SystemMenu" (pas bon).

    Voilà ce que ça fait chez moi

  12. #12
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Pour résumer car je ne suis pas sûr d'avoir bien compris.
    Tu souhaiterais que ta form soit toujours Maximized, et donc t'interdire de la restaurer (avec le bouton 'Niveau inférieur/Agrandir' ou un double-click sur la barre de titre)?

    [edit]
    Citation Envoyé par ero-sennin
    passage du niveau inférieur en double cliquand sur le "SystemMenu"
    Un double-clic sur le menu système ne ferme-t-il pas l'application (option par défaut du menu) ?


    @+ Claudius

  13. #13
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut Cl@udius,

    Citation Envoyé par Cl@udius
    Tu souhaiterais que ta form soit toujours Maximized, et donc t'interdire de la restaurer (avec le bouton 'Niveau inférieur/Agrandir' ou un double-click sur la barre de titre)?
    Oui voilà, déjà, arriver à faire ça !

    Quand je parle du SystemMenu le terme que je cherchais était barre de titre

    (Désolé d'avoir semer la confusion dans vos esprits).

  14. #14
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Ah OK je comprends mieux !

    La méthode la plus simple pour intercepter le double-clic sur la barre de titre est de placer un TApplicationEvent sur ta fiche et d'implémenter le OnMessage ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      BorderIcons := BorderIcons - [biMaximize];
      BorderStyle := bsSizeable;
      WindowState := wsMaximized;
    end;
     
    procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    begin
      if (Msg.message = WM_NCLBUTTONDBLCLK) then
        Handled := True;
    end;
    J'ai déjà du poster ce code maintenant que j'y pense.

    @+ Claudius

  15. #15
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    OK pour empêcher le double clic sur la barre de menu mais :

    - En désactivant le Maximized du BorderIcons, la partie inférieure de mon application passe sous la barre des taches (la fenêtre est bien maximisée mais ne tient pas compte de la barre des taches).

    - Ensuite, il me faudrait éviter que ma fiche soit déplacable.

    J'ai donc fait une chose qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      BorderStyle := bsSingle;
      WindowState := wsMaximized;
    end;
     
    procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    begin
      if (Msg.message = WM_NCLBUTTONDBLCLK) then
        Handled := True;
    end;
    De cette façon, le bouton 'inférieur/agrandir' reste actif mais ne fais rien du tout, ma form reste maximisée . Ca revient au fait qu'il soit grisé ...

    Si ca peut aider ...

    [EDIT]

    ETRANGE ! Le comportement du code est différent selon le style de la fenêtre en mode Design Time!
    Si en Design Time le style est bsSizeable et qu'on met le code ci dessus dans le OnCreate, alors, on a bien le redimensionnement qui ne s'effectue pas.
    En revanche, si en Design Time, on met le style à bsSingle, là c'est le drame lol. Le bouton 'inférieur/agrandir' fonctionne et la Form prend les valeurs minimal en Width et Height!

    Trop bizarre ça, je comprends pas

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/11/2008, 14h05
  2. Réponses: 5
    Dernier message: 31/03/2008, 10h41
  3. Faire disparaitre un bouton apres clic
    Par chris.lechat dans le forum Flash
    Réponses: 4
    Dernier message: 28/03/2007, 20h27
  4. Faire "disparaitre" des boutons
    Par kevinf dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 06/03/2007, 14h32
  5. Faire disparaitre un bouton!
    Par manuaccess10 dans le forum IHM
    Réponses: 11
    Dernier message: 02/12/2005, 07h28

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