Tchecklistbox et l'écriture dans les colonnes [DELPHI] - Delphi/Pascal - Programmation
Marsh Posté le 27-03-2002 à 22:36:06
Où tu vois multi-colonnes ???
A mon avis que les checks et le texte mais pas 1 colonne de +...
Marsh Posté le 27-03-2002 à 22:46:05
[SDF]Poire a écrit a écrit : Où tu vois multi-colonnes ??? A mon avis que les checks et le texte mais pas 1 colonne de +... |
Les boîtes liste multicolonnes ont une barre de défilement horizontale qui permet à l'utilisateur de visualiser les colonnes. La valeur par défaut de la propriété Columns est 0, ce qui signifie que la boîte liste n'a qu'une seule colonne. Les utilisateurs ne peuvent alors faire défiler la liste que verticalement.
Marsh Posté le 27-03-2002 à 22:53:51
Ce sont des colonnes pour la remplir horizontalement au lieu de verticalement.
Si tu veux réellement gérer plusieurs colonnes tu dois utiliser la listview.
Chaque item a une propriété Caption (colonne 1) et Subitems (colonne 2 et +)
[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]
Marsh Posté le 28-03-2002 à 12:23:57
j'y arrive pas du tous à écrire qq chose dans la tview quand je clique sur un bouton ça ouvre une opendialog je reprend le filename mais après pour le mettre en suivant ce que tu m'as dis marche pas
Marsh Posté le 28-03-2002 à 12:24:43
Montre le code que tu as fait pour mettre les éléments dans la liste...
Marsh Posté le 28-03-2002 à 12:30:16
antp a écrit a écrit : Montre le code que tu as fait pour mettre les éléments dans la liste... |
opendialog1.Execute;
filename:=opendialog1.filename;
listview1.items.caption:=filename;
j'ai essayé pas mal de façon mais rien y fait là le caption n'est pas reconnu
Marsh Posté le 28-03-2002 à 12:41:02
Ouais
Bon, pour chaque élément (ligne) que tu veux dans la TListView, il faut explicitement ajouter cet élément.
Exemple:
Code :
|
- ajout d'un item dans la ListView
- le caption (colonne 1) de l'item prend le nom du répertoire choisi (OpenDialog1.FileName, raccourci à FileName vu qu'on est dans un "with" )
- le Subitems.Strings[0] (colonne 2) de l'item prend le nom du fichier sans le répertoire. On passe par le add parce que Strings[0] n'existe pas encore. Pour le modifier par après il faudra passer par Subitems.Strings[0]
Exemple pour la modif de la seconde colonne du premier élément de la liste:
ListView1.Items.Item[0].Subitems.Strings[0] := 'autre chose';
[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]
Marsh Posté le 28-03-2002 à 14:00:07
bon alors j'ai testé en suivant ton exemple le extractpath s'affiche mais pas le filename quand je rappuis sur le bouton ça me le met sur la même ligne
Merci
Marsh Posté le 28-03-2002 à 14:01:22
T'aurais pas par hasard oublié de mettre la listview en mode Style := vsReport et de définir au moins deux colonnes ?
Et pour le coup de quand tu recliques, tu es sûr que tu as bien recopié le source ?
[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]
Marsh Posté le 28-03-2002 à 14:52:39
j'ai mis une case a cocher un bouton delete pour supprimer le fichier ok mais ça fais pas toute la ligne je veux qu'on ne voit plus rien
Au faite c'est un programme qui compresse en mp3 et ogg vorbis
pour que tu saches à quoi tu contribues
Marsh Posté le 28-03-2002 à 15:57:48
Pour virer une ligne, chaque item[] a une méthode Delete je pense.
Marsh Posté le 28-03-2002 à 18:19:54
nickel je viens de faire si c'est checked ça delete
Merci
Marsh Posté le 30-03-2002 à 16:52:50
merde ça bug
le pb est que s'il le prog delete la première ligne coché la deuxième prend la place de la première donc ça marche pour la dernière ligne et la première ligne dès que je veux faire une au milieu beau plantage
Marsh Posté le 30-03-2002 à 17:02:41
Envoie un morceau de code source parce que là j'ai rien pigé
Marsh Posté le 30-03-2002 à 17:04:34
antp a écrit a écrit : Envoie un morceau de code source parce que là j'ai rien pigé |
ok voila
If listview1.items.count>0 then
begin
for i:=0 to (listview1.Items.count-1) do
begin
If listview1.items[0].Checked
then
begin
listview1.items[0].Delete;
end
else
begin
if listview1.Items[i].Checked
then
begin
listview1.Items[i].Delete;
end;
end;
end;
end;
donc en faite je crois avoir trouver il faudrait enlever 1 à I
donc i:=i-1; mais ça il veut pas le faire dans une boucle for
Marsh Posté le 30-03-2002 à 17:12:08
Code :
|
Si tu commences par les premiers items, ça crashe parce que quand tu arrives à la fin il y a moins d'items que ce qu'il y avait au début... Donc là on commence par la fin. Et dans ce genre de choses l'opérateur "with" est pratique: ça allège le code et ça l'optimise (le programme ne doit pas à chaque fois aller rechercher l'adresse de ListView1.Items)
[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]
Marsh Posté le 30-03-2002 à 17:15:54
antp a écrit a écrit :
|
ça marche terrible pas mal de plaçés le with la dedans ça fait bcp moins bordelique comme code
merci je vais pouvoir continuer ce projet
Marsh Posté le 27-03-2002 à 22:28:10
je voudrais mettre le texte dans la deuxième colonne
dans la première colonne pas de pb mais les autres colonnes là je bloque pourtant j'ai matté l'aide il parle bien de multicolonne mais pas comment faire
un exemple serait le bienvenue
merci