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 :

Connaître les dimensions de la fiche non maximisée


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut Connaître les dimensions de la fiche non maximisée
    Bonjour,

    J'ai une fiche qui s'ouvre maximisée et donc le Width et le Height s'adapte à la taille de l'écran.
    J'aimerai connaître le Width et le Heigh qu'elle aurait si elle ne s'ouvrait pas en maximisée.

    J'ai essayé de trapper le message WM_GETMINMAXINFO mais ça ne passe pas dedans.

  2. #2
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    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 704
    Par défaut
    Et quand tu fais ton test dans le OnCreate, la fenêtre est déjà redimensionnée ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"É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.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Oui, c'est déjà trop tard.
    J'ai fait au plus simple avec un constructeur et un événement Create avec un point d'arrêt dans chaque méthode.

    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
    TFormTest = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
        FInt  : Integer;
      public
        { Déclarations publiques }
        constructor Create(AOWner : TComponent); override;
      end;
     
    constructor TFormTest.Create(AOWner: TComponent);
    begin
      inherited;
     
    end;
     
    procedure TFormTest.FormCreate(Sender: TObject);
    begin
      FInt := 0;
    end;
    Avant le inherited les valeur sont à zéro.
    Après le inherited les valeurs sont déjà celles de la fenêtre maximisée.

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    Quid des événements OnCanResize et OnConstrainedResize ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Idem, ce qui est plutôt logique vu qu'il sont appelés après.

  6. #6
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    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 704
    Par défaut
    Je ne comprend pas tout.

    Je viens de faire un nouveau projet de test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      ShowMessage(IntToStr(Height) + #13#10 + IntToStr(Width));
    end;
     
    procedure TForm1.FormResize(Sender: TObject);
    begin
      ShowMessage(IntToStr(Height) + #13#10 + IntToStr(Width));
    end;
    Le OnCreate me donne la taille de conception, et le OnResize me donne la taille maximisée.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"É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.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  7. #7
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Attention, le comportement de FormCreate dépend de OldCreateOrder
    Quelle version de Delphi ?

    Comme Lung, sur XE2, cela fourni les tailles du Design dans le OnCreate

    Sinon dans le constructor,
    Avant le inherited, c'est logique que cela soit à zéro, l'objet est juste initialisé
    Le inherited Create fait appel au CreateNew qui crée une fenêtre vierge ensuite le Create charge le DFM (cela crée les contrôles, lie les références ...) et par conséquent cela charge les valeurs Width et Height

    En réalité, ce n'est pas Width et Height mais plutôt ClientHeight et ClientWidth qui sont stockés à la place de Height et Width dans le DFM car évite des problèmes liés au changement de bordure du thème !
    Mais pour que ClientHeight et ClientWidth soit géré et donc avoir la bonne taille au FormCreate,
    il faut laisser HorzScrollBar.Range et VertScrollBar.Range à Zéro et laisser AutoScroll à False !
    Pour les curieux qui ont une version PRO ou plus, voir ligne 5355 de TCustomForm.CreateParams (Vcl.Forms.pas)
    Si l'on change l'un des des trois, on obtient le phénomène observé par popo
    Cela peut aussi exister sur un ancien Delphi qui n'avait pas encore bénéficié de ces améliorations !

    Comme Windows peut restorer une fenêtre au dimension prévue, c'est qu'il connait les dimensions de restauration
    Et même Windows, ne retrouve plus la taille de restauration si l'on touche à AutoScroll / HorzScrollBar / VertScrollBar
    Citation Envoyé par mdsn
    rcNormalPosition
    Type: RECT

    The window's coordinates when the window is in the restored position.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var
      wp : TWindowPlacement;
    begin
      ZeroMemory(@wp, SizeOf(wp));
      wp.length := SizeOf(wp);
      GetWindowPlacement(Self.Handle, wp);
      ShowMessage(Format('%d, %d -> %d, %d / H %d W %d ', [wp.rcNormalPosition.TopLeft.X, wp.rcNormalPosition.TopLeft.Y, wp.rcNormalPosition.BottomRight.X, wp.rcNormalPosition.BottomRight.Y,
        wp.rcNormalPosition.Height, wp.rcNormalPosition.Width]));
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

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

Discussions similaires

  1. Connaître les dimensions d'une image dans un zip
    Par radovan dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 14/06/2013, 10h31
  2. Connaître les dimensions du contenu d'un popup
    Par riete dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 20/08/2009, 11h39
  3. Connaître les dimensions d'un symbole
    Par jyloup dans le forum Mathématiques - Sciences
    Réponses: 4
    Dernier message: 30/06/2009, 11h17
  4. Connaître les dimensions d'une police
    Par cdefranoux dans le forum Framework .NET
    Réponses: 1
    Dernier message: 10/10/2007, 10h50
  5. [GD] Connaître les dimensions d'une image
    Par stitch dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 10/10/2006, 21h23

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