Largeur colonne listView modifiée en exécution [Résolu]

cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 9 juin 2009 à 18:11 - Dernière réponse : cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention
- 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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 10 juin 2009 à 20:43
3
Merci
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

Merci cs_Jean_Jean 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de cs_Jean_Jean
Meilleure réponse
Cirec 4224 Messages postés vendredi 23 juillet 2004Date d'inscription 5 juin 2018 Dernière intervention - 10 juin 2009 à 21:55
3
Merci
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="" />

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de Cirec
Cirec 4224 Messages postés vendredi 23 juillet 2004Date d'inscription 5 juin 2018 Dernière intervention - 10 juin 2009 à 09:32
0
Merci
Salut,

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

<hr siz="" />
Commenter la réponse de Cirec
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 10 juin 2009 à 20:09
0
Merci
Bj Cirec,
Merci pour ta réponse, mais j'aurai du dire que j'avais essayé ça aussi.
ListView1.Column[0].Width := 200; indice (0) hors limite et quand je mets 1 aussi!!!
J'ai donc essayé de définir la propriété columns dans l'inspecteur d'objet en y mettant une valeur
Mini à 150 et autosize, rien n'y fait, à l'exécution ça revient en position initiale.
j'ai essayé de réaffirmer cette propriété ListView1.Column[0].Width := 200; dans les évènements:
ListView1CustomDrawItem et ListView1DrawItem et OnChange, rien n'y fait, fascicule n'apparaît toujours pas en entier

Pour vérifier que ça n'est pas mon code qui est en cause, mais une propriété que j'ai mal initialisée, j'ai utilisé à titre d'essai le code de DElphiColl ici.
En définissant labonne longueur dans la définition de sa colonne 0, l'exécution se passe bien.
La différenceavec mon code, c'est qu'il utilise plusieurs colonnes en définissant des subitems...
bon, j'essaierai de creuser un peu!
Merci pour vos idées!
A+
Jean_Jean
Commenter la réponse de cs_Jean_Jean
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 11 juin 2009 à 18:56
0
Merci
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
Commenter la réponse de cs_Jean_Jean

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.