Composant ShellListView créé dynamiquement

Résolu
md21 Messages postés 32 Date d'inscription mercredi 10 janvier 2007 Statut Membre Dernière intervention 1 septembre 2015 - 12 sept. 2012 à 11:33
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
A voir également:

5 réponses

Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
12 sept. 2012 à 13:53
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
3
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
12 sept. 2012 à 12:23
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
0
md21 Messages postés 32 Date d'inscription mercredi 10 janvier 2007 Statut Membre Dernière intervention 1 septembre 2015 1
12 sept. 2012 à 12:32
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
0
md21 Messages postés 32 Date d'inscription mercredi 10 janvier 2007 Statut Membre Dernière intervention 1 septembre 2015 1
12 sept. 2012 à 14:52
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
md21 Messages postés 32 Date d'inscription mercredi 10 janvier 2007 Statut Membre Dernière intervention 1 septembre 2015 1
12 sept. 2012 à 15:44
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
0
Rejoignez-nous