Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Drag an Drop на форму, не бросаюсься файлы на форму 
:(
    Опции темы
lamber
Дата 9.8.2010, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 20.12.2008

Репутация: нет
Всего: нет



Тема в следующем, не получается бросить файлы на форму, дулай как в мануле. (вот манул http://www.compdoc.ru/prog/builder/dragdrop/). Создаю два обработчика для формы OnDragDrop и OnDragOver. Вот код ниже
Код

void __fastcall TForm3::FormOnDragOver(TObject *Sender, TObject *Source, int X,
      int Y, TDragState State, bool &Accept)
{
Accept=true;

}
//---------------------------------------------------------------------------
void __fastcall TForm3::FormOnDragDrop(TObject *Sender, TObject *Source, int X,
      int Y)
{
TStringList* fString= (TStringList*)Source;
Label1->Caption= IntToStr(fString->Count);
}


В свойствах формы также ставлю dkMode:dmAutomatic DragKind:dkDrag

Использую Builder 2007 
Проект компилится, но  когда перетаскиваю файл на форму получаю значок запрета перетаскивания. 
PM MAIL   Вверх
0x00
  Дата 9.8.2010, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 3.4.2006

Репутация: нет
Всего: нет



при onCreate формы сделай

Код

this->DragMode = dmAutomatic;


Это сообщение отредактировал(а) 0x00 - 9.8.2010, 12:00
PM MAIL   Вверх
lamber
Дата 9.8.2010, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 20.12.2008

Репутация: нет
Всего: нет



Я это уже сделал в настройках формы, опечатался не dkMode, а DragMode в первом посте. Щас попробовал и явно указать при создании формы. все равно не помогает.
PM MAIL   Вверх
0x00
Дата 9.8.2010, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 3.4.2006

Репутация: нет
Всего: нет



Цитата(lamber @ 9.8.2010,  12:07)
Я это уже сделал в настройках формы, опечатался не dkMode, а DragMode в первом посте. Щас попробовал и явно указать при создании формы. все равно не помогает.

вот так вроде получилось добавил BEGIN_MESSAGE_MAP
и в конструкторе DragAcceptFiles

Код

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm3 : public TForm
{
__published:    // IDE-managed Components
    TLabel *Label1;
    TLabel *Label2;
    void __fastcall WmDropFiles(TWMDropFiles& Message);
private:    // User declarations
public:        // User declarations
    __fastcall TForm3(TComponent* Owner);

    BEGIN_MESSAGE_MAP
        MESSAGE_HANDLER(WM_DROPFILES,TWMDropFiles,WmDropFiles)
    END_MESSAGE_MAP(TForm);

};
//---------------------------------------------------------------------------
extern PACKAGE TForm3 *Form3;
//---------------------------------------------------------------------------
#endif





Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner):TForm(Owner)
{
    DragAcceptFiles(Handle,true);
}
//---------------------------------------------------------------------------
void __fastcall TForm3::WmDropFiles(TWMDropFiles& Message)
{
    Application->MessageBoxA(L"1", L"1", NULL);
};
//---------------------------------------------------------------------------

PM MAIL   Вверх
lamber
Дата 9.8.2010, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 20.12.2008

Репутация: нет
Всего: нет



Я видел такой метод, а не существует более лаконичного чтоб это через IDE сделать а не через Win API ?
PM MAIL   Вверх
0x00
Дата 9.8.2010, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 3.4.2006

Репутация: нет
Всего: нет



Цитата(lamber @ 9.8.2010,  11:25)
Использую Builder 2007 
Проект компилится, но  когда перетаскиваю файл на форму получаю значок запрета перетаскивания.

в конструкторе DragAcceptFiles(Handle, true); изменяет значок, а события через ИДЕ обрабатывай, тебе никто не мешает..
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0425 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.