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 :

matrice de RadioButton [Sources]


Sujet :

C++Builder

  1. #1
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut matrice de RadioButton
    Bonjour

    j'ai besoin de faire une grille de Radiobutton sur laquelle on ne peut avoir d'actif en même temps que 1 Radiobutton par ligne ET 1 radiobutton par colonne.

    Je fais pour le moment ca avec 7 radiogroup les uns sous les autres.
    mon premier problème est d'une part que je ne parviens pas à cacher la bordure du radiogroupe.
    Mon second problème est que je doits gérer par code la possibilité de cocher un seul radiobutton par colonne, ce qui est loin d'erte simple.

    : Y a t-il un moyen plus propre pour créer ma matrice de RadioButton ?
    : Si non, comment peut on retirer la bordure du Radiogroup
    Comment peut on avoir les boutons plus proche du bord du radiogroup pour pouvoir avoir quelquechose de plus condensé et propre ?

    J'ai beauc fouiner dans les proriétés je ne vois rien qui controle ca.

    Merci par avance

  2. #2
    Membre émérite
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Par défaut
    Salut !

    Pourquoi ne pas utliser des Panel :
    Chaque colonne est un panel qui contient des RadioButton,comme ça chaque colonne contiendera qu'un seul RadioButton activé au maximum !

    a+

  3. #3
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut
    Bonjour,

    Je ne comprends pas l'idée

    Avec mes radiogroup en ligne je n'ai qu'un seul radio par ligne d'activé mais je peux avoir plusieurs radio activé"s sur la meme colonne puisque lesdifférents radiogroup sont indépendants.

    Si je fais des sortes de radiogroup à l'aide de panels verticaux ca fera bien la même chose. La seule différence que les radio seront liés en colonne et plus en ligne.

    Il faut que cette proriété existe en ligne comme en colonne.

    Merci

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    Voici une proposition de code:

    1) Chaque radiobutton est dans un panel indépendant
    2) Je construis dynamiquement une matrice de boutons à laquelle on accède par radios[ligne][colonne]
    3) Une fonction GetXY permet de retrouver laposition d'un bouton à partir de son pointeur
    4) L'événement OnClick de chaque bouton teste si un autre bouton de la colonne ou de la ligne est déja coché. Il affiche un message, les décoche dans mon exemple
    5) Surtout ne pas oublier de détruire la matrice des radiobuttons dans le FormDestroy


    le header:
    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
    31
    //---------------------------------------------------------------------------
     
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ExtCtrls.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// IDE-managed Components
      void __fastcall FormCreate(TObject *Sender);
      void __fastcall FormDestroy(TObject *Sender);
    private:	// User declarations
    public:		// User declarations
      __fastcall TForm1(TComponent* Owner);
     
      TRadioButton*** radios;
      int matXsize,matYsize;
     
      TPoint GetXY(TRadioButton* him) const;
      void __fastcall RadioButtonClick(TObject *Sender);
     
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    le cpp
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
      : TForm(Owner)
    {
      radios=NULL;
      matXsize=3;
      matYsize=3;
     
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
     
      // Construit les lignes de la matrice de radiobuttons
      int group=0;
      radios=new TRadioButton**[matYsize];
      for (int y=0; y<matYsize; ++y) {
        // Pour chaque ligne, construit les colonnes de radiobuttons
        radios[y]=new TRadioButton*[matXsize];
        for (int x=0; x<matXsize; ++x) {
          // Construit un TPanel
          TPanel* panel=new TPanel(this);
          panel->Parent=this;
          panel->Width=23;
          panel->Height=23;
          panel->Top=y*(panel->Height);
          panel->Left=x*(panel->Width);
          panel->BorderStyle=bsNone;
          panel->BevelOuter=bvNone;
          // Construit chaque radiobutton
          radios[y][x]=new TRadioButton(this);
          radios[y][x]->Parent=panel;
          radios[y][x]->Width=17;
          radios[y][x]->Height=17;
          radios[y][x]->Caption="";
          radios[y][x]->OnClick=RadioButtonClick;
        }
      }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormDestroy(TObject *Sender)
    {
      // Delete the matrix of buttons
      for (int y=0; y<matYsize; ++y) {
        delete[] radios[y];
      }
      delete[] radios;
     
    }
    //---------------------------------------------------------------------------
    // PArcourt la matrice des bouttons pour retrouver les corrdonnées XY d'un radiobutton
    TPoint TForm1::GetXY(TRadioButton* him) const {
     
      for (int y=0; y<matYsize; ++y) {
        for (int x=0; x<matXsize; ++x) {
          if (radios[y][x]==him) {
            return TPoint(x,y);
          }
        }
      }
     
      throw Exception("button not in the list");
     
    }
     
    //---------------------------------------------------------------------------
    //! Test si un autre boutton de la colonne ou de la ligne est activé
    void __fastcall TForm1::RadioButtonClick(TObject *Sender)
    {
     
      TRadioButton* radio=dynamic_cast<TRadioButton*>(Sender);
      if ((radio)&&(radio->Checked)) {
        TPoint xy=GetXY(radio);
        bool found=false;
        // Test si un bouton de la ligne est actif
        for (int x=0; x<matXsize; ++x) {
          if ((radios[xy.y][x]->Checked)&&(radios[xy.y][x]!=radio)) {
            Application->MessageBoxA("Il y a déjà un bouton de coché dans cette ligne",
                                     "Erreur",0);
            radios[xy.y][x]->Checked=false;
            found=true;
            break;
          }
        }
        // Test si un bouton de la ligne est actif
        for (int y=0; y<matYsize; ++y) {
          if ((radios[y][xy.x]->Checked)&&(radios[y][xy.x]!=radio)) {
            Application->MessageBoxA("Il y a déjà un bouton de coché dans cette colonne",
                                     "Erreur",0);
            radios[y][xy.x]->Checked=false;
            found=true;
            break;
          }
        }
        // Aucun bouton coché?
        if (found) {
          // radio->Checked=false;
        }
      }
    }
    //---------------------------------------------------------------------------

  5. #5
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut
    Merci mille fois pour ce code et pour le temps passé à le faire !
    C'est exactement ce que je voulais mis à part que ca me complqiue la vie par ce que du coup je vais faire un logiciel plus complet que ce que j'avais prévu au départ

    Merci encore

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

Discussions similaires

  1. matrices * vecteur
    Par delire8 dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 07/09/2002, 14h15
  2. [CR] entête et pied sur page 1/B de matrice
    Par chloe.j3 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 04/09/2002, 12h07
  3. Matrice de filtrage ?
    Par gimlithedwarf dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 24/08/2002, 09h44
  4. Gestion de matrice
    Par bzd dans le forum C
    Réponses: 4
    Dernier message: 12/08/2002, 18h19
  5. Comment définir le type matrice ?
    Par charly dans le forum Langage
    Réponses: 7
    Dernier message: 15/06/2002, 21h01

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