Newsgroup: it.comp.lang.delphi
Titolo: Tanto ComboBox e mi crash..a il programma...

Per un mio programmino personale, avrei bisogno di inserire in un form
circa 100-120 controlli di tipo combobox.
Man mano che inserisco tutto procede bene fino a che col copia e
incolla finisco la Form avvio e ....pluff....Delphi 5 si rifiuta di
avviare ol programma .....
Ma come, uno dei motivi per cui io sono passato da Vb a Delphi, (e
comunque in Deplhi ci resterò per sempre perchè mi piace molto di più
di VB) è che Vb dopo 250 controlli in una form non si avvia più e
anche delphi allora ha questo problema?
Forse che i comboBox consumano più memoria? Ma con 128 mega di RAM può
essere? Non ci capisco molto.
Grazie a chi mi può dare un consiglio altrimenti devo lasciar perdere
il progetto.
Robin

 avviare ol programma .....
La soluzione al proplema specifico non la conosco, ma credo che non sia
corretto inserire 100 combobox nello stesso form, prova a "spezzare" il
tutto su più form. Anche io ho utilizzato VB so che ti permette di fare un
sacco di cose (anche scorrette), ma delphi è più preciso, quindi dammi
retta e cerca di dividere i componenti su più form, vedrai che avrai un
incremento anche nella velocità.
Se hai dei problemi fammi sapere.
Massimo

Massimo
Grazie, Massimo ma ci avevo già pensato, e certo è possibile fare come
dici tu, ma solo che il programma perderebbe di senso a questo punto.
 (se mi permetti)  un attimo ti spiego: il programma diciamo che mi
dovrebbe servire in tempo reale e cioè mentre sto lavorando devo avere
un portatile (o anche un pc desk) a portata di mano e man mano che
proseguo nel lavoro devo registrare i risultati direttamente sul
programma. (Sei curioso: bè si tratta di un programma di medicina, (io
sono medico) che deve necessariamente avere innumerevoli opzioni a
portata di m..ouse) Quindi la suddivisione del programma in tante form
mi farebbe perdere di vista quello che è l'aspetto complessivo del
problema e così il programma mi sarebbe più d'impaccio che utile.
Robin

Robin
Sono daccordo con te, ma credo che comunque una via di mezzo la devi
trovare, prova a vedere se alcuni controlli li puoi accorpare, ad
esempio sositutendoli con dei cheklistbox; io sto scrivendo un
programma per un ospedale ed alcuni problemi simili li ho risolti in
questo modo.
Massimo
Il vero problema non č tanto sapere se le macchine pensano bensě se gli uomini pensano. B.F. SKINNER (1904-90)

 Robin
Puoi spezzare il tutto e suddividere in MDIForm e MDIChild form
Il main si presenta come word o excel poi man mano che ti servono i vari
pezzi apri le finestre non modali ma figlie in questo modo puoi avere tutto
sotto mano.
Se poi le varie form le includi in dll il sistema si puo anche espandere..
Ciao Claudio

Robin
Ora ti spiego un po' meglio :)
Il problema dei troppi controlli non è legato nè al linguaggio che
usi, nè alla memoria presente nella macchina, ma al sistema operativo.
Prendi comunque queste parole con molta cautela: effettivamente
possono esserci delle variazioni da linguaggio a linguaggio, più che
altro perchè se l'IDE di uno "pesa" più dell'IDE dell'altro, sul primo
riuscirai, in fase di design, ad editare meno controlli, mentre sul
secondo potrai inserirne di più.
Il problema sta nel fatto che, in Windows 9x, ogni oggetto occupa
risorse di sistema che, man mano che inserisci controlli in una form,
diminuiscono. Quando sei arrivato a 0, il sistema crasha
inevitabilmente perchè non + più possibile aprire nemmeno una
finestrella. Già al 20% comunque la situazione diventa critica, perchè
basta aprire un programma e tutto potrebbe crollare.
Queste risorse _mi sembra_ che non siano legate alla quantità di ram
installata, o meglio, forse lo sono, ma in minima parte, perchè con un
monitor di sistema si può osservare come queste calino drasticamente
aprendo form complesse, ma il sistema ha ancora moltissima memoria
disponibile, quindi le 2 cose non possono essere legate più di tanto.
Io sto comunque basandomi esclusivamente sull'esperienza personale.
Se vuoi lavorare con una certa sicurezza, ti consiglio vivamente di
farlo sotto Win2000 (o WinNT 4, penso vada bene lo stesso). Questo
sistema infatti non gestisce le risorse come la serie 9x, ma usa
effettivamente tutta la memoria che può (compresa la virtuale). Ho
testato la situazione con un programma che ha una cinquantina di form
più o meno complesse. Sotto 98 bastava aprire una decina di form e si
bloccava tutto (col monitor sotto mano, alla decima form si arrivava
in prossimità dello 0% di risorse), mentre sotto 2000 ho aperto tutte
e 50 le form e notavo che man mano le aprivo, la memoria libera calava
e, arrivata a circa 3MB liberi, veniva dinamicamente allargata grazie
al file di swap.
Spero di esserti stato utile e comunque... non mettere 100 combo box
in un'unica form... poveraccio quello che poi deve usarlo quel
programma :) Meglio smaltire i controlli su più form.
CIAO.
/|/|/ Bozzy \|\|\