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

Delphi Discussion :

interdire resize form


Sujet :

Delphi

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Par défaut interdire resize form
    Salut à tous,
    J'ai un problème lorsque je resize mon appli. J'ai fixé des valeurs minWidth et minHeight. Quand je resize par le bas, si la hauteur est minimale, on ne peut plus redimensionner et tout estok. Mais quand je redimensionne par le haut, dès que ma form atteint minHeight, alors elle est décalée vers le bas. Idem pour gauche droite. J'ai essayé de toucher les options Anchors de ma form principale en mettant tout à false ou tout à true mais rien n'y fait. Help ! ...
    Merci d'avance !

  2. #2
    Membre chevronné Avatar de der§en
    Homme Profil pro
    Bretagne
    Inscrit en
    Septembre 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bretagne
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 129
    Par défaut
    Etonnant, tu as surement mal parametrés les alignements quelque part, car le Min et Max fonctionne plutôt bien.

    Der§en.

  3. #3
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 166
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 166
    Par défaut
    Ah, je confirme le gag de Krokmitaine, j'ai testé ! (D7 PE)
    Cependant, il s'est un peu mal exprimé :
    alors elle est décalée vers le bas
    Moi j'aurais dit : " elle est déplacée vers le bas "
    Et c'est vrai que c'est loufoque à voir !
    --
    jp

  4. #4
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Ça le fait aussi avec D6 perso. La form se déplace au lieu d'être bloquée par la taille minimale. J'ai cherché sans trouver le moyen de corriger ce problème. Si quelqu'un possède une solution, ça m'intéresse aussi, à+

  5. #5
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    une début d'idée, :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
       Form1=Tform
    .....
        procedure FormCanResize(Sender: TObject; var NewWidth,
          NewHeight: Integer; var Resize: Boolean);
      private
        { Déclarations privées }
    ......
        Procedure MonMessage(var msg:TMessage);message wm_user;
    ...
       end;
    ...
    procedure TForm1.MonMessage;
    begin
         with msg do
           begin
             if WParam<0 then top:=top+WParam;
             if LParam<0 then Left:=left+LParam;
           end;
    end;
    procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
      NewHeight: Integer; var Resize: Boolean);
    var  h,l:integer;
    begin
         h:=NewHeight-300;
         l:=NewWidth-300;
         Resize:=(NewWidth>=300) and (NewHeight>=300);
         if not Resize then
           PostMessage(handle,wm_user,h,l);
    end;

  6. #6
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 166
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 166
    Par défaut
    une début d'idée
    C'est pire ! En plus, là, il y a du flicker sur la form...
    --
    jp

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Par défaut
    Je retrouve le même comportement exaspérant avec les splitters !!!
    En fait j'ai un splitter au-dessus d'un panel qui a une contrainte de hauteur. Dès que le splitter a réduit mon panel jusqu'à sa limite alors c'est toute l'application qui se resize vers le bas ...

    Tout à l'heure j'étais sous D7 Architecte (travail), là je suis sous D2006 Studio (maison). J'espère qu'ils ont une bonne raison chez Borland pour nous laisser trainer ce genre de trucs ...

  8. #8
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    Citation Envoyé par Jipété
    C'est pire ! En plus, là, il y a du flicker sur la form...
    --
    jp
    ??????

  9. #9
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Par défaut
    C'est encore pire que ce que je croyais : j'ai un deuxième panel au dessus de mon splitter avec une contrainte de hauteur minimale lui aussi. Quand je remonte mon splitter après l'avoir fait descendre (donc que j'ai agrandi ma fenêtre) jusqu'à la limite de mon second panel, le phénomène n'apparait pas. Mieux encore quand je le redescend vers le bas, il a disparu et ma fenetre ne se redimensionne plus ... Je comprends plus rien

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 166
    Par défaut
    Tu devrais nous mettre qqpart un zip avec le .pas ET le .dfm.
    --
    jp

  11. #11
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut

    désoler, et ce code
    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
    procedure TForm1.MonMessage;
    begin
         with msg do
           begin
             top:=WParam;
             Left:=LParam;
           end;
    end;
    procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
      NewHeight: Integer; var Resize: Boolean);
    var  h,l:integer;
    begin
         h:=top;
         l:=left;
         Resize:=(NewWidth>=300) and (NewHeight>=300);
         if not Resize then
           PostMessage(handle,wm_user,h,l);
    end;
    bien sur sans modifier la propriéte de contrain

  12. #12
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166

  13. #13
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 166
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 166
    Par défaut
    Yop !
    À l'ouverture de la fiche j'ai eu une tripotée de messages à propos d'une propriété que je n'ai pas en D7 (me rappelle plus, à propos de taille...), bref, j'ai déplacé la ToolBar hors du panelContainer, j'ai rajouté
    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
      if NewWidth  < form1.Constraints.MinWidth  then Resize := False;
      if NewHeight < form1.Constraints.MinHeight then Resize := False;
    end;
    et c'est pareil ! C'est p'têt "a feature" ?
    --
    jp

  14. #14
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Par défaut
    héhé !
    Quand même je ne comprends pas comment ça se fait que personne n'aie signalé ce problème plus tot.
    Bon bah si quelqu'un trouve la solution je l'en remercie d'avance.

  15. #15
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 166
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 166
    Par défaut
    désoler, et ce code
    Heu, chez moi, obligé de Ctrl-Alt-Suppr pour tuer la tache...
    [edit] en mettant comme ça, ça va beaucoup mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Resize := (NewWidth > form1.Constraints.MinWidth) and (NewHeight > form1.Constraints.MinHeight);
    Mais c'est toujours mauvais, même pire, au niveau du flicker de la form.
    --
    jp

  16. #16
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    flicker de la form.
    ?????????????
    j'ia delphi6 et sa "marche" cher moi

  17. #17
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 166
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 166
    Par défaut
    @edam : kess tu veux que j'te dise, moi...
    Chez moi si j'essaye de diminuer la taille en agissant sur la bordure supérieure, la fiche se met à trembler, le pointeur garde l'icone "Resize" et Ctrl-Alt-Suppr pour tuer ! Je ne peux même plus descendre dans le Systray (où je planque un outil "tueur" !)...
    That's life !
    @krokmitaine : c'étaient les Explicit..., les ai retrouvées.
    bon, j'avais en plus une affreuse appartion de panneau blanc en cas de move du splitter horizontal, entre lui et les 2 panneaux blancs du haut, une horreur ! Jette un oeil à l'attachment.
    Pour m'en débarasser, j'ai viré toutes les shapes. C'est moins beau (quoique..)...
    --
    jp
    Images attachées Images attachées  

  18. #18
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Par défaut
    C'est quoi les Explicit ? Je les trouve où ?
    Et pour l'histoire de la bande blanche qui se crée en fait c'est moi qui a fait une erreur. La shBorderRightTop il faut la mettre en alBottom du panel paFilters et non en alTop de paRight.

  19. #19
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    et:
    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
     
    .....
    private
      rec:TRect;
    ....
     
    procedure TForm1.MonMessage;
    begin
         inc(adp);
         BoundsRect:=rec;
    end;
    procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
      NewHeight: Integer; var Resize: Boolean);
    begin
         rec:=BoundsRect;
         Resize:=(NewWidth>=300) and (NewHeight>=300);
         if not Resize then PostMessage(Handle,wm_user,0,0);
    end;

Discussions similaires

  1. interdire fermeture form sur condition
    Par santacrus dans le forum VBA Access
    Réponses: 7
    Dernier message: 25/10/2008, 17h19
  2. redimensionner paintbox selon form.resize
    Par chourmo dans le forum Delphi
    Réponses: 4
    Dernier message: 12/05/2006, 16h11
  3. comment interdire la validation d'un form par "Entrée&q
    Par taillooo dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 14/09/2005, 18h33
  4. [VB.NET] Interdire la sortie sauvage d'un form
    Par jennings dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/01/2005, 11h50
  5. [VB6] [Form] Interdire le déplacement d'une feuille
    Par Loïc dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 23/09/2002, 16h02

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