Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 9
1

не работает Drag and Drop

19.02.2011, 06:08. Показов 4957. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Мне для программы нужно использовать Drag and Drop я нашёл Улучшение текстового редактора, и сделал всё так как описано, но почему то не работает =( я не понимаю почему.
кто может сталкивался с такой проблемой помогите пожалуйста.
ЗЫ я гдето прочитал,что при добавлении значёк должен быть - лист со стрелочкой,а у меня лист с плюсиком.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2011, 06:08
Ответы с готовыми решениями:

Не работает drag & drop (файл Excel)
Задача: имеется файл Excel, пользователь выделяет произвольный фрагмент листа с данными и кидает на...

Не работает Drag&Drop для ListBox
Работаю в C++Builder 2010. Есть форма с двумя листбоксами, в каждом по-умолчанию содержится по пять...

Drag and drop!
Парни может у кого есть пример или что кодик какой как реализовать drag and drop с заменой. Т.е....

Drag Drop Dock
есть ли толковая литература или интересные статьи по этому методу мне нужно просто реализовать...

10
LK
Заблокирован
19.02.2011, 10:26 2
Свой код покажите . А с "плюсиком" - это правильнее .
0
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 9
19.02.2011, 12:30  [ТС] 3
Отрывки из кода вот
Unit1.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TForm1::WmDropFiles(TWMDropFiles& Message)
{
   HDROP drop_handle = (HDROP)Message.Drop;
   char fName[MAXPATH];
   int filenum = DragQueryFile(drop_handle, -1, NULL, NULL);
   for(int i = 0; i < filenum; i++){
      DragQueryFile(drop_handle, i, fName, MAXPATH);
      ReadFile(fName);
     }
   DragFinish(drop_handle);
}
// Ïîñëå ïåðåòàñêèâàíèÿ, âû÷èñëÿåì ðàñøèðåíèÿ è îòêðûâàåì ôàéë â RichEdit-----
void __fastcall TForm1::ReadFile(AnsiString FileName)
{
   AnsiString str = ExtractFileExt(FileName);
   if((str == ".txt")||(str == ".rtf"))
      RichEdit1->Lines->LoadFromFile(FileName);
}
Unit1.h:
C++
1
2
3
4
5
6
7
8
9
10
11
        TRichEdit *RichEdit1;
        void __fastcall FormCreate(TObject *Sender);
private:
void __fastcall WmDropFiles(TWMDropFiles& Message);
void __fastcall ReadFile(AnsiString FileName);  // User declarations
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
BEGIN_MESSAGE_MAP
   MESSAGE_HANDLER(WM_DROPFILES, TWMDropFiles, WmDropFiles)
END_MESSAGE_MAP(TForm);
}
Добавлено через 1 минуту
вот ещё
C++
1
2
3
4
5
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
DragAcceptFiles(Handle, true);        
}
она запускается, но не реагирует

Добавлено через 1 минуту
текстовай документ в ричэдит не загружается, да и методы не запускаются, я брек пойнты ставил, смотрел
0
68 / 68 / 9
Регистрация: 10.02.2011
Сообщений: 131
19.02.2011, 12:33 4
C++
1
2
3
4
void __fastcall TForm1::FormCreate(TObject *Sender)
{
DragAcceptFiles(Handle, true);        
}
Ты же не указал Хендл объекта, для которого разрешить перетаскивание файлов!

Вот например Для формы:
C++
1
DragAcceptFiles(Form1->Handle,true);
Или для RichEdit:
C++
1
DragAcceptFiles(RichEdit1->Handle,true);
0
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 9
19.02.2011, 12:38  [ТС] 5
неа не помогло разницы не видно=(
0
68 / 68 / 9
Регистрация: 10.02.2011
Сообщений: 131
19.02.2011, 12:42 6
Не знаю, что ты накрутил...
Я повторил всё, как описано по твоей же ссылке, всё работает.
Ты хоть txt файлы кидаешь?
0
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 9
19.02.2011, 12:45  [ТС] 7
да, конечно,txt,я вот думаю может это быть изза несовместимости 6ого билдера и win 7ки или нет ...
0
68 / 68 / 9
Регистрация: 10.02.2011
Сообщений: 131
19.02.2011, 12:50 8
Ты же не указал Хендл объекта, для которого разрешить перетаскивание файлов!
Извини, недоглядел там все нормально, там Хендл формы указан.)

У меня ВСВ6 и Вин ХП.
Код точно такой как по ссылке
Вот это у меня работает:
Вложения
Тип файла: rar Project1.rar (8.3 Кб, 116 просмотров)
0
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 9
19.02.2011, 12:56  [ТС] 9
Ты не поверишь, у меня тоже работает... блин пож кинь исходник или скажи мож ты какието галочки ставил ну или я чтото упустил =(
хотя перечитал уже вдоль и поперёк
запускается, но не считывает файл и все
0
68 / 68 / 9
Регистрация: 10.02.2011
Сообщений: 131
19.02.2011, 13:06 10
Запустил ВСВ6
File->New->Application
настройки не менял, галочки нигде не ставил
Вкинул код и всё.
Вот тут полный код (на всякий случай):
Unit1.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <dir.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
// Ïåðåòàñêèâàåì ôàéëû. Ñîçäà¸ì ñîáûòèÿ--------------------------------------
void __fastcall TForm1::WmDropFiles(TWMDropFiles& Message)
{
   HDROP drop_handle = (HDROP)Message.Drop;
   char fName[MAXPATH];
   int filenum = DragQueryFile(drop_handle, -1, NULL, NULL);
   for(int i = 0; i < filenum; i++){
      DragQueryFile(drop_handle, i, fName, MAXPATH);
      ReadFile(fName);
     }
   DragFinish(drop_handle);
}
// Ïîñëå ïåðåòàñêèâàíèÿ, âû÷èñëÿåì ðàñøèðåíèÿ è îòêðûâàåì ôàéë â RichEdit-----
void __fastcall TForm1::ReadFile(AnsiString FileName)
{
   AnsiString str = ExtractFileExt(FileName);
   if((str == ".txt")||(str == ".rtf"))
      RichEdit1->Lines->LoadFromFile(FileName);
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
DragAcceptFiles(Handle, true);
}
//---------------------------------------------------------------------------
Unit1.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <Menus.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TRichEdit *RichEdit1;
        void __fastcall FormCreate(TObject *Sender);
private:    // User declarations
        void __fastcall WmDropFiles(TWMDropFiles& Message);
        void __fastcall ReadFile(AnsiString FileName);
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
BEGIN_MESSAGE_MAP
   MESSAGE_HANDLER(WM_DROPFILES, TWMDropFiles, WmDropFiles)
END_MESSAGE_MAP(TForm);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
0
UeArtemis
18 / 18 / 3
Регистрация: 23.09.2011
Сообщений: 205
19.07.2013, 14:00 11
Делаю тем же методом.
Смущает, что при перетаскивании файла на мою программу пропадает иконка под курсором.
Как можно оставить иконку при перетаскивании файла над моей программой?
0
19.07.2013, 14:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.07.2013, 14:00
Помогаю со студенческими работами здесь

Drag-and-Drop по сетке
Подскажите, как перемещать компоненты по форме с привязкой к сетке?

Drag&Drop
Как перенести из TreeView1 текст в Edit1 !?!?!?

Drag Drop файлов
Делаю вот так: : class TForm1 : public TForm { private: void __fastcall...

Drag&Drop
Здравствуйте:) Уже месяц работаю над текстовым редактором. Встал вопрос: например на рабочем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru