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 :

Modifier la propriété d'un contrôle par un indice


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Points : 35
    Points
    35
    Par défaut Modifier la propriété d'un contrôle par un indice
    Bonjour tout le monde!

    Je souhaite modifier la propriété d'un contrôle par un indice, je m'explique :

    J'ai une propriété en forme de combobox un peu comme la propriété BiDiMode dans TLabel, sauf que la mienne elle est dynamique(porpriété port dans TComport si vous avez ce contrôle....), bon peu import, ce que j'aimerais savoir c'est :

    -> Comment pouvoir modifier une propriété de ce genre à l'aide d'un indice (un int par exemple) donc si mon indice=1 donc on choisi le 1er choix de ma propriété de mon contôle et ainsi de suite.

    -> Et aussi je ne sais pas comment récupérer le nombre des choix d'une propriété à un nombre de choix variant.

    Si vous pouvez bien m'aider ça sera très sympa

  2. #2
    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,
    Quel est ce composant?

    a défaut de pouvoir t'aider de suite, tu peux changer la propriété BiDiMode d'un TLabel de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label2->BiDiMode << bdLeftToRight;
    Même créé dynamiquement, tu doit avoir accès à ton TComport.

    Pour récupérer le nombre de choix d'une propriété, je n'en sais rien. Dsl

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Points : 35
    Points
    35
    Par défaut
    Merci Bandit boy pour cette tentative je t'aprécie

    Bon, mon Tcomport est un contrôle pour gérer les ports série d'un terminal, tu peux te l'installer à partir de ce lien http://petit.developpez.com/ tu a aussi une description pour son utilisation au même liens, ainsi que les étapes à suivre pour l'installation (un petit peu laborieux mais si on suit les étapes comme il faut ca marche à condition d'avoir au moins un port série sur son terminal, je n'ai pas testé pour des terminaux qui disposent d'un émulateur de port série...) et dans ce contrôle on a une propriété "Port" qui nous permet de choisir le port sur lequel on souhaite traffiquer(choix de port COM1, COM2 etc.) c'est un menu en forme de combobox dans l'inspecteur des objets. et le nombre des ports de communications varie selon le terminal! c'est pour ça que cette liste est dynamique. et mon but est de récupérer cette liste des choix de cette propriété "Port" et la mettre dans un combobox car je souhaite intégrer une interface de configuration dans mon programme.

    P.S:le composant TComport offre l'objet "comport" qui lui offre une interface (un Form) tout fais qu'on appel de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComPort1->ShowSetupDialog();
    elle sert à configurer la liaison avec le choix de port mais cette interface ne m'interesse pas car la mienne est très spécifique et que dans le même combobox que je crée j'ajoute autre chose que des simples ports COM.

    Je sais je ne suis pas facile mes parent m'ont souvent ->

  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
    Je connais ce composant, pour l'avoir utilisé. Mais je n'ai pas accroché et j'ai fais moi même ce que fais ce composant.
    Je ne sais pas trop comment récupérer cette liste, mais je peux te proposer une fonction permettant le teste des port COM pour créer toi même cette liste, si ca te tente:
    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
     
    boolean __fastcall TForm1::CheckCOMAvailibility(char comportname[4])
    {
            if (OpenComPort(comportname, 4800))
            {
                    CloseComPort();
                    return(true);
            }
            return(false);
    }
     
    boolean __fastcall TForm1::OpenComPort(char comportname[5], uint comspeed)
    {
    	boolean success;
     
    	// Open the COM port
    	comHandle = CreateFile(comportname, GENERIC_READ|GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
    	if (comHandle == INVALID_HANDLE_VALUE) return(false);
     
    	// Get the current settings of the COMM port
    	success = GetCommState(comHandle, &dcb);
    	if (!success) return(false);
     
        // Modify the baud rate, etc.
    	dcb.BaudRate = comspeed;
    	dcb.ByteSize = 8;
    	dcb.Parity = NOPARITY;
    	dcb.StopBits = ONESTOPBIT;
     
    	// Apply the new comm port settings
    	success = SetCommState(comHandle, &dcb);
    	if (!success) return(false);
     
    	// Change the ReadIntervalTimeout so that
    	// ReadFile will return immediately. See
    	// help file
    	timeouts.ReadIntervalTimeout = MAXDWORD;
    	timeouts.ReadTotalTimeoutMultiplier = 0;
    	timeouts.ReadTotalTimeoutConstant = 0;
    	timeouts.WriteTotalTimeoutMultiplier = 0;
    	timeouts.WriteTotalTimeoutConstant = 0;
    	SetCommTimeouts( comHandle, &timeouts );
     
    	// Set the Data Terminal Ready line
      	EscapeCommFunction(comHandle, SETDTR);
            PurgeComm(comHandle, PURGE_RXCLEAR);
    	return(true);
    }
    il te suffit de faire une boucle de CheckCOM, si la fonction retourne true, le port COM existe, sinon il n'existe pas.

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut Akeon:
    Ce qui t'interresse si j'ai bien compris c'est de savoir le NB de ports Com sur ton ordinateur.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Points : 35
    Points
    35
    Par défaut
    Salut les Gars,
    Désolé pour mon absence je trouvais pas le moment pour rédiger une réponse.
    C'est génial ce que tu propose Bandit boy, je me suis appuié pas mal sur ton bout de code et ça marche
    Merci à vous de votre intêret!!!!!


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

Discussions similaires

  1. [XL-2010] Pour modifier les propriétés d'un contrôle ActiveX
    Par goofyto8 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/06/2015, 20h24
  2. [XL-2007] Modifier les propriétés d'un contrôle
    Par Walterbelo dans le forum Excel
    Réponses: 2
    Dernier message: 01/11/2012, 18h06
  3. Réponses: 3
    Dernier message: 08/04/2007, 13h29
  4. [VBA-E] Modifier les propriétés d'un control par une routine
    Par formath dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/03/2007, 10h45
  5. [C#] Modifier Propriété d'un contrôle d'une autre Form
    Par sara21 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 16/09/2006, 20h41

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