Ordinamento colonna TshellListView

di il
4 risposte

Ordinamento colonna TshellListView

Buonasera,

qualcuno ha usato il componente TShellListView per la navigazione in una cartella ed è riuscito ad ordinare le sue colonne con l'evento OnColumnClick ?

In questo thread viene ben snocciolato il procedimento, ma facendo riferimento all'evento ‘OnCompare’ che nel mio oggetto non compare..  la versione di Delphi che uso è la 11 e la VCL è la sua aggiunta successivamente.

tra l'altro nel pacchetto VCL è incluso un progettino DEMO che ne dimostra il funzionamento e anche lì l'evento ‘OnColumnClick’ non è utilizzato

4 Risposte

  • Re: Ordinamento colonna TshellListView

    In questa pagina viene suggerito come modificare il codice del controllo per ottenere l'effetto richiesto.

    Bisogna sempre tenere presente che si tratta di “controlli dimostrativi”: nulla previene dall'usarli in produzione, però sono presenti come demo di integrazione con alcune API del sistema operativo, più che “componenti ufficiali” di Delphi (che è il motivo per cui sono da installare a mano).

    Ne esistono versioni commerciali molto ben fatte, come ShellBrowser di JAM Software.

    Se con le indicazioni della pagina riesci a risolvere, magari riporta un pezzettino di codice o due righe sulla soluzione adottata, visto che pare esserci poca documentazione. Se ti va, puoi aggiornare anche il thread che abbiamo già iniziato su HTML.it. :)

  • Re: Ordinamento colonna TshellListView

    Ho provato anche questo metodo:

    per modificare il ShellCtrls.pas:

    TCustomShellListView = class(TCustomListView, IShellCommandVerb)
    > ...
    > public
    > ...
    >   property FolderList: TList read FFolders;  << ADD THIS
    > ...
    > end;

    ho dovuto ovviamente sganciare il componente Shellcontrols modificarlo e poi ricaricarlo sul RAD, ma nonostante ciò continua a non funzionare, probabilmente quel codice è strutturato per il componente TlistView che possiede l'evento ‘OnCompare’ senza il quale ShellListView non riesce a gestire la routine

    ShellListView1.FolderList.Sort(ShellCompare);

    Inoltre il pacchetto ShellControls utilizzato che si reperisce facilmente su GitHub contiene una DEMO molto esaustiva sul funzionamento della VCL che infatti non considera assolutamente l'evento ‘OnColumnClick’ ma una specie di ‘SORT’ che richiama da una ActionList

    procedure TMainForm.actnSortedUpdate(Sender: TObject);
    begin
      actnSorted.Checked := ShellListView.Sorted;
    end;

    che allinea i file per tipo e basta.

    In conclusione credo (e spero di essere smentito…) che non ci sia modo di ottenere l'ordinamento delle colonne su TshellListView.

  • Re: Ordinamento colonna TshellListView

    22/03/2024 - Xtonyx ha scritto:


    In conclusione credo (e spero di essere smentito…) che non ci sia modo di ottenere l'ordinamento delle colonne su TshellListView.

    Che non ci sia modo, mi sento di escluderlo a priori. :)
    Mi dispiace solo di non avere abbastanza tempo libero al momento per approfondire la problematica in prima persona.

    Se domani riesco a trovare qualche minuto, faccio qualche esperimento.

  • Re: Ordinamento colonna TshellListView

    ..Seguo con interesse..

Devi accedere o registrarti per scrivere nel forum
4 risposte