Comment Rechercher dans un item une valeur sur un TchecklistBox et comment impor

vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014 - 3 janv. 2004 à 03:48
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014 - 3 janv. 2004 à 15:23
Bonjour,

J'ai deux questions qui me posent soucis depuis pas mal de temps, merci d'avance pour votre aide à les résoudrent.

Question 1
Comment rechercher dans un tchecklistbox une valeur dans un item ?

exemple :
if tchecklistbox1.checked[1]=true then tchecklistbox2.itemindex.count('valeur recherchée'):=true;

Hélas cette commande ne marche pas, merci de m'aider.

Question 2
Toujours dans un tchecklistbox, comment importer une partie d'un fichier ini, à savoir la partie groupe, mais sous un format spécifique (voir ci dessous).

La structure du fichier ini est le suivante :

[Valeurs]
01=GMoins d'un an|K33|0
02=GMoins d'un an|K34|0
03=GMoins d'un an|D40|0
04=GMoins d'un an|D41|0
05=GMoins d'un an|D42|0
06=GMoins d'un an|I11|0
07=GMoins d'un an|I12|0
08=GMoins d'un an|I13|0
09=GMoins d'un an|I14|0
10=GMoins d'un an|I15|0
12=GMoins d'un an|I17|0
13=GMoins d'un an|I18|0
14=GMoins d'un an|I19|0
15=GMoins d'un an|I20|0
16=GMoins d'un an|I21|0
17=GMoins d'un an|I22|0
18=GMoins d'un an|I23|0
19=GMoins d'un an|I25|0

[groupes]
A=960,620
B=040,050,090,100
C=610,650,700,710
D=660,670,690
E=030,060
F=620,700

Je souhaite avoir l'agencement suivant dans le tchecklistbox :

A
960
620
B
040
050
...

Ceci afin que je puisse checker autant les "têtes" de groupe que ce qui en découlent.

Merci par avance pour votre aide.

2 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
3 janv. 2004 à 09:03
Merci de bien vouloir poser une seule question par post !

Question 1 : Comment rechercher dans un tchecklistbox une valeur dans un item ?

Utiliser la méthode IndexOf pour rechercher une correspondance exacte ou alors, faire appel à la fonction Pos pour rechercher une correspondance partielle (voir illustration dans le code ci-dessous).
L'exemple fourni pour cette question est confus. Pourriez-vous préciser ce que vous recherchez.
"Ce qui se conçoit bien s'énonce clairement et les mots pour le dire viennent aisément." 8-)

Question 2 : comment importer une partie d'un fichier ini...
Là, c'est un peu plus compliqué et voici le code commenté :
procedure TForm1.Button1Click(Sender: TObject);
var
  Ini : TIniFile;
  StrList : TStrings;
  i: integer;
  Nom, Temp : string;
const
  IniName = 'VieuxPere.ini';
  Sep = ','; //caractère séparateur des valeurs dans le fichier .ini
begin
  StrList := TStringlist.Create;
  try
    Ini := TIniFile.Create(ExtractFilePath(Application.ExeName)+IniName);
    try
      Ini.ReadSectionValues('Groupes', StrList);
      for i := 0 to StrList.Count - 1 do
      begin
        //nom de l'entrée du fichier ini
        Nom := StrList.Names[i];
        CheckListBox1.Items.Add(Nom);
        //suite de valeurs séparées par des virgules
        Temp := StrList.Values[Nom];
        while Pos(Sep, Temp) <> 0 do
        begin
          //Caractères avant la première virgule
          CheckListbox1.Items.Add(Copy(Temp, 1, Pos(Sep, Temp) - 1));
          //supprimer les caractères jusqu'à la virgule comprise
          Delete(Temp, 1, Pos(Sep, Temp));
        end;
        //copie de la dernière chaine ssi elle n'est pas vide !
        //au cas où une virgule ne serait pas suivie d'une valeur
        if Temp <> EmptyStr then
          CheckListBox1.Items.Add(Temp);
      end;
    finally
      Ini.Free;
    end;
  finally
    StrList.Free;
  end;

end;

Avec les commentaires, vous devriez vous en sortir. :)
Bon, ça fait la deuxième fois que je tape cette réponse à cause d'une erreur du serveur, alors j'arrête là !
May Delphi be with you
0
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014
3 janv. 2004 à 15:23
Merci vraiment pour votre aide;

Autant pour la question 1 que la 2, j'ai pu trouver les solutions à partir de vos sources.

Merci encore,
0
Rejoignez-nous