begin process at 2010 02 10 12:30:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

Largeur colonne listView modifiée en exécution


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

Largeur colonne listView modifiée en exécution

mardi 9 juin 2009 à 18:11:17 | Largeur colonne listView modifiée en exécution

Jean_Jean

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
mercredi 10 juin 2009 à 09:32:23 | Re : Largeur colonne listView modifiée en exécution

cirec

Membre Club Administrateur CodeS-SourceS
Salut,

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

mercredi 10 juin 2009 à 20:09:38 | Re : Largeur colonne listView modifiée en exécution

Jean_Jean

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

mercredi 10 juin 2009 à 20:43:21 | Re : Largeur colonne listView modifiée en exécution

Jean_Jean

Réponse acceptée !

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

mercredi 10 juin 2009 à 21:55:05 | Re : Largeur colonne listView modifiée en exécution

cirec

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
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

jeudi 11 juin 2009 à 18:56:46 | Re : Largeur colonne listView modifiée en exécution

Jean_Jean

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



Cette discussion est classée dans : listview, colonne, listview1, begin, ficrec


Répondre à ce message

Sujets en rapport avec ce message

listview 2 images dans la meme colonne ? [ par dav999 ] Salutje voudrais savoir s'il est possible d'afficher plusieurs images dans une colonne de ma listview, pour le moment j'utilise un imagelist et la pro insert dasn un listview [ par skiso ] listview1.Items.Insert(0);listview1.Items.Item[0].Caption:='jjjjjj';listview1.Items.Item[0].SubItems.text:='rrr';comment faire pour ecrire dans les au Pb Listview [ par NeoNeo ] Salut,Je cherche a enregistrer et reouvrir une ListView est-ce que quelq'un pourais m'aider sachant que j'ai tenter avec SaveToFileetLoadToFile mais c Listview --> Effacer 1 par 1 [ par stailer ] Salut tout le monde !Donc voila mon problème :Je fais une boucle sur chacune des lignes de mon listview... Puis à l'intérieur j'identifie l'index avec Problème listview clic droit [ par pelly1308 ] Bonjour tout le monde.J'écris car j'ai un problème avec une liste view.En fait, j'utilise principalement l'entête des colonnes de cette listview (en m IndexOf d'une ListView et sauvegarde des icônes [ par ActiveX ] Y a t'il quelq'un qui a déjà utilisé l'indexOf d'une Listview.je veux faire un indexof avec un string dans un Listviewvar i: Integer;   begin   i := L Intervertir deux lignes d'un ListView [ par informatixo ] Bonjour le forum, J'ai un petit souci avec le code suivant : procedure TForm2.Button1Click(Sender: TObject); var   ItemTampon: TListItem; begin   Item Selectioner une cellule dans la colonne subItem d'un ListView [ par lol_brossier ] J'ai un ListView avec 5 Colonnes, et je voudrait pouvoir selectionner avec la souris ou avec les fleches du clavier les elements situés dans les colon Comment incrementer la position d'un Listview ? [ par vieuxpere ] Bonjour, je n'arrive pas à incrémenter la postion d'un lisview. Pour ce faire, j'utilise le code suivant : ListView1.ItemIndex:=ListView1.ItemIndex+ listview [ par skiso ] svpje veut savoir comment je peut ecrire dans un listview dans les cases je sais que pour la premier il faut ecrire :listview1.Items.Item[0].SubItems.


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

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 : 2,028 sec (4)

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