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 :

Renommer un élément dans TComboEdit


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2015
    Messages : 64
    Points : 35
    Points
    35
    Par défaut Renommer un élément dans TComboEdit
    Bonjour,

    J´ai un problème avec une ComboEdit.

    Je veut renomer un élement dans la liste, au moment ou je le click (sélectionne).
    Je sais le faire avec une ComboBox et un Edit séparé mais pas avec la ComboEdit, et je sais pas si j´utilise le bon événement...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TTabbedForm.ComboEdit1CanFocus(Sender: TObject;
      var ACanFocus: Boolean);
     
    var x: integer;
        value: string;
    begin
     
        x := ComboBox1.ItemIndex;
        Value := ComboEdit1.Text;
        RadioB[x].Text := Value;
        ComboEdit1.Text := Value;
    end;
    cesi ne fonctionne pas...

  2. #2
    Membre éprouvé
    Avatar de Aooka
    Homme Profil pro
    Scripting Powershell & Wlangage
    Inscrit en
    Juillet 2015
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Scripting Powershell & Wlangage

    Informations forums :
    Inscription : Juillet 2015
    Messages : 227
    Points : 1 095
    Points
    1 095
    Par défaut
    OnChange ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2015
    Messages : 64
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Martin Lestas Voir le message
    OnChange ?
    Bonjour,

    d'abord merci pour la réponse.

    Mais j´ai déja essayé celui là aussi.

    mais j´ai le mème effet.

    La variable value a bien le texte que j´ai rentrée, mais il n y a pas de mise a jour au niveau de la ComboEdit, ni RadioB est mis a jours.

  4. #4
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par jeng37 Voir le message
    Je veut renomer un élement dans la liste, au moment ou je le click (sélectionne).

    Je sais le faire avec une ComboBox et un Edit séparé mais pas avec la ComboEdit, et je sais pas si j´utilise le bon événement...
    Vous voulez renommer un item de la liste ?

    Votre code est un mix de composants de la solution qui marcherait avec la nouvelle et est en plus inopérant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TTabbedForm.ComboEdit1CanFocus(Sender: TObject;
      var ACanFocus: Boolean);
     
    var x: integer;
        value: string;
    begin
     
        x := ComboBox1.ItemIndex;  // <= pourquoi le composant de l'ancienne solution ? ? ?
        Value := ComboEdit1.Text;
        RadioB[x].Text := Value;
        ComboEdit1.Text := Value; // <= Vous ne changez rien, value n'a pas été modifiée !
    end;
    Philippe.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2015
    Messages : 64
    Points : 35
    Points
    35
    Par défaut
    x := ComboBox1.ItemIndex; // <= pourquoi le composant de l'ancienne solution ? ? ?
    Parceque je prend l'index de cette combobox pour afficher mes éléments qui correxpondes.
    Value := ComboEdit1.Text;
    RadioB[x].Text := Value;
    ComboEdit1.Text := Value; // <= Vous ne changez rien, value n'a pas été modifiée !
    end;
    Exactement, c'est ca mon problème, je ne sais pas comment recevoir le nouveau text de l´élément changée (l´élément que je veut renommer et cela sans changer l´index).

  6. #6
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Citation Envoyé par jeng37 Voir le message
    Exactement, c'est ca mon problème, je ne sais pas comment recevoir le nouveau text de l´élément changée (l´élément que je veut renommer et cela sans changer l´index).
    Désolé , mais je ne comprends pas ce que vous voulez obtenir. Pouvez vous donner un jeu d'essai précis ainsi que les composants impliqués ?
    Philippe.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2015
    Messages : 64
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Désolé , mais je ne comprends pas ce que vous voulez obtenir. Pouvez vous donner un jeu d'essai précis ainsi que les composants impliqués ?
    Ok je ne sais pas comment l´expliquer autrement.
    Voici deux screen shots ou l´on voie ce que je veut faire.
    Nom : Bild1.jpg
Affichages : 293
Taille : 36,1 KoNom : Bild2.jpg
Affichages : 297
Taille : 37,2 Ko

  8. #8
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Citation Envoyé par jeng37 Voir le message
    Ok je ne sais pas comment l´expliquer autrement.
    Ok, donc si j'ai bien compris, il s'agit de transférer un item d'une combobox source vers une comboedit cible dont la propriété Text contient l'élément à remplacer...
    Donc je ferais:
    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
    var
      IdxCible: Integer;
     
    //...
     
      // Identifier la position de l'item dans la liste cible
      IdxCible := ComboEdit1.Items.IndexOf(ComboEdit1.Text);
     
      // Item identifié
      if IdxCible >= 0 then
      begin
        // Remplacement de l'item
        ComboEdit1.Items[IdxCible] := ComboBox1.Items[ComboBox1.ItemIndex];
        // Positionnement de la combo cible
        ComboEdit1.ItemIndex := IdxCible;
      end;
    Philippe.

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    non Philippe, je pense qu'il s'agit de deux images distinctes pour essayer de faire comprendre!

    en fait il s'agit d'un unique comboedit !
    la seule solution que j’entraperçois est de mémoriser en global (privé ou public de la forme, voire en dehors de la forme) l'index de la combobox lors de l'évènement OnSelect
    et de changer l'item si le texte change
    le hic est de trouver le bon évènement pour tester ce changement . Le onChange, pour l'avoir testé, n'est pas une bonne idée. Il y a le OnExit qui fonctionne, bien que peu satisfaisant à mon gout

    voici une proposition, qui ne gère pas tous les cas (mais bon on n'a pas une idée complète non plus)
    [Edit] en re-regardant le screenshot le label est 'à renommer' cela voudrait donc dire que seul
    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
     
    private 
       ic : integer;
     
    procedure TMainForm.ComboboxExit(Sender: TObject);
    begin
    if ic>=0 then   // si  sélection  
     begin 
       Combobox.Items[ic]:=Combobox.Text; // renommage
       Combobox.ItemIndex:=ic;  // repositionnement 
    { end // après mon [Edit]
    else begin
       Combobox.Items.Add(Combobox.Text);
       ComboBox.ItemIndex:=Combobox.Items.Count - 1;  // si pas combo pas trié} 
    end;   
    end;
     
    procedure TMainFormInventaire.ComboboxSelect(Sender: TObject);
    begin
    ic:=Combobox.ItemIndex;
    end;
    [Edit] en re-regardant le screenshot le label est 'à renommer' cela voudrait donc dire que seul si un item a été sélectionné (donc ic>=0) doit être pris en compte
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par SergioMaster Voir le message
    non Philippe, je pense qu'il s'agit de deux images distinctes pour essayer de faire comprendre!
    Effectivement, il s'agit de 2 images du même écran...
    Or dans le sujet est évoqué un ComboBox, un ComboEdit, aussi est ce pour cela que j'avais demandé de reformuler le problème...

    Voici une autre solution. Sachant que la saisie dans le ComboEdit ne fait pas varier l'ItemIndex (-1 si aucun sélectionné, >= 0 si un sélectionné), j'implémenterais la gestion des évènements OnKeyUp et OnExit du ComboEdit
    L'appui sur entrée comme la sortie du contrôle valide la modification...

    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
    procedure TTabbedForm.UpdateComboEdit;
    begin
      // Item sélectionné ?
      if ComboEdit1.ItemIndex >= 0 then
        // Remplacement de l'item
        ComboEdit1.Items[ComboEdit1.ItemIndex] := ComboEdit1.Text;
    end;
     
    procedure TTabbedForm.ComboEdit1KeyUp(Sender: TObject; var Key: Word;
      var KeyChar: Char; Shift: TShiftState);
    begin
      if KeyChar = #13 then
        UpdateComboEdit;
    end;
     
    procedure TTabbedForm.ComboEdit1Exit(Sender: TObject);
    begin
      UpdateComboEdit;
    end;
    A adapter en fonction des besoins...
    Philippe.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2015
    Messages : 64
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Ok, donc si j'ai bien compris, il s'agit de transférer un item d'une combobox source vers une comboedit cible dont la propriété Text contient l'élément à remplacer...
    Donc je ferais:
    Philippe, merci beaucoup pour ta patience,

    Mais ce n´est pas ce que je veut faire.


    Sergio a raison, c´est exactement ce que je veut faire.
    Et merci beaucoup pour ta solution, ca fonctionne!

    EDIT: @Philippe, je vais tester ta nouvelle solution, je pense que maintenant on est bon ;-)
    Merci en tout cas a vous deux!! (c´était un peut difficile à expliquer) mais finalement on y est arrivée!!

  12. #12
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    penser à voire à des pour la solution retenue
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

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

Discussions similaires

  1. Ajouts d'élements dans un modèle d'elements finis
    Par matt394 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 24/07/2007, 11h10
  2. comment ajouter des élements dans une liste ?
    Par ryoussef19 dans le forum VC++ .NET
    Réponses: 5
    Dernier message: 15/06/2007, 16h02
  3. Sélection élement dans un treeview
    Par Invité dans le forum C#
    Réponses: 1
    Dernier message: 05/04/2007, 17h31
  4. [Generics] ajouter un élement dans une liste typée
    Par anitshka dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 06/02/2007, 11h04
  5. Réponses: 4
    Dernier message: 09/05/2006, 11h33

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