Newsgroup: it.comp.lang.c++
Titolo: Problemi col C++Builder 4 St

Quando avvio un programma, creato con C++Builder 4 Standard,
in un computer, diverso da quello contenente il compilatore, non vengono
visualizzati i bitmap delle ImageList.
Cioč non vengono visualizzate le icone dei menu e delle toolbar.
Utilizzando Resource Workshop non riesco ad individuare tali bitmap nel
file eseguibile.
La casella Use dynamic RTL, delle Project Option->Linker, non cambia il
risultato.
Il computer col compilatore ha Windows 98 mentre l'altro Windows 95.
L'intallatore non conta.
Insomma dove vanno a finire questi benedetti bitmap!
Vedete se questo capita anche a voi.
Ringrazio tutti.
Saluti,                           Franco


Il problema risiede nel fatto che Microsoft ha deliberatamente
cambiato il formato di streaming delle ImageList. Per risolvere
il problema devi installare, sulla macchina che "nasconde" le bitmap,
una versione aggiornata della comctrl32.dll. O la pigli dal sito
della Micosoft, oppure installi IE5 sulla macchina incriminata.
Io ho trovato un Workaround che risolve il problema senza dovere
per forza installare la nuova dll, anche se la Borland ha detto 
che sono matto.
1) Tasto destro sull'image list.
2) Scegliere la voce del context menù che apparirà
   dove c'è scritto ImageList Editor
3) Premi il tasto Export che appare in basso e salva
   tutte le bitmap in un file a cui darai un nome
   qualsiasi.
4) Premi il tasto Clear che appare in basso al fine
   di cancellare tutte le bitmaps dalla image list.
5) Premi il tasto Add che si trova in basso a sinistra
   e ricarica le bitmap che hai precedentemente salvato
   nel file col nome qualsiasi.
6) non toccare più la ImageList e ricompila tutto il 
   casino così come sta. 
Con l'eseguibile così conciato, di solito le bitmap 
riappaiono anche sulle macchine con la versione
desueta di comctrl32.dll.
Ricorda che se aggiungi una bitmap alla Image list
devi ripetere tutte le suddette operazioni.
Spero d'esserti stato d'aiuto.
Ciao.
Giuliano

 devi ripetere tutte le suddette operazioni.
Ma tutta l'operazione non è quella standard, per creare ImageList?
Forse funziona perchè fatta dopo aver creato le ActionList e i Menu.
Il fatto è che non funziona sempre, prova a fare una disinstallazione, e
a reinstallare il programma; poi prova a installare un upgrade del
programma (cioè senza Borlndmm.dll e Vcl40.bpl).
A volte funziona a volte no. Incredibile ma vero!
Forse includendo i benedetti bitmap nelle risorse?
Saluti,                    Franco

Ma tutta l'operazione non è quella standard, per creare ImageList?
Non proprio, o meglio, di solito si aggiungono le immagini
man mano che servono. È raro che uno inserisca prima
tutte le immagini che servono per i menù e gli speedbutton
della toolbar. Il problema infatti avviene quando si aggiunge
qualche immagine dopo la prima. Qualcosa cambia nelle
risorse dell'eseguibile prodotto. Mi spiego meglio: se tu
carchi due immagini in una volta, da un unico bmp, in
in Imagelist e compili, ottieni un eseguibile che ha un
pattern differente da quello che otterresti se tu caricassi
le glyph in due tempi (cioè prima una e poi l'altra).
Non so perché ma pare sia così. Qundi, se aggiungi
una gliph ulteriore al tuo programma (perché hai
aggiunto una funzione e quindi hai uno speedbutton e un 
menù item in più), se non vuoi veder sparire
tutte le bitmap dopo aver aggiunto la glyph, devi salvare
tutte le immagini in blocco, eliminarle dalla imagelist e poi
ricaricarle tutte "in un colpo solo" tramite il file precedentemente
salvato.
Comunque ... buona fortuna e fai sapere se scopri qualcosa.
Ciao.
Giuliano

>si fa prima ad installare l'onnipresente interne explorer.
Anche su un Pentium 75 con 16 Mb di ram? E poi perche' devo costringere un
cliente ad installare un programma che non vuole per poter utilizzare il
mio?
Vuoi vedere che alla Microsoft hanno fatto apposta a cambiare la chiamata
alla ImageList nella COMCTL32
per costringerci tutti ad installare IE5 !!!
Comunque l'upgrade della DLL si puo' fare ed e' distribuibile liberamente,
al contrario di IE5 per cui e' necessaria autorizzazione (credo).
Ciao
--
Stefano Tempesta
TSoft - 
www.tempesta.org
in...@tempesta.org

Anche su un Pentium 75 con 16 Mb di ram? E poi perche' devo costringere un
Qusto è un caso limite. Chi è furbo, su una macchina così, 
a tutt'oggi, se vuole avere quache speranza di usarlo
senza diventare un bestemmiatore incallito monta Linux 
non Windows che ci mette mezz'ora solo a partire.
Comunque il discorso è diventato super OT e quindi, per
me, finisce qui.
Ciao