Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для iakymych
0 / 0 / 1
Регистрация: 06.10.2009
Сообщений: 12

Перетаскивание

06.10.2009, 14:04. Показов 2259. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В гугл не посылать я там уже бил)

Как сделать так чтоб при перетаскивании любого файла на обект Edit прописивался в Edit полний адресс файла. Зарание благодарю за ответ.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.10.2009, 14:04
Ответы с готовыми решениями:

Универсальное перетаскивание
В общем есть такое перетаскивание.как можно его сделать универсальным? ну т.е. чтобы работала для любого обьекта в котором вызвана эта...

Перетаскивание формы
Всем доброго времени суток. Я кинул на форму компонент TImege на его оброботчик событий MouseUp бросил такой код. void __fastcall...

Перетаскивание на Image
Ситуация: на Image нарисован прямоугольник(с помощью Rectangle, если это важно). Задача: передвинуть его с помощью мышки. Если не...

7
 Аватар для Tree
74 / 74 / 4
Регистрация: 31.05.2009
Сообщений: 243
06.10.2009, 21:44
1. Сначала в Unit.h (В заголовке) добавь:
C++
1
#include <shellapi.h>
2. Теперь там же добавь:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TEdit *Edit1;
        void __fastcall FormCreate(TObject *Sender);
private:    // User declarations
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
        void __fastcall WmDropFiles(TWMDropFiles& Message) ;
        BEGIN_MESSAGE_MAP
        MESSAGE_HANDLER(WM_DROPFILES, TWMDropFiles, WmDropFiles)
        END_MESSAGE_MAP(TForm)
};
3. Теперь в Unit.cpp добавь код при событии FormCreate:
C++
1
2
3
4
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  DragAcceptFiles(Handle, true) ;
}
4. И на конец сам код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//---------------------------------------------------------------------------
void __fastcall TForm1::WmDropFiles(TWMDropFiles& Message) 
{
  String FName ;
  char buff[MAX_PATH] ;
  HDROP hDrop = (HDROP)Message.Drop ;
  int nFiles = DragQueryFile(hDrop, -1, NULL, NULL) ;
  for(int i=0; i<nFiles; i++)
    {
      DragQueryFile(hDrop, i, buff, sizeof(buff)) ;
      FName = buff ;
      Edit1->Text = FName ;
    }
  DragFinish(hDrop) ;
}
//---------------------------------------------------------------------------
Юзай на здоровья.
1
 Аватар для iakymych
0 / 0 / 1
Регистрация: 06.10.2009
Сообщений: 12
07.10.2009, 14:12  [ТС]
Спасибо большое за помощь но это не совсем конечный результат того что я хотел получить.
Тут получаеться так что неважно куда потянуть файл на форме и адрес прописываеться в Edit1. А мне нужно чтоб только когда курсор находиться на Edit1 только тогда прописываеться адрес.
Я тут чу-чуть добавил
C++
1
int x,y;// Две глобальные переменные
Потом создал Собитие
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::Edit1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
      if((X<=0)||(Y<=0)||(X>=356)||(Y>=16))
          {
            x=0;
            y=0;
           }
      else
           {
            x=X;
            y=Y;
            }
}
И добавил в функцию
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)
{
  String FName ;
  char buff[MAX_PATH] ;
  HDROP hDrop = (HDROP)Message.Drop ;
  int nFiles = DragQueryFile(hDrop, -1, NULL, NULL) ;
  for(int i=0; i<nFiles; i++)
    {
      DragQueryFile(hDrop, i, buff, sizeof(buff)) ;
      FName = buff ;
 
   [B]if((x!=0)&&(y!=0))[/B]
     Edit1->Text = FName;
 
    }
  DragFinish(hDrop) ;
 
}
Но когда очень бистро потянуть курсор существует погрешности что параметры не будут равны
(X=0)||(Y=0)||(X=356)||(Y=16) может есть другой способ?
0
 Аватар для Tree
74 / 74 / 4
Регистрация: 31.05.2009
Сообщений: 243
07.10.2009, 20:06
C++
1
2
3
4
5
6
7
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
DragAcceptFiles(Edit1->Handle , true) ;
}
//---------------------------------------------------------------------------
1
 Аватар для iakymych
0 / 0 / 1
Регистрация: 06.10.2009
Сообщений: 12
08.10.2009, 10:28  [ТС]
Еще один маленький вопросик а как правильно прописать ету функцию под Edit1?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//---------------------------------------------------------------------------
void __fastcall TForm1::WmDropFiles(TWMDropFiles& Message) 
{
  String FName ;
  char buff[MAX_PATH] ;
  HDROP hDrop = (HDROP)Message.Drop ;
  int nFiles = DragQueryFile(hDrop, -1, NULL, NULL) ;
  for(int i=0; i<nFiles; i++)
    {
      DragQueryFile(hDrop, i, buff, sizeof(buff)) ;
      FName = buff ;
      Edit1->Text = FName ;
    }
  DragFinish(hDrop) ;
}
//---------------------------------------------------------------------------
0
 Аватар для Tree
74 / 74 / 4
Регистрация: 31.05.2009
Сообщений: 243
09.10.2009, 21:34
Честно говоря сам, вот только попарился и че-то не вышло.
Пробовал класс новый создать, ведь в коде (код.1) нужно указать объект, на который будет приходить сообщение:
C++
1
2
3
4
   /* Код.1 */      
        BEGIN_MESSAGE_MAP
        MESSAGE_HANDLER(WM_DROPFILES, TWMDropFiles, WmDropFiles)
        END_MESSAGE_MAP(TForm) // вот! Здесь, вместо TForm - пытался прописать Edit1
То оно там не хочет ставать - говорит имя класса в котором код (этот) лежит надо пропихнуть.
Пробовал новый клас (ТEdit) создать - создает. Только вот в Unit.cpp - не знал как на ф-цию с класса послаться. Попробовал создать как в TForm1 *Form1 - сделал аналогично:
C++
1
2
3
4
5
6
7
8
9
TForm1 *Form1;
TEdit *ClassTEdit;
...
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
DragAcceptFiles(ClassTEdit->Edit1->Handle , true) ; //кста, когда пишу: ClassTEdit->, то в списке есть Edit1)
}
//---------------------------------------------------------------------------
Все компилится, все нормально, но при запуске - ругается, говорит нету такого класа "TEdit".
----------------------------
Может я что-то не так делаю?
1
 Аватар для iakymych
0 / 0 / 1
Регистрация: 06.10.2009
Сообщений: 12
13.10.2009, 19:16  [ТС]
Да у меня тоже ничего не выходит... А через Dragdrop может можноо может кто-то знает как?
0
 Аватар для iakymych
0 / 0 / 1
Регистрация: 06.10.2009
Сообщений: 12
29.11.2009, 14:37  [ТС]
Может у ковото есть решение даной проблемы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.11.2009, 14:37
Помогаю со студенческими работами здесь

перетаскивание обьектов
Ребят как можно сделать перетаскивание image в пределах формы???

Перетаскивание файлов на формочку
В общем необходимо что б когда файл перетаскиваешь на форму, то оно записывало путь в файл в листбокс, но выдает ошибку: void...

Перетаскивание файла в программу
Доброго времени суток!!! Как сделать, чтобы вместо OpenDialog достаточно было просто перетащить файл в программу и он на неё открылся-бы....

ListBox и перетаскивание элементов
Всем привет! Можете подкинуть код, для перестановки элементов ListBox а. Чтоб можно было перетягивать элементы меняя местами, а то чет...

Перетаскивание линий на TCanvas, мышью
Посоветуйте пожалуйста, как можно реализовать следующую задачу: например, мы нарисовали линию на TCanvas, затем хотим по нажатию мыши...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru