Newsgroup: it.comp.lang.visual-basic
Titolo: Come alleggerire i controlli.

Un appello a tutti i guru:
Sto sviluppando un programma che mi dà un problema a livello di
prestazioni.
Il collo di bottiglia è costituito da diverse (in numero variabile)
finestre MDI child che contengono numerosi (anche una trentina)
controlli active X.
Questi controlli, semplificando un po' la questione, sono delle shape,
con in mezzo una label centrata orizzontalmente e verticalmente e
un'altra label trasparente che ricopre esattamente il tutto per poter
gestire gli eventi del mouse.
La semplice visualizzazione di tutto ciò è di una lentezza
impressionante: sovrappore parzialmente 2 finestre e passare da una
all'altra richiede alcuni secondi su un P2 266 e Win 95, circa una
ventina di secondi su un P 150 con Win NT.
Il tutto per il solo ridisegno delle form, gestito da Windows, senza
l'esecuzione di codice.
Vi sembra normale?
Avete idee su come migliorare le performance?
Vi prego qualunque aiuto sarà molto apprezzato.
Bye
Luca
Rimuovi _ABC dall'indirizzo per rispondere

...


Il suggerimento è di togliere i controlli e tradurre tutto in codice. Prima
Si ma fare tutto a mano non sempre è possibile. Gli ocx sono stati inventati
apposta per non reinventare la ruota ogni volta.
Piuttosto sarebbe utile sapere cosa vuole fare e quindi pensare una
soluzione alternativa.f


Purtroppu questi controlli fanno parte di un progetto piuttosto
complesso e fa molto comodo non avere troppo codice attorno (ce n'è
già tanto), anche perchè prossimamente le shape potranno essere dei
metafile, le cui proprietà possono dipendere da proprietà di altri
oggetti presenti sulle form (ci sarà dietro Excel a fare i conti e ci
sarà da ridere con le performance).
Comunque fare tutto a codice diventerebbe improbo, anche
l'intercettare un clic su una forma che ADESSO è una shape, ma
prossimamente potrebbe essere qualunque cosa misembra complicato.
Inoltre quei controlli contengoso alcuni automatismi che fanno molto
comodo perchè si smazzano parte del lavoro dell'applicazione.
Controllerò l'auto redraw e farò sapere.
Grazie comunque per i consigli.



Da quanto ho capito, probabilmente stai cercando di fare una specie di
diagramma (tipo flow-chart o grafo). Confermi?
Se e' cosi' dovresti pensare ad 1 solo OCX che gestisce tutto.
Ossia, invece di usare 1 OCX per ogni oggetto disegnato, usi 1 solo OCX che
contiene tutti gli oggetti e, tramite una collection Oggetti di classi
Oggetto, puoi lavorare con i singoli oggetti del diagramma; tutta la
gestione del posizionamento, click, visualizzazione, verra' gestita
dall'unico OCX "contenitore".
Se mi sono spiegato male fammi sapere.
--
Roal Zanazzi
z...@iol.it

dall'unico OCX "contenitore".
Credo che mi sfugga un po' il senso della tua spiegazione, il problema
(credo) derivi dal numero di controlli presenti.
Se avessi l'OCX contenitore con i suoi membri questi dovrebbero
comunque essere formati da diversi elementi: una shape, 2 label per
mostrare vari dati e una label trasparente sopra al tutto per prendere
gli eventi del mouse.
Se col tuo metodo si puů evitare tutto ciň sarebbe ottimo, perň mi
sfugge come, farň un po' di prove e poi farň sapere.
A proposito, per caso conosci un certo Pierluigi di Angera?
Se č cosě ci siamo conosciuti alla festa che ha fatto a casa sua a
luglio.
Ti ringrazio infinitametne per i suggerimenti e mi metto a testare la
tua idea.
