Jump to content

Problem with drag & drop


Recommended Posts

Hello guys :D

I have an edit, with Drop event, using @GUI_DragFile macro. I check the extension of the input file (just allow txt and ini file), if the extension is not allowed then return an error. 

But when the error display, the edit have the location of that file. ( Example: I drag the file "Example.au3" at Desktop - which have extension is not allowed - to the Edit, the error display, and the file location "C:\User\MeowMeow\Desktop\Example.au3" string is set for the edit )

How can i eliminate the file location, which is set to edit?

Help me <3 

(P.s: the edit have some text before, so i can't use GuiCtrlSetData)

Link to comment
Share on other sites

FileGetShortName returns the "8.3 short path+name of the path+name passed."

I think he is looking for _PathSplit which splits the filepath into drive, dir, filename and extension.

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

i'm vietnamese, so it's hard to try to describe it out -~-

 

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

#include "File.au3"
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 623, 442, 192, 124, -1, BitOR($WS_EX_ACCEPTFILES,$WS_EX_WINDOWEDGE))
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
GUISetOnEvent($GUI_EVENT_DROPPED, "DropFile")
Global $Edit1 = GUICtrlCreateEdit("", 104, 48, 361, 233)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
GUICtrlSetData(-1, "")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    Sleep(100)
WEnd

Func DropFile()
    Local $Dir = "", $Drive = "", $Name = "", $Extension = ""
    $Source = _PathSplit(@GUI_DragFile, $Drive, $Dir, $Name, $Extension)
    If $Source[4] <> ".txt" And $Source[4] <> ".ini" Then
        MsgBox(16 + 262144, "Message", "File not allowed!")
    Else
        GUICtrlSetData($Edit1, FileRead(@GUI_DragFile))
    EndIf
EndFunc

Func Form1Close()
    Exit
EndFunc


Example: i drag one .txt or .ini file to the GUI, which support Drag and drop. Then i drag one .au3 file to it. The error display and the problem is the location of the au3 file is printed under the content of txt (ini) file.

Thanks <3

Edited by MrTheDzam
code edit
Link to comment
Share on other sites

Your edit field now has two tasks. Accept the dragged filepath and display the content.
I would split this tasks. Create a small input field where the users can drag the filepath to.
If .txt or .ini then display the file content in a second edit control.
For anything else display the error message and clear the input field.
So content and filepath no longer mix in a single control.

 

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

I'm talking about something like this:

You need to d&d the file to the input field. If it is a valid file then the content is displayed in the edit field.
Advantage: You always see the filepath of the file you are currently processing.

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include "File.au3"
Opt("GUIOnEventMode", 1)
Global $sActiveFile = ""
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 623, 442, 192, 124, -1, BitOR($WS_EX_ACCEPTFILES,$WS_EX_WINDOWEDGE))
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
GUISetOnEvent($GUI_EVENT_DROPPED, "DropFile")
Global $idInput1 = GUICtrlCreateInput("", 104, 20, 361, 20)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
Global $Edit1 = GUICtrlCreateEdit("", 104, 48, 361, 233)
GUICtrlSetData(-1, "")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    Sleep(100)
WEnd

Func DropFile()
    Local $Dir = "", $Drive = "", $Name = "", $Extension = ""
    $Source = _PathSplit(@GUI_DragFile, $Drive, $Dir, $Name, $Extension)
    If $Source[4] <> ".txt" And $Source[4] <> ".ini" Then
        MsgBox(16 + 262144, "Message", "File not allowed!")
        GUICtrlSetData($idInput1, $sActiveFile)
    Else
        $sActiveFile = @GUI_DragFile
        GUICtrlSetData($Edit1, FileRead(@GUI_DragFile))
    EndIf
EndFunc

Func Form1Close()
    Exit
EndFunc

 

Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

Well :P you are understanding wrong what i'm asking. I'm asking how to eliminate the file location in the "idInput1" input :P

That mean (in my code) if you drag the file into the edit and the extension is not allowed, then the file location will not be set as a data of the Edit1 :D 

anyway, thanks for the answer

Edited by MrTheDzam
Link to comment
Share on other sites

Quote

file location will not be set as a data of the Edit1

That's exactly what my solution does.

A wrong filepath only gets displayed in Input1 while the MsgBox is active. And the filepath of a wrong file does not get mixed with the content of a correct file in Edit1.
 

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

Just now, water said:

at's exactly what my solution does.

A wrong filepath only gets displayed in Input1 while the MsgBox is active. And the filepath of a wrong file does not get mixed with the content of a correct file in Edit1.
 

i'm doing what notepad can't doing: drag and drop the file into the text editing zone. and if i set the data to "" then any existing data in there will be empty ( :( )

but if i create a new input to drag & drop file into it, then the form will no longer like notepad :( 

Link to comment
Share on other sites

If you change the functionality (drag & drop) why not slightly change the look by adding an input field?

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

3 minutes ago, BetaLeaf said:

I use $fArray=stringsplit($string,"/\") and it returns an array. The last part of the array is always the filename.fileext. if the array unbound is 5 then $fArray[5] is what I need. Do you understand?

that is not what i asked for =~= I just need to eliminate the file location, which is set to the Edit when i drag the file have un-allowed extension to it 

you need to read my code at #4 to see my problem =~=

Edited by MrTheDzam
Link to comment
Share on other sites

2 minutes ago, BetaLeaf said:

I read and understand you are trying to remove the file location. If your dropped file is "C:\User\MeowMeow\Desktop\Example.au3" and you want to convert it to "Example.au3" then that's what my code will do. 

i don't need to convert it to "Exanple.au3". I need to remove it from the edit :D 
You have wrong idea :D anyway, thanks for help me :D 

Link to comment
Share on other sites

Hello. you can do this:

 

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPISys.au3>
#include <APIConstants.au3>
#include <Array.au3>
#include <WinAPIEx.au3>
#include "File.au3"

Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 623, 442, 192, 124, -1, BitOR($WS_EX_ACCEPTFILES, $WS_EX_WINDOWEDGE))
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
;~ GUISetOnEvent($GUI_EVENT_DROPPED, "DropFile")
Global $Edit1 = GUICtrlCreateEdit("", 104, 48, 361, 233)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
GUICtrlSetData(-1, "")
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES')
#EndRegion ### END Koda GUI section ###

While 1
    Sleep(100)
WEnd

Func WM_DROPFILES($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $lParam
    Switch $iMsg
        Case $WM_DROPFILES
            Local Const $aReturn = _WinAPI_DragQueryFileEx($wParam)
            If UBound($aReturn) Then
                Local $Dir = "", $Drive = "", $Name = "", $Extension = ""
                $Source = _PathSplit($aReturn[1], $Drive, $Dir, $Name, $Extension)
                If $Source[4] <> ".txt" And $Source[4] <> ".ini" Then
                    MsgBox(16 + 262144, "Message", "File not allowed!")
                    Return False
                EndIf
            EndIf
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_DROPFILES



Func Form1Close()
    Exit
EndFunc   ;==>Form1Close

Saludos

Link to comment
Share on other sites

I'm too slow :(
That was exactly what I would have proposed next.

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...