Largeur colonne listView modifiée en exécution

Résolu
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 - 9 juin 2009 à 18:11
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 - 11 juin 2009 à 18:56
Bonjour,

    Je ne suis pas familiarisé avec les Listview et je reconnais que ce sont des composants fascinants. N'ayant pas trouvé de réponse à mon problème, j'ai donc décidé de vous le soumettre.
La listView affiche en réalité une liste de fichiers qui est sélectionnée dans une comboBox.
La Liste fait apparaitre normalement les noms de fichiers (nom + ext) dès l'apparition de la fenêtre.
Or dès que je change de liste (clic dans Combo), la ListView ne fait plus apparaitre qu'une partie du nom des fichiers de la liste. Les fonctions appellées sont pourtant les mêmes.

 Y a-til un paramètre de largeur de colonne qui aurait pu changé entre temps. Je ne défini pas à la conception de colonne (une seule par défaut)?
 J'ai essayé d'utilisé l'instruction : listView1.Columns.Items[0].MaxWidth := 200; Mais Er indice hors limite. Ma colonne par défaut ne semble pas posséder d'indice!
 Je soupçonnais au départ, ma StringListListFicRec chargée en lisant le fichier,! Mais même lorsque les valeurs du Composant ListView sont tronquées, en déplaçant la curseur sur le nom de fichier tronqué, le nom complet apparait dans la bulle (en éxécution).

Dans FormCreate 
  ...
  ListView1.ViewStyle := vsList;
  ListView1.Clear;
  UpdateListFicRechercheWithFic  (FicREC, ListFicRec);
  Affiche_ListeFicRecherche          (FicREC,ListView1,ListFicRec);
 ...
Procedure Affiche_ListeFicRecherche      (Const aFicREC       : String;
                                                                    Var aListView         : TListView;
                                                                     Var ListR                : TStringList);
var i : integer;
     ListAjout : TListItem;
Begin
  aListView.Clear;
  if ListR.Count > 0 then
  begin
    For i := 0 to ListR.Count -1 do
    begin
      ListAjout := aListView.Items.Add;
      ListAjout.Caption := ListR.Strings[i];
    end;
    aListView.Update;
  end
End;

procedure TFormFichRecherche.ComboNomFicRecClick(Sender: TObject);
begin
  If ComboNomFicRec.ItemIndex > -1 then
  begin
    ...    
     FicRec  :=  SRep_User + '\Fichiers\' + ComboNomFicRec.Text; // Nomfichier complet
     UpdateListFicRechercheWithFic(FicREC,ListFicRec);
     Affiche_ListeFicRecherche(FicREC,ListView1,ListFicRec);
  end
end;

Voilà, si une lumière passe ici, elle pourra m'éclairer. Merci d'avance.
Jean_Jean

Jean_Jean

4 réponses

cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
10 juin 2009 à 20:43
Bj
 En fait, lorsque l'on définit le paramétrage des colonnes, on est obligé d'être en mode ListView1.ViewStyle := vsReport;
Ce qui me fait apparaître des barres grises très moches en haut de mes colonnes.
C'est la seule solution que j'ai trouvé! Lors de l'exécution, mes noms de fichiers restent entiers.
 
Franchement, ça n'est pas très satisfaisant car je suis obligé maintenant de trouver le moyen de colorer cette barre de titre pour rester en harmonie avec mes couleurs. Ce qui va m'obliger à travailler sur les couleurs systèmes (précédent code posté) , ce qui n'est pas de la tarte. Comme je n'ai pas fini la mise à jour (aurai-je fini un jour??????????????????), j'attends, j'attends mais quoi au juste.
Bon, je vais peut-être publier ce que j'ai déjà et peut-être cela donnera des idées à plus compétent en la matière. 

je valide la solution donnée plus haut, mais si vous avez d'autres idées, je suis preneur pour faire disparaître cette horible barre

Jean_Jean
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
10 juin 2009 à 21:55
ah bon j'allais dire ... j'ai testé avant et ça fonctionne ^^

mais tu peux aussi faire ceci:
ViewStyle := vsReport;
ShowColumnHeaders := False;

et les barres n'apparaissent plus et tu peux quand même lui changer sa taille 

 
@+
Cirec

<hr siz="" />
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
10 juin 2009 à 09:32
Salut,

peut être :
  ListView1.Column[0].Width
 
@+
Cirec

<hr siz="" />
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
11 juin 2009 à 18:56
Exact Cirec!


En mettant la propriété de visibilité des colonnes à false, l'horrible gris disparait.

 Finalement, sympa ce composant. Je ne l'avais jamais utilisé. Mon pied, même du temps du turbo Pascal c'était les calculs scientifiques. J'ai failli abandonner ce langage quand on est passé au début en programmation objet car on travaillais à cette époque avec les routines directes du système (les API maintenant). Je me souviens des turbines gaz pour de simples controles de saisie d'une combo.

Ce que j'aimerais avoir 20 ans de moins. J'ai tellement de projets dans mes cartons, c'est un peu frustrant! Heureusement que ce site existe, grand bienfait à ceux qui le font vivre.

A+

Jean_Jean
0
Rejoignez-nous