Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

vb6 - Drag n Drop

Posted on 2014-09-26
7
Medium Priority
?
330 Views
Last Modified: 2014-09-28
Hi guys,

The following code has a peculiarity I cannot work out - perhaps its simply because I am very tired but for the life of me I cannot work it out. The code is from a Drag Drop event - I catch the data object which is filled with files from dragging them from explorer.

the function this code is in works fine except the peculiarity - it leaves one file behind on every ocassion ... I know I can loop through the files in other ways, but I want to understand why it leaves one file behind ...

...
 'DroppedItem  is decalred as a variant

 For Each DroppedItem In Data.Files
        DoEvents 'During long loops its always a good idea to return control to windows
        Debug.Print "Shift = " & Shift & " - " & DroppedItem
        
        pbFiles.Value = pbFiles.Value + 1
        
        DoEvents
        
        If fso.FileExists(DroppedItem) Then
           ' test to see if the file exists
            sFileName = fso.GetFileName(CStr(DroppedItem))
            If fso.FileExists(defDir & sFileName) Then
                ' we exist
                ' let the user decide if we over write or not
                Select Case MessageBoxx(Me, sFileName & " exists in the destination directory. Do you want to over write it? If you're unsure select Cancel and check your files.", vbExclamation + vbYesNoCancel)
                    Case vbYes
                        ' delete the file already there
                        kill defDir & sFileName
                        bOverwrite = True
                    Case vbNo
                        bOverwrite = False
                    Case vbCancel
                        Exit Sub
                End Select
            End If
            
            If Shift = 1 Then
              If bOverwrite Then fso.MoveFile DroppedItem, defDir
            Else
              If bOverwrite Then fso.CopyFile DroppedItem, defDir, bOverwrite
            End If
        ElseIf fso.FolderExists(DroppedItem) Then
               If Shift = 1 Then
                  fso.MoveFolder DroppedItem, defDir
               Else
                  fso.CopyFolder DroppedItem, defDir
               End If
        End If
        
        DoEvents
        
        bOverwrite = True
    Next
...

Open in new window


MTIA

DWE
0
Comment
Question by:dwe0608
  • 3
  • 3
7 Comments
 
LVL 49

Expert Comment

by:Martin Liss
ID: 40348033
Can you attach you project?

What is  MessageBoxx?
0
 
LVL 1

Author Comment

by:dwe0608
ID: 40348078
Hi Martin
I'll hive off a seperate project and post
Messageboxx is a custom msgbox function which is  subclassed so I can center it on the parent window ... I'll include it in the project ...
0
 
LVL 49

Expert Comment

by:Martin Liss
ID: 40348080
Thanks. I'll probably also need to know what website you are getting the files from and how you do that.
0
Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

 
LVL 32

Accepted Solution

by:
Robberbaron (robr) earned 2000 total points
ID: 40348226
is bOverwrite true or false at the beginning of loop ?

 if false (or not defined=false) then the first file wont be processed.

 'DroppedItem  is declared as a variant
bOverwrite=true   '<<<added cpde
 For Each DroppedItem In Data.Files

Open in new window

0
 
LVL 1

Author Closing Comment

by:dwe0608
ID: 40348290
Robberbaron - well, I did say I was tired. .... you were correct ... it tested for false on the first loop as you said and it didnt change until the 2nd item ....

Thank you ...

Regards

Darrin
0
 
LVL 49

Expert Comment

by:Martin Liss
ID: 40348617
Very nice catch.
0
 
LVL 1

Author Comment

by:dwe0608
ID: 40349042
Hi Martin - I said I'd post the project and here it is - while RobR picked the error the project is still worthwhile having here because of a couple of unique functions in the code - first is the ablity to drag and move or copy the files - second is the ability to center the BrowseForFolder dialog over the calling window and lastly the ability to center the messagebox on the calling window. There is also a usercontrol in it which is a progressbar with a caption and percentage - not all of this is my work but I know that some people might find it useful ...

I've tried to upload the file but because of the usercontrol in the zip file its disallowed. I have put it on GoogleDrive for downloading here.

Any comments would be welcomed.
0

Featured Post

Learn Veeam advantages over legacy backup

Every day, more and more legacy backup customers switch to Veeam. Technologies designed for the client-server era cannot restore any IT service running in the hybrid cloud within seconds. Learn top Veeam advantages over legacy backup and get Veeam for the price of your renewal

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

916 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question