Public Sub CopyItem(SourceCtl As Control, _
TargetCtl As Control, _ Optional strMode As String) On Local Error Resume Next Dim intItem As Integer Screen.MousePointer = vbHourglass With SourceCtl 'identifico il tipo di controllo (ListBox o ComboBox) If TypeOf SourceCtl Is ListBox Then 'eseguo un ciclo per tutti gli elementi della ListBox For intItem = .ListCount - 1 To 0 Step -1 'Se l'elemento e' selezionato, o se la modalita di copia e' COPYALL... If .Selected(intItem) Or InStr(strMode, "COPYALL") Then '.allora aggiungo l'elemento e il suo ItemData al controllo Target TargetCtl.AddItem .List(intItem) TargetCtl.ItemData(TargetCtl.NewIndex) = .ItemData(intItem) 'e se e' indicato il parametro '-', rimuovo l'elemento dal 'controllo Source If InStr(strMode, "-") = 1 Then .RemoveItem (intItem) End If Next 'Copio gli elementi della ComboBox Else 'eseguo un ciclo per tutti gli elementi della ComboBox For intItem = .ListCount - 1 To 0 Step -1 'copio gli elementi e i relativi ItemData nel controllo Target TargetCtl.AddItem .List(intItem) TargetCtl.ItemData(TargetCtl.NewIndex) = .ItemData(intItem) 'e se e' indicato il parametro '-', rimuovo l'elemento dal 'controllo Source If InStr(strMode, "-") = 1 Then .RemoveItem (intItem) Next End If End With Screen.MousePointer = vbDefault End Sub Questa semplice routine, copia (o muove) gli elementi selezionati di una ListBox (o ComboBox) in un altro controllo ListBox. 'L'uso e' molto semplice, in quanto basta semplicemente 'passare alla routine i nomi dei controlli e la modalita' 'di copia: 'Modalita Azione '"-" Copia gli elementi selezionati dal controllo ' SourceCtl al controllo TargetCtl ' rimuovendoli dal controllo SourceCtl '"COPYALL" Copia tutti gli elementi dal controllo ' SourceCtl al controllo ' TargetCtl senza rimuoverli dal controllo SourceCtl ' '"-COPYALL" Copia tutti gli elementi dal controllo ' SourceCtl al controllo TargetCtl ' rimuovendoli dal controllo SourceCtl ' ' |