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 :

Re-dimensionnement automatique de composants


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2002
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Re-dimensionnement automatique de composants
    Je développe une appli qui est destinée à des écrans qui ont des résolutions différentes. Est-ce que je peux me débrouiller pour que la taille de mes boutons, edit.... s'adaptent à la résolution de l'écran?
    J'ai un début de solution avec le 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
    19
    20
    21
     
    //ajustement de la taille de l ecran
    #define MyWidth 1152.0
    #define MyHeight 864.0
     
    double wModif,hModif;
    wModif=Screen->Width /MyWidth;
    hModif=Screen->Height /MyHeight;
     
    TControl *pCtrl;
    for (int i=0;i<ComponentCount;i++)
    {
     try
     {
     pCtrl=(TControl *)Components[i];
     pCtrl->Width *= wModif;
     pCtrl->Height *= hModif;
     pCtrl->Left *= wModif;
     pCtrl->Top *= hModif;
     }
     catch (){};
    Mais le pb c'est que je risque de ne pas redimensionner les boutons créés dynamiquement...
    Est-ce que je suis sur la bonne voie ou complètement à l'ouest?
    Merci d'avance pour les réponses.
    A+

  2. #2
    JEG
    JEG est déconnecté
    Membre éclairé
    Avatar de JEG
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 211
    Points : 727
    Points
    727
    Par défaut
    bonne voie, mais il y a fonction de l'API windows qui permet de changer la résolution de l'écran. c'est peut-être plus simple (mais je ne me souviens plus quelle est cette fonction, désolé)

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2002
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    En fait je peux pas changer la résolution de l'écran... L'appli tourne sur un écran LCD (VGA,1/4VGA)...
    Le pb avec mon code c'est que je loupe les composants créés dynamiquement! Est-ce que quelqu'un voit comment les prendre en compte?
    Merci d'avance.
    A+

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Points : 81
    Points
    81
    Par défaut
    Je ne sais pas si la solution est aussi simple mais...

    Le code que tu nous montres est-il antérieur ou postérieur à la création dynamique de tes composants ?
    Je pense qu'il doit être antérieur, sinon, je ne vois aucune raison pour qu'il ne les prenne pas en compte.

  5. #5
    Membre chevronné
    Avatar de Geronimo
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 156
    Points : 1 969
    Points
    1 969
    Par défaut
    En effet
    A chaque fois que tu crée un composant dynamiquement, tu dois le redimenssionner.
    Une question concernant C++Builder ? Voici la réponse
    Consultez aussi les tutoriels de qualité de la section C/C++

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2002
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci pour l'idée Fred
    J'ai qu'à appeler ce code après la création de chaque composant dynamique (je les crée presque tous ensemble). A priori ça devrait marcher...
    Merci pour l'aide.
    A+

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2002
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Juste un détail : si j'ai un composant que je ne peux pas redimensionner (il y en a), il va me lever une exception d'où le try catch. A ton avis qu'est-ce que je fais comme traitement de l'exception? En tout cas merci pour l'aide.
    A+

  8. #8
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Points : 81
    Points
    81
    Par défaut
    Je ne sais pas si c'est à toi qu'une solution avait déjà été apportée sur ce forum il n'y a pas si longtemps.

    Il vaudrait mieux utiliser dynamic_cast pour faire une convertion de ton composant, tu n'aurais ainsi plus besoin du try/catch :


    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
    //ajustement de la taille de l ecran 
    #define MyWidth 1152.0 
    #define MyHeight 864.0 
     
    double wModif,hModif; 
    wModif=Screen->Width /MyWidth; 
    hModif=Screen->Height /MyHeight; 
     
    TControl *pCtrl; 
    for (int i=0;i<ComponentCount;++i) 
    { 
      if (pCtrl = <TControl *>(Components[i]))
      {
        pCtrl->Width *= wModif; 
        pCtrl->Height *= hModif; 
        pCtrl->Left *= wModif; 
        pCtrl->Top *= hModif; 
      }
    }

  9. #9
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 97
    Points : 71
    Points
    71
    Par défaut
    un petit oubli :

    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
    //ajustement de la taille de l ecran 
    #define MyWidth 1152.0 
    #define MyHeight 864.0 
     
    double wModif,hModif; 
    wModif=Screen->Width /MyWidth; 
    hModif=Screen->Height /MyHeight; 
     
    TControl *pCtrl; 
    for (int i=0;i<ComponentCount;++i) 
    { 
      if (pCtrl = [b]dynamic_cast[/b]<TControl *>(Components[i])) 
      { 
        pCtrl->Width *= wModif; 
        pCtrl->Height *= hModif; 
        pCtrl->Left *= wModif; 
        pCtrl->Top *= hModif; 
      } 
    }
    [Modération, Alacazam : Prière d'utiliser la balise [CODE] qui améliore nettement la lisibilité, merci]

  10. #10
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Points : 81
    Points
    81
    Par défaut
    Oui merci, j'aurais dû me relire.
    @+
    Frédéric

  11. #11
    Futur Membre du Club
    Inscrit en
    Avril 2002
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Ok merci pour votre aide
    A+

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

Discussions similaires

  1. Ouvrir une fenetre dimensionnée automatiquement
    Par Nohman dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/05/2006, 20h07
  2. Réponses: 2
    Dernier message: 24/01/2006, 18h12
  3. Réponses: 3
    Dernier message: 29/08/2005, 15h33
  4. Dimensionner automatiquement une fenetre
    Par ch5oun dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 20/04/2005, 15h18

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