Newsgroup: it.comp.lang.delphi
Titolo: Lavorare con TImage e tabelle di TImage

Ho il seg. urgente problema:
devo memorizzare in un array di Timage le immagini che si alternano durante 
l'esecuzione, su di un componente TImage della mia form.
Fatto un ciclo che ogni volta memorizza nell'array l'immagine nuova 
visulalizzata nel mio Timage della form, succede che al termine 
dell'elaborazione nel mio array trovo solo la stessa immagine cioč l'ultima 
visualizzata nel Timage della form
in altre parole
in ogni elemento dell'array trovo sempre lo stesso indirizzo, cioč quello 
del mio TImage della form.
Ma allora come faccio a memorizzare delle immagini in un array di TImage?
In alternativa ancora meglio potrei usare un  ImageList, ma mi servirebbe 
qualcosa che spiegasse come utilizzarlo
e non ho trovato molto, non č un componente molto documentato.
Scusate sono un novizio con pochi mesi di delphi ma con problemi urgenti.
Grazie ciao

 Scusate sono un novizio con pochi mesi di delphi ma con problemi urgenti.
Vai tranquillo... ;-)
Ciao!
-- 
Marco «Alka» Breveglieri
  ABLS Team S.n.c. - Software & Web
  Via De Gasperi, 14
  42019 Scandiano (Reggio Emilia)
 
http://www.abls.it


var
pos_primo : Integer;
i_s_m        : array of TImage;
i_s_m_r    :  array of TImage;
.
.
.
.
.
.
SetLength (i_s_m   , pos_primo);
SetLength (i_s_m_r , pos_primo);
pos_primo:=0;
// le istruzioni che seguono sono contenute in un ciclo che scrive 
all'interno dei due array di TImage
// Scrivi_immagine_g e Scrivi_immagine_r sono due funzioni che restituiscono 
un TImage
// e che creano e aggiornano nel Timage della mia form l'immagine ad ogni 
iterazione (repaint),
// le immagini effettivamente cambiano sulla form (si vedono)
begin
            i_s_m   [pos_primo]:= Scrivi_immagine_g
                    (Dim_surface_x,Dim_surface_y,Dim_sx_surface,Dim_sy_surface);
            i_s_m_r [pos_primo]:= Scrivi_immagine_r
                    (Dim_surface_x,Dim_surface_y,Dim_sx_surface,Dim_sy_surface);
            inc(pos_primo);
end;
//All'evento onClick di un listbox che contiene la lista dei codici 
identificativi delle immagini
// viene eseguito il codice che segue
procedure TMainForm.ListBox1Click(Sender: TObject);
begin
    MainForm.Label33.Caption := ListBox1.Items[ListBox1.ItemIndex];
    MainForm.Label34.Caption := ListBox1.Items[ListBox1.ItemIndex];
    MainForm.Image7   := i_s_m[ListBox1.ItemIndex];
    MainForm.Image10 := i_s_m_r[ListBox1.ItemIndex];
    MainForm.Image7.Repaint;
    MainForm.Image10.Repaint;
end;
//l'immagine č sempre la stessa ovvero l'ultima visualizzata sulla form
grazie per eventuali suggerimenti

 grazie per eventuali suggerimenti
Non avrei mai dovuto suggerire di postare il codice. :-D
Ad ogni modo, credo che tu abbia dimenticato proprio la parte piů 
importante, cioč quella che restituisce il riferimento al *TImage* da 
inserire all'interno di ciascun elemento del vettore.
Tra l'altro, mi pare che tu stia riassegnando alcuni campi della tua 
form che fanno riferimento a controlli TImage inseriti nella form stessa 
(/Image7/ e /Image10/) a cui dovresti dare nomi piů significativi. :-)


end;
Non c'entra nulla con il tuo problema, ma è un errore da segnalare, prima
che ti crei gravi problemi: all'interno dei metodi di un form *non devi*
usare la variable che Delphi ti crea per far riferimento al form stesso:
1) All'interno di un metodo tutti i campi/metodi di quella classe sono
automaticamente disponibili.
2) Se istanzi due diverse TMainForm, quel codice fa riferimento solo
all'istanza riferita da MainForm, e non riuscirai mai a usare la seconda
istanza, e nel caso che MainForm non sia valido ottieni AV a tutto spiano.
 Nel modo corretto invece si riferiscono sempre all'istanza corrente,
perché ci pensa Delphi a passare il parametro Self implicitamente - non
scrivere Self.Label33 perché è ugualmente inutile, tranne in casi di
ambiguità.
3) A livello di codice macchina sprechi tempo a ricaricare un puntatore
che hai già...
Luigi D. Sandon - D&amp;D Support Team
--- posted by geoForum on 
http://www.delphiedintorni.it