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

C++Builder Discussion :

Redimensionnement composants après modif taille fenetre


Sujet :

C++Builder

  1. #1
    Membre du Club Avatar de Revan777
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 87
    Points : 52
    Points
    52
    Par défaut Redimensionnement composants après modif taille fenetre
    Bonjour,
    j'ai une appli que je veux pouvoir agrandir en plein écran mais je ne sais pas si je gère bien le redimensionnement des composants de ma fiche.
    Il y a surement un moyen plus simple pour gérer la mise en page après changement de la taille de la fenêtre.
    Merci de m'éclairer là-dessus.

    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
    void __fastcall TForm1::FormResize(TObject *Sender)
    {
            // Redimensionnement des Memo
            Memo1->Left = 8;
            Memo2->Left = 8;
            Memo1->Width = Form1->Width - 24;
            Memo2->Width = Form1->Width - 24;
     
            if (Memo1->Width < 610)  // Taille d'origine
            {
                    Memo1->Height = 81;
                    Memo2->Height = 81;
                    Memo1->Top = 184;
                    Memo2->Top = 288;
                    Label8->Top = 272;
            }
            else  // Adaptation des tailles pour le plein écran
            {
                    Memo1->Height = 162;
                    Memo2->Height = 162;
                    Memo2->Top = Memo2->Top + 81;
                    Label8->Top = Label8->Top + 81;
            }
     
            // Redimensionnement des TCapture
            TCapture->Left = 8;
            TCapture->Width = Form1->Width - 24;
            TCapture2->Left = 8;
            TCapture2->Width = Form1->Width - 24;
    }

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 137
    Points : 161
    Points
    161
    Par défaut
    Je n'écris jamais une ligne de code pour gérer un redimensionement.

    Il faut utiliser la propriété Align des composants (et des TPanel pour subdiviser la fenêtre)... Le truc bien avec Builder est que tu peux immédiatement tester le redimensionement sans compiler.

  3. #3
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    j'ajouterai qu'une bonne gestion des Anchors associée au Align devrait en effet répondre à la problématique.
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  4. #4
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut,
    Je n'ai jamais vu une solution propre et facile à mettre en place pour adapter n'importe quelle application à n'importe quelle résolution d'écran.

    J'ai fait un petit code très basique dans le genre:
    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
     
        int i;
        TControl *Component;
        double dx = (double)Screen->Width/(double)Form1->Width;
        double dy = (double)Screen->Height/(double)Form1->Height;
     
        Form1->Top    = 0;
        Form1->Left   = 0;
        Form1->Width  = Form1->Width  * dx;
        Form1->Height = Form1->Height * dy;
     
        for(i=0;i<Form1->ControlCount;i++)
        {
            Component         = dynamic_cast<TControl *>(Form1->Components[i]);
            Component->Width  = Component->Width  * dx;
            Component->Height = Component->Height * dy;
            Component->Top    = Component->Top    * dy;
            Component->Left   = Component->Left   * dx;        
        }
    Mais ca ne remet en place la taille et la position des composants, pas les structures internes (composants dans TPanels, cellules de grilles ...)

    Il faudrait construire une application en 600*800, et n'avoir qu'à augmenter la taille de ceux ci, car les alignements ne sont pas disponibles sur tous les composants et les ancres effaces parfois les petits composants lorsque la fenêtre est redimensionnée plus petite.
    C'est très difficile à gérer.

  5. #5
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    Citation Envoyé par bandit boy
    les ancres effaces parfois les petits composants lorsque la fenêtre est redimensionnée plus petite.
    C'est très difficile à gérer.
    c'est clair... c bizarre que BCB prévoit pas mieux que ça tout seul comme un grand
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  6. #6
    Membre du Club Avatar de Revan777
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 87
    Points : 52
    Points
    52
    Par défaut
    Si j'ai bien compris, il n'y a pas de méthodes particulières, seulement quelques bidouilles. Mon code fonctionne pas mal, je ne vais pas y toucher pour l'instant mais je vais étudier l'utilisation des TPanel et Align pour voir.
    Merki.

Discussions similaires

  1. Modification taille de fenetre
    Par dealinfo dans le forum Outils
    Réponses: 9
    Dernier message: 26/02/2014, 15h59
  2. modification des fenetres du composant ccfeedback
    Par cassandra dans le forum WinDev
    Réponses: 3
    Dernier message: 26/02/2014, 08h36
  3. Taille d'un composant après chargement
    Par Thread62 dans le forum GWT et Vaadin
    Réponses: 2
    Dernier message: 03/06/2010, 01h21
  4. Réponses: 2
    Dernier message: 03/05/2007, 16h58
  5. [] Datagrid vide après modification des propriétés
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/09/2002, 16h37

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