Container Control Drop

Buona sera signori…
Santissimo Antonio buona sera anche a lei !

Allora, devo implementare il DROP in un containercontrol
il containercontrol contiene altri containercontrol ( embed ) con icona e nome del file ( sono allegati ) presi da un’array di allegati email.
e fino qui per la visualizzazione vado bene… (sempre Grazie ad Antonio che mi ha insegnato come popolare un cc con altri elementi )

Adesso devo solo fare in modo di trascinare e rilasciare un oggetto ( file ) sul container control per inserire il valore.
so come inserirlo dall’esterno con embedwithin …
so come aggiornare il cc, inserendo eliminando i valori

ma non ho mai usato drop.
ho provato ma non da segni di vita…

Intanto ho messo nell’evento open :
Me.AcceptFileDrop(“special/any”)

Con l’evento open funziona

Allora, sono riuscito ad utilizzare ‘DROP’ per caricare un file, in pratica :

  • ho una windows he si chiama sendemailsmtp
  • all’interno un container control che contiene tanti oggetti allegato
  • l’oggetto allegato un container control con una label ( nome del file ) e un canvas ( icona )
  • quando trascino nell’oggetto un nuovo file viene inserito un nuovo oggetto ‘allegato’ che mostra la label, l’icona e sempre nell’oggetto ho una variabile di tipo emailattachment.
    ora vorrei che quando premo su uno di questi oggetti di tipo ‘allegato’ e lo trascino fuori dal container control questo se ne vada.
    Solo che non ho capito come fare l’evento per portarlo via.


if obj.FolderItem.Exists then 
  // appendo un allegato
  dim allegato as new EmailAttachment
  allegato.LoadFromFile(obj.FolderItem)
  allegato.Name = obj.FolderItem.Name
  allegato.MIMEType = getmimetype(obj.FolderItem)
  dim allegatocc as new ccallegatosmtp
  allegatocc.allegato = allegato
  allegati.Append allegatocc
  
  // append file 
  dim tag as integer = allegati.Ubound
  
  dim verticale as integer = 0
  dim orizzontale as integer = 0
  
  'dim tag as integer = allegati.Ubound
  
  tag = tag + 1
  if tag = 1 then 
    verticale = 23
    orizzontale = 3
  elseif tag = 2 then 
    verticale = 23
    orizzontale = 3 + 190
  elseif tag = 3 then 
    verticale = 23
    orizzontale = 3 + 190 + 3 + 190
  elseif tag - 3 = 1 then 
    verticale = 23 + 25 + 3
    orizzontale = 3
  elseif tag - 3 = 2 then 
    verticale = 23 + 25 + 3
    orizzontale = 3 + 190
  elseif tag - 3 = 3 then 
    verticale = 23 + 25 + 3
    orizzontale = 3 + 190 + 3 + 190
  elseif tag - 6 = 1 then 
    verticale = 23 + 25 + 3 + 25 + 3
    orizzontale = 3
  elseif tag - 3 = 2 then 
    verticale = 23 + 25 + 3 + 25 + 3
    orizzontale = 3 + 190
  elseif tag - 3 = 3 then 
    verticale = 23 + 25 + 3 + 25 + 3
    orizzontale = 3 + 190 + 3 + 190
  end if
  
  me.allegati(me.allegati.Ubound).EmbedWithin(me,orizzontale,verticale,-1,-1)
  me.allegati(me.allegati.Ubound).doallegato // chiamo l'elaborazione dell'allegato
  me.allegati(me.allegati.Ubound).TabIndex=me.TabIndex+tag+1
  
  me.Refresh
end if

Fare il drag per eliminarlo diverso dal drag & drop
Puoi:
implementare un drag normale (ovvero mouse down=>true, poi segui il drag e se lo sposti via dal container lo elimini

Ma a mio avviso non una buona idea in quanto magari ci si aspetta che lo puoi spostare altrove (cartella, desktop, altro programma) e la cosa (fattibile) potrebbe essere complicata.

Potresti allora aggiungere un’icona per la cancellazione (pi immediato e semplice anche nell’utilizzo)

Semplicemente, se ho sbagliato a metterlo li… lo tiro via…
quindi voglio capire come fare a spostarlo dal container e farlo semplicemente sparire