1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 127

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

04.10.2011, 20:16. Показов 1529. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru