immagine in listbox cell

ciao a tutti, non riesco a fare quanto in oggetto,

devo mostrare un file png (carello) nell’ultima cella della mia listbox (lista prodotti), in una delle ultime versioni hanno aggiunto la propriet

non riesco a capire come inserire nel progetto il file png (solitamente uso imagewell) e farlo riconoscere alla listbox…

ho provato cosi ma non va

LstProdotti.CellPicture(LstProdotti.LastIndex,9) = Image1

grazie,
ciro

CellPicture relativo ad una WebListBox. Non esiste per quella desktop, dove c’ rowPicture (se la vuoi all’inizio della riga)

Alternativa (migliore) disegnarla nel CellBackGoundPaint

L’immagine pu essere una risorsa (aggiungi una Image e con le risoluzioni che supporti)
Altrimenti la puoi copiare nelle risorse con un copystep e caricarla da li (anche multi risoluzione)

hai ragione antonio, mi serve proprio per una weblistbox

non so come agganciare l’immagine, mi d sempre nil object, image1 aggiunta come risorsa image well

Aggiungi al progetto l’immagine (trascina il file nel navigatore)
Se vuoi supportare l’alta risoluzione devi avere 2 immagini, di dimensioni una il doppio dell’altra, trascina la più piccola e poi l’altra nel riquadro 2x

Puoi cambiare il nome all’immagine (nel navigatore e quindi nel progetto) tramite l’inspector

Ad esempio “carrello”.

LstProdotti.CellPicture(LstProdotti.LastIndex,9) = carrello

quello che ho fatto io, ma non va

png 32x32

Veramente tu avevi detto che avevi utilizzato l’imageWell

ho provato in entrambi i modi…pu essere un problema il fatto che l’ultima colonna della listbox che deve contenere l’immagine?

cio io riempio la listbox con una query, ed il solito comando

LstProdotti.AddRow(codart,desart,rs.IdxField(3).StringValue,impuni,sconto1,sconto2,sconto3,sconto4,replace(mid(dispcont.ToText,1,len(dispcont.ToText)-4),".",","),"")

l’immagine dovrebbe apparire al posto di “” nell’ultima colonna…

ho provato anche a fare in questo modo, ma continua la nil object exception…

dim f As FolderItem
dim p as Picture
if DebugBuild then
	f = GetFolderItem("c:\\ascolib2b\\cart_icon.png") 
else
	f = GetFolderItem("cart_icon.png") 
end if
p = f.OpenAsPicture
LstProdotti.CellPicture(LstProdotti.LastIndex,9) = p

Allora, p non deve essere una picture ma una web picture. hai controllato se f nil o se f esiste?
Se assegni l’immagine a una WebImagewell funziona?
Se fai disegnare l’immagine a un webCanvas funziona?

Non un problema, sono convinto che non hai creato l’immagine nel progetto.

allora Antonio, guarda questi screen

definizione immagine nel progetto (drag & drop del file)

test con imagewell su pagina qualsiasi

comando per farla apparire nell’ultima cella di ogni riga ( immagine di un carrello…)

eccezione sollevata da Xojo di nil object

non so + cosa provare :-(((((
xojo 2016r4.1 su windows

Ok ora chiaro.
Ti eri scordato di dirmi che era in un Thread

Credo sia per il fatto che la web picture in un Thread manchi del percorso corretto.
Ora un Thread indipendente dalla sessione e per quanto un’immagine come questa sia “generale” per qualche motivo (volendo anche comprensibile) l’immagine non viene correttamente gestita.
Ma se utilizza un webThread il problema non si pone. L’immagine viene caricata correttamente

ciao Antonio, quale la differenza tra thread e webthread a livello di oggetti disponibili?

ossia, come imposto un webthread scegliendolo dalla library???

questo comporter modifiche al mio thread o posso fare un copia/incolla?

come esecuzione sono più o meno equivalenti.
Un thread è qualcosa che fai girare magari a livello di app (ovvero non legato ad una sessione in particolare se non magari per restituire i risultati, ma in ogni caso dovrai identificarne il contesto)
Un webThread è a livello di sessione per cui in questo caso non ti comporta errori.

Un web thread è una sottoclasse di thread

grazie! in effetti utilizzando un metodo al posto del thread funziona, avevo usato il thred per gestire una progress wheel…

non sono riuscito a fare un webthread (non so come definirlo)

ultima cosa, dovendo cambiare l’immagine su ogni riga (ad es. immagine prodotto), devo utilizzare qualcosa del tipo:

dim f As FolderItem
dim p as Picture
if DebugBuild then
	f = GetFolderItem("c:\\ascolib2b\\cart_icon.png") 
else
	f = GetFolderItem("cart_icon.png") 
end if
p = f.OpenAsPicture
LstProdotti.CellPicture(LstProdotti.LastIndex,9) = p

immagino???

Se l’immagine una icona crea l’immagine nell’IDE e poi la usi a seconda delle condizioni.
Se un’immagine di un prodotto invece:
Diciamo che la cartella dove sono le immagini c:\ascoli2b\images\ (se sono tante meglio una cartella apposita)
Aggiungi un copy step per averle nel progetto (nelle risorse mi raccomando) in ogni caso (imposta a Both)
Crea un metodo per trovarle tipo (poniamo che hai il nome nel db) che:

  • Verifica che nelle risorse c’ la cartella images (Usa GetResource(“images”) di Xojo.IO.FolderItem.specialFolder, con un try perch se non lo trova da eccezione)
  • Se esiste trasformala in folderItem classica (New FolderItem(IO_FOLDER_ITEM.path, FolderItem.pathNative))
    -vedi se come child esiste l’immagine cercata
    -se esite ne crei la WebPicture (non la picture) (shared se non ricordo male per ricaricarla)

(Scritto a mente, verifica…)