Composant ShellListView créé dynamiquement [Résolu]

Messages postés
32
Date d'inscription
mercredi 10 janvier 2007
Statut
Membre
Dernière intervention
1 septembre 2015
- - Dernière réponse : md21
Messages postés
32
Date d'inscription
mercredi 10 janvier 2007
Statut
Membre
Dernière intervention
1 septembre 2015
- 12 sept. 2012 à 15:44
bonjour,

ayant besoin d'utiliser un composant ShellListView, je crée ce dernier de manière dynamique (bien que étant sous D6 où ShellListView est présent, mais ce composant n'apparait plus sous les versions ultérieures (et c'est bien dommage) bien que déclaré et utilisable dynamiquement). Du coup je préfère le déclarer dynamiquement parce que comme ça je peux compiler mon projet sans problème sous des versions plus récentes et sans avoir à installer de nouveau package ...

alors tout va bien, sauf que ... si je passe en affichage détaillé (ViewStyle := vs Report) alors je ne peux pas afficher les entêtes des colonnes (ShowColumnHeaders := true) sous peine d'un gros plantage !!! Avec ShowColumnHeaders := false tout va bien.

je pense (sous toute réserve, sinon je n'aurais pas besoin d'aide) que les entêtes de colonnes ne doivent être déclarées ? Les colonnes, elles, elles existent puisque le mode vsReport fonctionne bien ... sans les entêtes

je voudrais donc savoir ce qu'il faut ajouter dans le code pour que ViewStyle := vs Report fonctionne avec ShowColumnHeaders := true ? car les entêtes apportent une réelle pluvalue au composant

voici le code que j'ai utilisé pour déclarer le ShelllistView

procedure TE_LoadSaveFiche.ACTIVER(Sender: TObject);
begin
SLV := TshellListView.Create(self);
With SLV do begin
Parent := Self;
Anchors := [akLeft,akTop,akBottom];
Left := 12;
Top := 228;
Width := 757;
Height := 457;
Ctl3D := false;
ParentColor := true;
ParentFont := true;
TabOrder := 0;

Root := 'rfDesktop';
AutoRefresh := false;
ObjectTypes := [otFolders,otNonFolders,otHidden];
ShowColumnHeaders := false;
RowSelect := true;
ViewStyle := vsReport;

OnAddFolder := SLV_AddFolder;
OnChange := SLV_Changer;
OnClick := SLV_Click;
OnDblClick := SLV_DblClick;
OnKeyDown := SLV_KeyDown;
OnKeyUp := SLV_KeyUp;
end;
end;

j'ai par ailleurs fait quelques essais pour résoudre le problème, mais je coince ...

merci par avance

md21
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
5
3
Merci
essaye de compiler un projet avec cette fiche principale (juste un nouveau projet, et tu remplace la fiche principale par celle la, et de m'envoyer l'exe, voir si c'est la compile (la source) qui foire ou c'est juste sur ton XP:
http://minus.com/lbmU6HUlZq6BMI

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Guillemouze
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
5
0
Merci
Chez moi, ton code fonctionne bien (D7 + Win7), j'ai placé le code sur un bouton, mis la var SLV en private de ma Form, enlevé les affectations d’évènements, et passé le ShowColumnHeader à true ... aucun problème
Commenter la réponse de Guillemouze
Messages postés
32
Date d'inscription
mercredi 10 janvier 2007
Statut
Membre
Dernière intervention
1 septembre 2015
1
0
Merci
tout d'abord merci de ta réponse rapide

j'ai essayé aussi de désactiver les évènements, mais cela ne change rien. Si j'active le ShowColumnHeaders, gros plantage et la fenêtre CPU apparait !

je suis sous D6 + XP SP3

md21
Commenter la réponse de md21
Messages postés
32
Date d'inscription
mercredi 10 janvier 2007
Statut
Membre
Dernière intervention
1 septembre 2015
1
0
Merci
effectivement, le code pris séparement fonctionne, y compris avec des procedures rattachées au composant.

merci à toi, j'aurais dû penser par moi même à faire un test séparemment !

Le problème vient de ce que j'utilise un fichier .res qui change l'apparence des composants pour leur donner un look "XP" (ça ne les change pas tous) car sous D6 bonjour le graphisme !

quant j'ai fait le test avec juste le ShellListView tout allait bien. Du coup j'ai essayé de voir ce qui n'allait pas et c'est en rajoutant la ligne {$R manifest.res} que le problème arrive, ce qu'il y a c'est que je ne saurai pas intervenir sur ce fichier ! mais c'est pas trop grave car en fait le programme se compile, il y a juste une exception CPU mais sinon nickel, avec un graphisme également modifié sur le ShellListView.

j'ai également essayé de désactiver les exceptions CPU avec une commande Set8087CW($133F); dans la procédure Create de la fiche mais que dal, pourtant en principe ça marche ...

je t'envoie le petit essais que je viens de faire si tu veux jeter un oeil ...

md21
Commenter la réponse de md21
Messages postés
32
Date d'inscription
mercredi 10 janvier 2007
Statut
Membre
Dernière intervention
1 septembre 2015
1
0
Merci
désolé, j'ai affaire à un méchant proxy qui m'interdit l'accès à ton lien

je te l'enverrai en fin d'après-midi


md21
Commenter la réponse de md21