Вверх ↑
Пакеты 
HiAsm4
Windows 
Компоненты 
Koнтpoлы - DropFile

DropFile
Краткое описание
   Компонент применяется в случае необходимости принятия сброшенных файлов на форму или другой компонент контейнер, а также для организации перетаскивания списка объектов файловой системы в другие программы.
Параметры
  • DragDefaultCursor - Использовать при перетаскивании курсор по-умолчанию
  • Copy - Разрешить режим копирования
  • Move - Разрешить режим перемещения
  • Link - Разрешить режим создания ссылки
  • Методы
  • doDrag - Перетаскивание объектов списка
  • doAccept - Включает/выключает приём файлов компонентом
  • События
  • onDropFile - Событие происходит столько раз, сколько файлов было брошено на форму и выдает в потоке имя очередного файла
  • onEndDrop - Событие происходит всякий раз после окончания перебора файлов
  • onStartDrop - Событие происходит всякий раз при бросании файлов на форму
  • onResult - Происходит после завершения перетаскивания и содержит в потоке результат операции
  • onDrop - Происходит после сброса и содержит в потоке конечный тип операции
  • onFeedBack - Происходит постоянно при перетаскивании и содержит в потоке текущий тип операции
  • Данные
  • List - Список объектов для выполнения операции перетаскивания
  • Примеры
    Пример использования компонента DropFile
    
    #sha
    Add(MainForm,2953706,21,70)
    {
    Caption="Пример использования DropFile"
    }
    Add(DropFile,10287908,105,70)
    {
    link(onDropFile,4519774:doText,[])
    link(onEndDrop,11038621:doMessage,[(149,83)(149,125)])
    }
    Add(Label,4519774,161,70)
    {
    Left=5
    Top=110
    Width=377
    Height=72
    Caption="Перетащите мышкой любой файл на форму"
    AutoSize=1
    Alignment=2
    }
    Add(Message,11038621,161,119)
    {
    Caption="Файл брошен на форму"
    link(Message,4519774:Caption,[])
    }

    Пример использования компонента DropFile при перетаскивании
    
    #sha
    Add(DropFile,6907332,441,42)
    {
    Point(onStartDrop)
    link(onDropFile,2561894:doAdd,[])
    link(List,2561894:Array,[(447,30)(489,30)(489,99)(524,99)])
    link(onStartDrop,2561894:doClear,[(492,62)(492,55)])
    }
    Add(ListBox,2561894,504,42)
    {
    Left=10
    Top=35
    Width=400
    Height=225
    Point(onMouseDown)
    Point(onMouseMove)
    link(onMouseDown,8870329:doMouseDown,[])
    link(onMouseMove,8870329:doMouseMove,[])
    }
    Add(Label,11902681,385,42)
    {
    Left=10
    Top=10
    Width=400
    Caption="Make drop items to Form then select them and to do Drag & Drop to other place"
    AutoSize=1
    }
    Add(MultiElementEx,8870329,567,56)
    {
    @Hint=#11:Drag begin?|
    link(onDrag,6907332:doDrag,[(610,62)(610,109)(429,109)(429,48)])
    }
    BEGIN_SDK
    Add(EditMultiEx,15504153,14,21)
    {
    WorkCount=#11:doMouseDown|11:doMouseMove|
    EventCount=#6:onDrag|0:|
    Width=713
    Height=221
    link(doMouseDown,6357608:doEvent,[(35,27)(35,69)])
    link(doMouseMove,7290753:doEvent,[(21,34)(21,146)])
    }
    Add(Counter,7458136,483,147)
    {
    link(onNext,15558637:doEvent,[])
    }
    Add(IndexToChanel,7290753,245,140)
    {
    link(onEvent1,434983:doEvent,[])
    }
    Add(Hub,6236157,448,182)
    {
    link(onEvent1,7458136:doReset,[(472,188)(472,167)])
    link(onEvent2,11267719:doEnable,[(583,195)(583,174)])
    }
    Add(IndexToChanel,15558637,539,147)
    {
    Count=3
    Data=Integer(1)
    link(onEvent3,11267719:doData,[])
    }
    Add(Hub,13389177,651,161)
    {
    link(onEvent1,11267719:doDisable,[(678,167)(678,202)(597,202)(597,181)])
    link(onEvent2,15504153:onDrag,[(697,174)(697,27)])
    }
    Add(MultiElementEx,6893652,245,70)
    {
    @Hint=#20:Key Event Monitoring|
    link(onLeftMouseUp,9008891:doEvent1,[])
    }
    BEGIN_SDK
    Add(EditMultiEx,3652965,21,21)
    {
    WorkCount=#15:doKeyMonitoring|16:doStopMonitoring|
    EventCount=#13:onLeftMouseUp|0:|
    Height=137
    link(doKeyMonitoring,9176872:doEvent1,[(35,27)(35,62)])
    link(doStopMonitoring,1975648:doTimer,[(28,34)(28,111)])
    }
    Add(Timer,9104781,96,98)
    {
    Interval=100
    Enable=1
    Point(onStop)
    link(onTimer,13969439:doFor,[])
    link(onStop,12743003:##clear,[(144,111)(144,76)])
    }
    Add(IndexToChanel,15216937,264,56)
    {
    Point(Data)
    link(onEvent1,3652965:onLeftMouseUp,[(309,62)(309,27)])
    link(Data,13969439:Position,[(270,44)(253,44)(253,142)(165,142)])
    }
    Add(MultiElementEx,12743003,215,56)
    {
    Mode=1
    link(onChange,15216937:doEvent,[])
    }
    BEGIN_SDK
    Add(EditMultiEx,15933685,3,3)
    {
    WorkCount=#5:##add|8:##select|7:##clear|
    EventCount=#8:onChange|
    Width=237
    Height=95
    Point(##add)
    Point(##select)
    Point(##clear)
    link(##select,9613345:doReadKey,[(30,16)(30,55)])
    }
    Add(Keyboard,9613345,77,49)
    {
    link(onReadKey,11411939:doData,[])
    }
    Add(ChangeMon,11411939,140,49)
    {
    Data=Integer(0)
    link(onData,15933685:onChange,[(209,55)(209,9)])
    }
    END_SDK
    Add(For,13969439,159,98)
    {
    Start=1
    End=2
    link(onEvent,12743003:##select,[(203,104)(203,69)])
    }
    Add(For,4004499,96,56)
    {
    Start=1
    End=2
    link(onEvent,12743003:##add,[])
    }
    Add(Hub,9176872,63,56)
    {
    link(onEvent1,4004499:doFor,[])
    link(onEvent2,9104781:doTimer,[(87,69)(87,104)])
    }
    Add(Timer,1975648,49,105)
    {
    Interval=0
    Enable=1
    AutoStop=1
    link(onTimer,9104781:doStop,[])
    }
    END_SDK
    Add(Memory,371077,350,63)
    {
    Default=Integer(0)
    }
    Add(Hub,5266932,133,63)
    {
    link(onEvent1,4248660:doData,[])
    link(onEvent2,6893652:doKeyMonitoring,[])
    }
    Add(DoData,4248660,182,63)
    {
    Data=Integer(1)
    link(onEventData,371077:doValue,[])
    }
    Add(Hub,9008891,287,70)
    {
    OutCount=3
    link(onEvent1,371077:doClear,[])
    link(onEvent2,6893652:doStopMonitoring,[(312,83)(312,107)(233,107)(233,83)])
    link(onEvent3,6236157:doEvent1,[(337,90)(337,188)])
    }
    Add(IndexToChanel,434983,350,140)
    {
    Point(Index)
    link(onEvent2,9247594:doData,[])
    link(Index,371077:Value,[])
    }
    Add(MultiElementEx,9247594,413,147)
    {
    @Hint=#19:Mouse Move Detector|
    link(onData,7458136:doNext,[])
    }
    BEGIN_SDK
    Add(EditMultiEx,6300706,21,21)
    {
    WorkCount=#6:doData|
    EventCount=#6:onData|
    Width=223
    Height=165
    link(doData,720799:doData,[(39,27)(39,139)])
    }
    Add(Math,1086274,98,91)
    {
    OpType=2
    Op2=65536
    ResultType=0
    link(onResult,2538627:doOperation,[])
    link(Op1,11987903:MouseX,[(104,83)(146,83)])
    }
    Add(MouseEvent,11987903,140,42)
    {
    }
    Add(Math,2538627,140,91)
    {
    ResultType=0
    link(onResult,6918143:doData,[(184,97)(184,80)(47,80)(47,97)])
    link(Op2,11987903:MouseY,[])
    }
    Add(EventFromData,6918143,56,91)
    {
    link(onEvent,1086274:doOperation,[])
    }
    Add(ChangeMon,720799,56,133)
    {
    link(onData,6300706:onData,[(204,139)(204,27)])
    link(Data,6918143:GetData,[])
    }
    END_SDK
    Add(MultiElementEx,11267719,609,161)
    {
    @Hint=#4:Gate|
    link(onTrue,13389177:doEvent1,[])
    }
    BEGIN_SDK
    Add(EditMultiEx,15147993,3,3)
    {
    WorkCount=#6:doData|8:doEnable|9:doDisable|
    EventCount=#6:onTrue|
    Width=181
    Height=116
    link(doData,16016200:doEvent,[(49,9)(49,76)])
    link(doEnable,2676259:doOn,[(39,16)(39,41)])
    link(doDisable,2676259:doReset,[(29,23)(29,34)])
    }
    Add(IndexToChanel,16016200,70,70)
    {
    Point(Index)
    link(onEvent2,15147993:onTrue,[(143,83)(143,9)])
    link(Index,2676259:State,[])
    }
    Add(Switch,2676259,70,21)
    {
    DataOn=Integer(1)
    DataOff=Integer(0)
    Point(State)
    Point(doOn)
    }
    END_SDK
    Add(IndexToChanel,6357608,70,63)
    {
    Point(Data)
    link(onEvent1,5266932:doEvent1,[])
    }
    END_SDK

    Пример приема файлов разными элементами (MainForm, ChildPanel)
    
    #sha
    Add(MainForm,4119116,91,112)
    {
    Caption="Пример использования DropFile"
    }
    Add(ChildPanel,544253,301,112)
    {
    }
    BEGIN_SDK
    Add(EditMulti,12459144,21,21)
    {
    }
    Add(Panel,3400877,35,105)
    {
    Left=10
    Top=125
    Width=375
    Height=140
    }
    Add(Memo,12595055,168,105)
    {
    Left=10
    Top=10
    Width=355
    Height=120
    }
    Add(DropFile,935197,98,105)
    {
    link(onDropFile,12595055:doAdd,[])
    }
    END_SDK
    Add(Memo,12184007,231,112)
    {
    Left=15
    Top=10
    Width=365
    Height=100
    }
    Add(DropFile,15813227,161,112)
    {
    link(onDropFile,12184007:doAdd,[])
    }
    Замечания
       Если элемент разместить на форме, то сбрасывать файлы можно в любом её месте(о чем свидетельствует изменяющийся значек курсора), в то время как установка компонента внутрь элемента контейнера приведет к тому, что файлы будут успешно приняты программой только при сбросе их в область этого контейнера(под контейнером понимается Panel, GroupBox и прочие).

       Поскольку операция приема файлов является внутренним событием компонента, то для выполнения некоторых начальных действий(если таковые необходимы) можно использовать скрытое по-умолчанию событие onStartDrop.

       Очевидно, что компонент не может использоваться в проектах без формы или не в визуальных контейнерах.

    Обновление элемента: [svn]DropFile.pas[/svn]
    BB-code статьи для вставки
    Всего комментариев: 0
    (комментарии к статье еще не добавлены)
    Комментарий
    ...