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 :

[ListBox ] Comment attribuer une valeur à chaque item ?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    AT
    AT est déconnecté
    Membre confirmé Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Par défaut [ListBox ] Comment attribuer une valeur à chaque item ?
    Bonjour,

    J'ai (exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const t:array[0..24]of string=('FF','VVV','RRR',................);
    que j'affiche dans une ListBox

    Pour chaque éléments de t une valeur constante est affecté

    FF=12 VVV=12,5 RRR=1,56 ........................

    Je cherche le moyen le plus simple ou judicieux pour que cette valeur s'affiche qud je clic sur l'élément dans la ListBox
    Dois je créer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const tval:array[0..24]of string=('12','0.26','1.56',.....)
    merci

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Ton problème réside dans la façon de récupérer la valeur de l'item sélectionné ?
    Ou bien tu ne sais pas comment l'afficher ?

    @+

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Par défaut
    Bonjour,

    ShowMessage(tval[ListBox1.ItemIndex]);
    ou bien
    Edit1.text:=tval[ListBox1.ItemIndex];

    A+
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    pour moi le plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    const t:array[0..24]of recod 
                                      ref    : String[10];
                                      value : currency;
                                   end = ((ref:'FF';value:12)
                                            ,(ref:'VVV';value:0.26)
                                            ,(ref:'RRR';value:1.56)
                                            ,................);
    l'item selectionner correspondant a la position de celui-ci dans le tableau
    retrouver la valeur corespondante n'est qu'une formalité

    @+ Phil

  5. #5
    AT
    AT est déconnecté
    Membre confirmé Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Par défaut
    ok

    Comment recuperer de anapurna dans un showmessage ou un edit


  6. #6
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.ListBox1Click(Sender: TObject);
    begin
      with t[ListBox1.ItemIndex] do
        ShowMessage(ref + ' = ' + FloatToStr(Value));
    end;
    @+

  7. #7
    AT
    AT est déconnecté
    Membre confirmé Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Par défaut
    cool


  8. #8
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    je dirait meme plus que claudius

    comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TForm1.ListBox1Click(Sender: TObject);
    begin
      if sender is TListBox Then
      with t[(sender as TListBox).ItemIndex] do
        ShowMessage(ref + ' = ' + FloatToStr(Value));
    end;
    j'aime pas nommé explicitement les objet quand ce n'est pas necessaire
    ca evite bien des modif le jour ou tu renomme l'objet avec un nom parlant

    @+ Phil

    PS : au fait bonne année a toutes et a tous

  9. #9
    AT
    AT est déconnecté
    Membre confirmé Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Par défaut
    si je veux maintenant en ouvant une inputbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    passL:=InputBox('Choisir la value.','Attribue une valeur correspondantes.','');
    je tape une valeur par ex 0.26

    1. l'item correspondant dans la listbox doit etre selectionner et mis en valeur

    2. Et peut on limiter la saisie dans une inputbox à des chiffres et 1 virgule ?

    merci

  10. #10
    AT
    AT est déconnecté
    Membre confirmé Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Par défaut
    Comment puis recuperer dans la listbox les valeurs de ref seulement?

  11. #11
    AT
    AT est déconnecté
    Membre confirmé Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Par défaut
    Plutot
    J'avais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for i:=Low(t) to High(t) do
     begin
     Listbox2.Items.Add(t[i]);
     end;
    Maintenant avec t:array[0..24]of record
    ref : String[10];
    value : currency;
    comment ajouter à la listbox avec les modifs ref

    merci

  12. #12
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for i := Low(t) to High(t) do
    begin
      Listbox2.Items.Add(t[i].ref);
    end;
    @+

  13. #13
    AT
    AT est déconnecté
    Membre confirmé Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Par défaut
    oui excellent

  14. #14
    AT
    AT est déconnecté
    Membre confirmé Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Par défaut
    Au lieu d'utiliser ShowMessage je prefere utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MaMessageBox := MessageBoxA(0,Pchar('ref = '+ value),Pchar('Valeur corrspondante'),0 + MB_ICONINFORMATION + 0);


    En tous cas

  15. #15
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    bon pour le inputbox il faut te le creer soi meme

    j'ai repris en grande parti le code du inputbox de delphi
    que j'ai un peu modifier je te montre uniquement les modif a faire


    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
    unit UMyDialogs;
     
    interface
    uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,consts;
     
    function InputQuery(const ACaption, APrompt: string;var Value: currency): Boolean;
    function InputBox(const ACaption, APrompt : String; ADefault: currency): currency;
     
    implementation
     
    //cette fonction doit etre palce ici a chercher dans l'unite dialogs
    function GetAveCharSize(Canvas: TCanvas): TPoint;
    ...
    // la c'est la gestion des touches 
    procedure OnMyKeyPress(Self : TForm;Sender: TObject; var Key: Char);
      begin
        if not (Key in ['+', '-', DecimalSeparator, '0'..'9', #0..#31] )
          or ((key = decimalseparator) and (pos(decimalseparator,(sender as TEdit).text)>0))then
       begin
         Key := #0;
         MessageBeep(MB_ICONEXCLAMATION);
       end
    end;
     
     
    function InputQuery(const ACaption, APrompt: string;var Value : Currency): Boolean;
    var
      ...
      EvtKeyPress: TKeyPressEvent;
    begin
         ...
          Edit := TEdit.Create(Form);
          with Edit do
          begin
            // bon la ca se complique 
            // le but c'est de definir la procedure comme une methode de class
            TMethod(EvtKeyPress).Code := @OnMyKeyPress;
            TMethod(EvtKeyPress).Data := Form;
            ...
            Text := floattostr(Value);
            // la on l'afffecte a l'evenement onkeypress
            OnKeyPress := EvtKeyPress;
          end;
    ... 
         if ShowModal = mrOk then
          begin
            Value := strtofloat(Edit.Text);
            Result := True;
          end;
     ...
    end;
     
    function InputBox(const ACaption, APrompt : string; ADefault: currency): currency;
    begin
      Result := ADefault;
      InputQuery(ACaption, APrompt, Result);
    end;
     
    end.
    @+ Phil

  16. #16
    AT
    AT est déconnecté
    Membre confirmé Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Par défaut
    super



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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/09/2010, 08h19
  2. Réponses: 6
    Dernier message: 13/09/2010, 15h31
  3. Réponses: 6
    Dernier message: 13/06/2007, 14h38
  4. [XSLT] Comment attribuer une valeur à un attribut?
    Par citizen87 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 11/10/2006, 15h12

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