Newsgroup: it.comp.lang.vo-clipper
Titolo: Icone che scompaiono

Nei miei programmi succede che le icone nella toolbar e nelle TreeView
ogni tanto scompaiono. Mi è stato detto che e' un problema di
risorse di sistema di Windows.
Dato che uso l'IDE per creare le finestre il codice
e' quasi tutto creato da VO. Non riesco proprio a capire
dove sbaglio o se e' un bug di VO.
Volevo sapere se succede anche a voi ed aventualmente
se avete qualche suggerimento da darmi.
Ho notato, ma è solo una impressione, che inserendo ogni
tanto Collect() nel codice
la sparizione risulta meno frequente.
Utilizzo VO 2.5 B3 ma il problema e' comparso con la
prima versione di VO 2.5.
Grazie e saluti
Paolo Calzi


wrote:

-----------------------------
Fabio Cresta
Computer Associates FSG Consultant
VO/Jasmine specialist
e-mail: 
fabio....@ca.com
 
fcr...@tin.it
 
fcr...@windevs.com
web: 
http://www.windevs.com
------------------------------


Cosa posso fare nel caso l'applicazione giri su W9X (la maggioranza dei
miei clienti lo usa)?
Saluti
Paolo Calzi


Prova l'utility Tweak UI (
http://wintricks.com/faq/tweakui.html
). Si
installa con un procedimento particolare che la inserisce nel pannello di
controllo. Tweak UI comprende una funzione che "ripara" le icone.
Probabilmente non risolverà il tuo problema, ma provare non costa niente.
Ciao.
Roberto Cordini



-----------------------------



Ciao Fabio.
Riguardo al problema delle icone che scompaiono segnalato da Paolo, consigli
di forzare una chiamata al Garbage Collector. Ho fatto questa semplice
prova. In una applicazione VO che gira su Win98 II ho inserito una chiamata
alla funzione CollectCount() che dovrebbe ritornare il numero delle
Collect() eseguite. Mi basta aprire una finestra (per la verità abbastanza
complessa) e subito dopo chiuderla perchè la funzione CollectCount() mi
riporti il numero 117 ! Per questo mi chiedo come possa influire
positivamente sul problema segnalato da Paolo il fatto di forzare unteriori
Garbage Collector quando automaticamente ne vengono già eseguiti tanti.
Scusami se ho detto una fesseria.
Ciao.
Roberto Cordini


Ho gia' individuato le parti del programma dove questo succede e
praticamente
ho insrito quasi d'appertutto
if !incollect()
collect()
endif
ma il problema compare ancora.
Se ti viene in mente qualcos' altro fammelo sapere,
Ho pensato di provare ad influire sulla memoria dinamica Dyninfospace
o qualcosa del genere. Non mi ricordo bene, devo andare a vedere
tra i vecchi post.
Ciao e grazie
Paolo Calzi

Il problema č un buco di Visual Objects bello e buono che cambia l'indirizzo delle risorse bitmap quando esegue il Garbage...
Per risolverlo devi semplicemente reinstanziare la bitmap e riassegnarla...
Io ho fatto cosě x le DataWindow e il tutto funziona; non č il massimo ma x rincorrere i soli bugs... ;-!
P.S. Devi utilizzare una classe tua Toolbar come quella in basso
METHOD Activate( oEvent ) CLASS aDataWinVuota
    // Questo metodo viene richiamato in automatico per
    // l'aggiornamento dei dettagli e in quel caso
    // oEvent -> NIL e non deve eseguire il SUPER:Activate()
 
    SUPER:Activate(oEvent)
    SELF:tsDrawBar()
    RETURN NIL
METHOD tsDrawBar() CLASS aDataWinVuota
    LOCAL bmp     IS _WINTBREPLACEBITMAP
    LOCAL oRIBBON AS OBJECT
 
    IF IsOK(SELF:Toolbar)
        oRIBBON := myRIBBON{}
        bmp.hInstOld := NULL_PTR
        bmp.nIDOld   := DWORD( _CAST, SELF:Toolbar:Bitmap:Handle() )
        bmp.hInstNew := NULL_PTR
        bmp.nIDNew   := DWORD( _CAST, oRIBBON:Handle() )
        bmp.nButtons := 46
        SendMessage( SELF:Toolbar:Handle, TB_REPLACEBITMAP, 0, LONG( _CAST, @bmp ))
        SELF:Toolbar:Bitmap := oRIBBON
        InvalidateRect( SELF:Toolbar:Handle, NULL_PTR, FALSE )
        UpdateWindow( SELF:Toolbar:Handle )
    ENDIF
    RETURN NIL
CLASS TSToolbar INHERIT Toolbar
ACCESS Bitmap CLASS TSToolBar
    RETURN SELF:oBitmap
ASSIGN Bitmap(uValue) CLASS TSToolBar
    RETURN SELF:oBitmap := uValue
ACCESS Handle CLASS tsToolbar
   RETURN SELF:hWndMainTB
Per i TreeView e ListView il metodo č simile...
------------------------------------------
Posted via web GlobalNews
www.globalnews.it
------------------------------------------

Dimenticavo... non è un buco di Win 9.x in quanto si presenta anche su NT 3.51, NT 4.0, Win 2000 Prof, Win 2000 Server e Win ME
Altri S.O. da provare non ne avevo... :(


...


METHOD Activate( oEvent ) CLASS aDataWinVuota


nelle TreeView e nei Tab Control?
Appena posso volentieri...
Ciao Ciao


Grazie ancora per il codice, lo provo subito
Ciao
Paolo Calzi
