Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Estrazione icone dai form

Salve, ho il seguente problema che non riesco a risolvere in nessun modo.
Nel mio applicativo (VB5 + SP3), uso i controlli vbaccelerator ; per poter
vedere e/o richiamare tutte le finestre aperte, ho inserito nella toolbar un
pulsante "FINESTRE" che mi crea un menu popup contenente le caption di tutti
i form aperti al momento in cui premo il bottone.
Fino qua tutto bene, ora vorrei inserire oltre alla caption della finestra
(che diventa una voce del menù popup ) l'icona associata al form
corrispondente inserita nella proprietà icon della finestra proprietà nella
progettazione del form.
Ho pensato quindi di inserire una Image List nel form MDI, che dovrei far
popolare con le icone che vado a leggere nei form aperti.
Questo è il codice che mi serve per creare il menu popup e dovrebbe servire
a recuperare le icone dai form :
    vbalImageList1.Clear
    With mnuFinestre
        .ImageList = vbalImageList1
        iP = .AddItem("&Finestre", , , , , , , "FINESTRE")
            For nI = 1 To Forms.Count - 1
                With vbalImageList1
                    'Questo dovrebbe essere il codice che mi inserisce
l'icona nel
                    'controllo vbalImagelist1 ma purtroppo non funziona.
                    .AddFromHandle Forms(nI).Icon, IMAGE_ICON
                End With
                If Forms(nI).Caption <> "MANUT32 NEW" Then
                    .AddItem Forms(nI).Caption, "", , iP, nI, , True,
Forms(nI).Name
                End If
            Next nI
    End With
Spero di non avere fatto troppo casino ed essere riuscito a spiegarmi

 i form aperti al momento in cui premo il bottone.
scusa la domanda: a parte le icone, non era sufficiente la "window list" del
menu editor di vb ?
se si', sul sito comune mi sembra che ci sia come associare icone ai menu.



Prima di tutto, grazie per la risposta.
Il problema, non č nella gestione del menů, per la quale non ci sono dei
problemi a farlo con la "window list", ma era e resta come prelevare a Run
Time l'icona del form e poterla utilizzare.
Tutto quello che riesco a fare č solamente ricavare l'icona dell'eseguibile
ma, non č quello che serve a me.
Saluti
Paolo Ardissone

 ma, non č quello che serve a me.
hai un numero fisso di form, spero, ognuno con la sua caption. cioe', non un
mdi con children variabili tipo word.
in qto caso forse ti basta andare a leggere le caption della tua window list
(comunque tu la generi, si modifichera' a ogni form load/unload) e
aggiungere le icone con la procedura che ci dev'essere sul sito comune.
immagino funzioni preparando le icone in un imagelist e recuperandole poi
con la proprieta' key dell'imagelist. ne ho viste di simili in molti altri
siti, se non la trovi dimmi qualcosa.
ciao, pal

Grazie mille Pal, ho comunque risolto nel modo che puoi vedere sotto.
Stupidamente mi incasinavo con il contatore nI, in quanto bypassavo l'icona
del form MDI.
Facendo nel modo che vedi sotto, mi carico nella vballImagelist1 anche
l'icona del MDI e poi semplicemente non la uso per le voci del menů.
Grazie ancora per l'interessamento.
Ciao
Paolo Ardissone
    With mnuFinestre
        .ImageList = vbalImageList1
        vbalImageList1.IconSizeX = 16
        vbalImageList1.IconSizeY = 16
        vbalImageList1.Clear
        iP = .AddItem("&Finestre", , , , , , , "FINESTRE")
        For nI = 1 To Forms.Count - 1
            If Forms(nI).Caption <> "MANUT32 NEW" Then
                With vbalImageList1
                    .AddFromHandle Forms(nI).Icon, IMAGE_ICON
                End With
                .AddItem Forms(nI).Caption, "", , iP, nI - 1, , True,
Forms(nI).Name
            Else
                With vbalImageList1
                    .AddFromHandle Forms(nI).Icon, IMAGE_ICON
                End With
