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

Дропы на два компонента Memo

04.10.2011, 20:16. Показов 1509. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
программа
на форме два компонента: Memo1 и Memo2
Нужно с помощь драг н дроп перетащить файл на в Memo1 (например) и чтоб после этого в Memo1 показывало имя файла а в Memo2 путь файла!
Я зделал программу только на половину и то с ошибкой!!
Memo1->Name=filename; э этим кодом компилируеться но когда дропаешь файл то вылетает ошибка!и это только название файла,а путь я не делал вообще
и не знаю как его прикрутить!
Почему я написал Memo1->Name=filename; вместо Memo1->Lines=filename;
Тогда ругаеться что не может конвертировать AnsiString в TString
а если написать string filename; то ругаеться на тип данных какой бы не ставил, незнаю что уже и ставить!!!массив?))
помогите доделать мою программу на моем же примере
а то уже совсем в тупике!!
если можно то с коментом!!!


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
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TMemo *Memo1;
    TMemo *Memo2;
    void __fastcall Memo1Change(TObject *Sender);
    void __fastcall Memo2Change(TObject *Sender);
private:    // User declarations
void virtual __fastcall WMDropFiles (TWMDropFiles &message);
public:     // User declarations
BEGIN_MESSAGE_MAP    
MESSAGE_HANDLER (WM_DROPFILES,TWMDropFiles,WMDropFiles)  
END_MESSAGE_MAP (TForm);    
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
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
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{        DragAcceptFiles (Form1->Handle, true); // разрешение на дроп
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Memo1Change(TObject *Sender)
{
     DragAcceptFiles (Form1->Handle, true); // разрешение на дроп
}
//---------------------------------------------------------------------------
  void __fastcall TForm1::WMDropFiles (TWMDropFiles &message)
  {
       int filecount, length, i;
       filecount = DragQueryFile ((HDROP) message.Drop, 0xFFFFFFFF/*-1*/, NULL, 0); //получаем колич файлов. Подробнее
 
       AnsiString filename; // здесь плачит на Ansi
       for (i=0; i<filecount; ++i)
       {
           filename.SetLength(MAX_PATH);
           length = DragQueryFile ((HDROP) message.Drop, i, filename.c_str(), filename.Length());
           filename.SetLength(length);
Memo
 
       }
       DragFinish ((HDROP) message.Drop);
       Memo1->Name=filename;       // вот здесь так хотел  Memo1->Lines=filename;
  }
void __fastcall TForm1::Memo2Change(TObject *Sender)
{
DragAcceptFiles (Form1->Handle, true); // разрешение на дроп
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.10.2011, 20:16
Ответы с готовыми решениями:

Чтение числа из компонента Memo
Доброго времени суток, уважаемые форумчане! Это программа-эмулятор, моделирующая работу датчика (процесс пересылки данных) температуры....

Печать содержимого компонента Memo
Здравствуйте! Скажите, а возможно ли напечатать содержимое Memo? Метода Print я у него не нашёл.

Определение используемого компонента Edit, Memo
Доброго времени суток! Мне требуется помощь: на форме имеется 114 компонентов dbEdit и dbmemo, так же установлен таймер, который сбрасывает...

3
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
04.10.2011, 22:42
доделывать это все равно, что докуривать, допивать и до...
читай сюда Буксировка в Borland C++ Builder
0
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
05.10.2011, 11:07
Лучший ответ Сообщение было отмечено как решение

Решение

nuSan, обработчики Memo OnChange убери - они не нужны. Всё намного проще
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
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{        
    DragAcceptFiles (Form1->Handle, true);
}
 
//---------------------------------------------------------------------------
void __fastcall TForm1::WMDropFiles (TWMDropFiles &message)  {
    HDROP drop = (HDROP)message.Drop;
    // получаешь количество файлов
    const int iFiles = DragQueryFile(drop, -1, NULL, NULL);
    for (int i = 0; i < iFiles; i++) {
        char path[MAX_PATH];
        // получаешь полный путь к файлу
        DragQueryFile(drop, i, path, sizeof(path));
        const AnsiString sFullFileName(path);
        // используя стандартные функции VCL, получаем отдельно путь и имя
        const AnsiString sPath = ExtractFilePath(sFullFileName);
        const AnsiString sName = ExtractFileName(sFullFileName);
        // дальше используем их в зависимости от назначения
        Memo1->Lines->Add(sPath);
        Memo2->Lines->Add(sName);
    }
    DragFinish(drop);
}
3
1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 127
07.10.2011, 13:27  [ТС]
Maluda,классный код, легче чем у меня))) все работает, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.10.2011, 13:27
Помогаю со студенческими работами здесь

Динамические массивы. Использование компонента Memo
Здрасте. Помогите написать программу) Дан массив строк. Вывести на экран строки, которые встречаются только один раз. На форме:...

Сравнение строк в поле компонента Memo
Допустим имеются два компонента поля: Memo1 и Memo2. Значения отображающиеся в поле Memo1 являются эталонными, которые сравниваются с...

Перенести содержимое компонента Memo в матрицу
помогите решить задачку В компонент memo ввести произвольный текст(не более 80 слов).По двойному щелчку мыши все эти слова переписать в...

Метод Save для компонента memo c++ builder
Здравствуйте, уважаемые программисты! Сам только-только начал учиться программировать. Пишу текстовый редактор в с++ builder. Нужно...

Компонента Memo- помогите кто может чайнику!
В Мемо прописывается список, допустим, каких-либо вещей, необходимо чтобы ширина поля Мемо сооветсвовала максимальной длине названия вещи....


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru