Intanto salve a tutti visto che sono nuovo, anche se vi leggo da tempo immemore e molto spesso ho trovato la soluzione ai miei problemi in questo forum.


I fatti:

Vorrei implementare una sorta di galleria immagini in cui compaiono due righe di testo e una immagine prelevate da un DB access (mdb).
O meglio, nel db è presente solo il percorso dell'immagine che passo alla procedura LoadFromFile del controllo TImage (I_Logo).
Per far ciò nel modo più semplice e veloce non avendo particolari esigenze ho utilizzato la DBCtrlGrid (DB_Galleria) collegata al datasource contenente i dati che mi interessano e posizionato sul pannello della DBCtrlGrid un TImage e i due DBText che mi servono, come da manuale.

Per aggiornare l'immagine utilizzo l'evento OnPaintPanel con una semplicissima riga di estrazione del path dal db. Questa è tutta la procedura:

codice:
procedure TGalleria.DB_GalleriaPaintPanel(DBCtrlGrid: TDBCtrlGrid;
  Index: Integer);
begin
I_Logo.Picture.LoadFromFile(RootApp+'Immagini\'+Modulo.DataSource2
.DataSet.FieldValues['Immagine']);

  Label1.Caption:=IntToStr(I_Ciclo);
  I_Ciclo:=I_Ciclo+1;
 end;
Il problema:

La procedura entra in un ciclo infinito, cioè non appena estrae tutti i (al momento 12) records con le immagini che sono in ogni caso quelle giuste associate al record, riazzera e rivisualizza la griglia infinitamente col risultato che l'immagine sul pannello selezionato "scompare" o "lampeggia" a causa del refresh infinito. Attenzione: non crea una lista infinita di record, ma sono sempre e solo quei 12, infatti li posso scorrere tramite la barra laterale, mentre quel contatore che ho aggiunto mi conferma il loop infinito. Se invece non metto la riga inerente il recupero dell'immagine il loop non si verifica, ma il contatore si incrementa di 12 ogni volta che clicco o interagisco tramite tastiera con la griglia.

È da una settimana che mi ci arrovello ma sembra che nessuno in rete abbia questo problema (infatti l'utente Vicky in questa vostra discussione ha fatto come me ed a lei ha funzionato, ma ho trovato anche altri esempi ottenendo lo stesso risultato).

Ci saranno altri 1000 modi per fare quel che dico io, ma vorrei capire perchè si innesca questo ciclo a mio parere immotivato. Magari è un bug della griglia?

Uso Delphi XE 4 su Windows 8 x64.

Grazie per l'attenzione e spero nel caro vecchio Alka che tante volte mi ha aiutato (senza saperlo ).

Ciaoz...