begin process at 2010 02 10 05:40:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

Tri ValueListEditor


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tri ValueListEditor

mardi 30 décembre 2008 à 17:01:35 | Tri ValueListEditor

buguetj

Bonjour,

J'ai un ValueListEditor dans lequel j'ai plusieurs lignes d'informations. D'autre part j'ai un TEdit.

Ce que je souhaiterais réalisé, c'est une sorte de tri, c'est à dire lorsque je tappe dans mon TEdit un mot qui se trouve sur une des ligne de mon ValueListEditor, que seule cette ligne reste visible et que toute les autres disparaissent.

Je ne sais pas trop quelle fonctions utiliser

Merci d'avance

mardi 30 décembre 2008 à 22:32:30 | Re : Tri ValueListEditor

cantador

Membre Club
bonsoir,
je ne suis pas sûr que TValueListEditor soit le compo approprié pour faire cette opération..car il fonctionne comme un stringgrid  avec des paires :
Nom/Valeur.

Mais si ty y tiens, il faut boucler sur la colonne contenant les valeurs à chercher
et tester laquelle sera égale à Edit1.text et si trouvé alorsil faut supprimer ou effacer toutes les autres..

Bref, un peu barbare car à la prochaine valeur, il faudra tout rechager...

cantador
mardi 30 décembre 2008 à 23:22:54 | Re : Tri ValueListEditor

Delphiprog

Administrateur CodeS-SourceS
Réponse acceptée !

procedure TForm1.Edit1Change(Sender: TObject);
var
  n, i, base: Integer;
begin
  if valuelisteditor1.FindRow(edit1.Text, n) then
  begin
    if doColumnTitles in ValueListEditor1.DisplayOptions then
      base := 1
    else
    begin
      base := 0;
      dec(n);
    end;
    for I := valuelisteditor1.RowCount - 1 downto base do
      if i > n then
        valuelisteditor1.DeleteRow(i)
      else
        if i < n then
        begin
          valuelisteditor1.DeleteRow(i);
          n := i;
        end;
  end;
end;

Mais, comme l'a dit Cantador, pour une nouvelle utilisation il faudra recharger le TValueListEditor avec de nouvelles valeurs.

May Delphi be with you !

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
mercredi 31 décembre 2008 à 11:47:01 | Re : Tri ValueListEditor

buguetj

merci, pour ton code
ya-t-il possibilité, lorsque j'efface le contenu de l'Edit que toute les lignes réaparraissent au fur et a mesure?
Merci d'avance
mercredi 31 décembre 2008 à 12:25:21 | Re : Tri ValueListEditor

Delphiprog

Administrateur CodeS-SourceS
Ajoute une procédure chargée d'initialiser le TValueListEditor :
procedure TForm1.InitValueList;
begin
  with ValueListEditor1.Strings do
  begin
    Clear;
    add('a=valeur a');
    add('b=valeur b');
    add('c=valeur c');
    add('d=valeur d');
    add('e=valeur e');
    add('f=valeur f');
  end;
end;

Ensuite, modifie légèrement la procédure Edit1Change :

procedure TForm1.Edit1Change(Sender: TObject);
var
  n, i, base: Integer;
begin
  if Edit1.Text = '' then
    InitValueList;

  if valuelisteditor1.FindRow(edit1.Text, n) then
  begin
    if doColumnTitles in ValueListEditor1.DisplayOptions then
      base := 1
    else
    begin
      base := 0;
      dec(n);
    end;
    for I := valuelisteditor1.RowCount - 1 downto base do
      if i > n then
        valuelisteditor1.DeleteRow(i)
      else
        if i < n then
        begin
          valuelisteditor1.DeleteRow(i);
          n := i;
        end;
  end;
end;

Bien sûr, tu peux aussi choisir de charger la liste depuis un fichier :
procedure TForm1.InitValueList;
begin
  with ValueListEditor1.Strings do
  begin
    Clear;
    LoadFromFile('liste.txt');
  end;
end;

en formatant un fichier texte comme ceci :
a=valeur a
b=valeur b
c=valeur c
d=valeur d
e=valeur e
f=valeur f

De cette façon, cela rendra plus dynamique la liste des options sans avoir à recompiler ton programme, par exemple.

May Delphi be with you !

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
mercredi 31 décembre 2008 à 13:10:11 | Re : Tri ValueListEditor

buguetj

merci de ta réponse.
Cependant, je n'arrive pas a compiler même en ayant déclarer
procedure TForm1.InitValueList;

merci d'avance
mercredi 31 décembre 2008 à 13:31:29 | Re : Tri ValueListEditor

Delphiprog

Administrateur CodeS-SourceS
Deux solutions :
1- soit ajouter "procedure InitValueList;" manuellement dans la déclaration de la classe dans la portée publique ou privée

2- soit, dans le corps de la procédure, faire un clic droit et choisir "compléter la classe sous le curseur" si cette option est disponible (Delphi >= version entreprise) ou Shift+Ctrl+C comme raccourci clavier.

Pour info, quand une procédure ou une fonction contient le nom de la classe (ici : TForm1.InitValueList), elle doit être déclarée au niveau de la classe.

May Delphi be with you !

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
mercredi 31 décembre 2008 à 13:37:30 | Re : Tri ValueListEditor

buguetj

merci de ta réponse,

j'ai déclaré manuellement procedure InitValueList dans publique ou privée (j'ai essayé les 2) et dans la deux cas j'ai une erreur de procédure surchargée.

merci

mercredi 31 décembre 2008 à 14:02:19 | Re : Tri ValueListEditor

Delphiprog

Administrateur CodeS-SourceS
Peux-tu m'envoyer la déclaration de ta classe en MP, stp ?


May Delphi be with you !

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
mercredi 31 décembre 2008 à 19:21:18 | Re : Tri ValueListEditor

buguetj

je pense qu'on s'est mal compris en mp.
Mon problème, c'est que dans le fichier liste.txt que j'ai créé, j'ai plusieurs entrée qui on le même nom. Donc quand je compile mon prg, j'ai bien le contenu de mon fichier qui s'insère correctement dans mon ValueListEditor mais il s'avère que dans mon fichier j'ai plusieurs entrée qui sont les même et quand je fais la recherche dans mon Edit, il ne m'affiche pas toute les entrée correspondante à ma recherche mais simplement une seule.

Merci
Bonnes fêtes

1 2

Cette discussion est classée dans : ligne, tri, tedit, valuelisteditor


Répondre à ce message

Sujets en rapport avec ce message

ValueListEditor Supprimer une ligne [ par jackg ] Bonjour,J'ai une liste et je souhaite pouvoir supprimer n'importe quelle ligne sélectionnée.Comment connaître la row sélectionnée dans un ValueListEdi ValueListEditor Supprimer une ligne [ par jackg ] Bonjour,Je veux supprimer dans un TvaluelistEditor la ligne sélectionnée soit par le curseur soit par la souris(clic droit) ?Quelle commande dois-je u modifier des données dans une base deja existante [ par maxell_64 ] Bonjours a tous, Dans un projet , j'ai une base de donnée de type paradox 7 creer en exportant une table MSAccess.Dans une form, j'ai different TEdit  Recherche dans un ValueListEditor [ par buguetj ] Bonjour, j'ai ressencé plusieurs information dans un TValueListEditor, parallèlement à ce composant j'ai créer un TEdit, un TLabel et un TButton.En fa Comment supprimer une ligne dans un fichier Text? [ par NicoIRIS ] Bonjour à tous,Voici mon petit problème... Je souhaiterai savoir s'il éxiste une méthode qui permmettrait de supprimer une ligne dans un fichier Text. Ajouter ligne RTF à un RichEdit [ par l0sth34d2 ] Bonjour à tous!Après de longues recherches et essais, je n'arrive pas à parvenir à ajouter une ligne au format RTF à mon RichEdit qui contient déjà un Rafraichissement DBGRID [ par Sat83 ] Bonjour, J'ai une petite question concernant le rafraichissement de mon DBGRID...Mon DBGRID contient plusieurs centaine de lignes.Lorsqu'une ligne est Changement de couleur dans un TEDit [ par djiga4me ] J'ai un TEdit géré par deux Timer, l'un deux le met à jour chaque seconde, l'autre, à la demande de l'utilisateur doit changer la couleur de foind du Bug affichage des lignes [ par mengele ] Bonjour,j'ai un problème avec delphi. En effet, les lignes de code sont "interprétées comme décalées". Je m'explique : lorsque je débeugue ou même que


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales