Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2014, 00:15   #1
andrei1994
 
Регистрация: 03.10.2014
Сообщений: 4
По умолчанию Drag&Drop С++ Builder

Здраствуйте. Помогите сделать лабораторную. Используя Drag&Drop, сделать возможным перетягивание выделенного текста между компонентами TMemo, TListBox и TEdit.Не получается сделать для перетягивания выделенного текста
andrei1994 вне форума Ответить с цитированием
Старый 03.10.2014, 08:19   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Где наработки?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 03.10.2014, 10:57   #3
andrei1994
 
Регистрация: 03.10.2014
Сообщений: 4
По умолчанию

void __fastcall TForm1::MyMemoDragOver(TObject *Sender, TObject *Source, int X, int Y,
TDragState State, bool &Accept)
{
Accept = Source->ClassNameIs("TMemo");
}

void __fastcall TForm1::MyMemoDragDrop(TObject *Sender, TObject *Source,
int X, int Y)

{
TMemo *Dst = dynamic_cast<TMemo*>(Sender);
TMemo *Src = dynamic_cast<TMemo*>(Source);
int i = LOWORD(Dst->Perform(EM_CHARFROMPOS, 0, MAKELPARAM(X, Y)));

if (Src == Dst && i >= Src->LastSelStart && i <= Src->LastSelStart + Src->LastSelLength - 1)
return;

Dst->Text = Dst->Text.SubString(1, i) + Src->SelText +
Dst->Text.SubString(i + 1, Dst->Text.Length() - i);
String s = Src->Text;
s = s.Delete(Src->LastSelStart + 1, Src->LastSelLength);
Src->Text = s;
}


// Это добавляем прямо перед описанием класса формы в h-файле проекта
namespace TMemo_DragDrop
{
class TMemo : public Stdctrls::TMemo
{
typedef Stdctrls::TMemo Inherited;

int FLastSelStart;
int FLastSelLength;

__published:
__property int LastSelStart = {read = FLastSelStart, write = FLastSelStart};
__property int LastSelLength = {read = FLastSelLength, write = FLastSelLength};

private:
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_LBUTTONDOWN, TWMLButtonDown, WMLBUTTONDOWN_Proc)
END_MESSAGE_MAP(Inherited)

void __fastcall WMLBUTTONDOWN_Proc(TWMLButtonDown &message)
{
if (SelLength > 0)
{
int i = LOWORD(Perform(EM_CHARFROMPOS, 0,
MAKELPARAM(message.XPos, message.YPos)));
LastSelStart = SelStart;
LastSelLength = SelLength;
if (i >= SelStart && i <= SelStart + SelLength - 1) BeginDrag(true);
else Inherited::Dispatch(&message);
}
else Inherited::Dispatch(&message);
}

public:
__fastcall virtual TMemo(System::Classes::TComponent* AOwner)
: Stdctrls::TMemo(AOwner)
{
}
};
}
#define TMemo TMemo_DragDrop::TMemo

// Дальше твоя форма, без изменений ...
class TForm1 : public TForm
// ...
andrei1994 вне форума Ответить с цитированием
Старый 03.10.2014, 10:58   #4
andrei1994
 
Регистрация: 03.10.2014
Сообщений: 4
По умолчанию

это между Memo, а мне нужно между Memo, ListBox, Edit
andrei1994 вне форума Ответить с цитированием
Старый 03.10.2014, 13:34   #5
andrei1994
 
Регистрация: 03.10.2014
Сообщений: 4
По умолчанию

подскажите как с ListBox передать текст в Edit и очистить в листбоксе что передал в едит?
andrei1994 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WinForms PictureBox VC++ Drag&Drop _Alerter_ Windows Forms 4 27.05.2011 10:38
Drag&Drop Guzal Qt и кроссплатформенное программирование С/С++ 0 12.04.2011 01:19
drag&drop БАО Общие вопросы C/C++ 2 06.05.2010 12:17
Нужна помощь (Drag-And-Drop & Drag-Abd-Dock)) Arkuz Общие вопросы Delphi 1 18.04.2009 00:15
Drag&Drop shtuceron Общие вопросы Delphi 3 09.04.2008 19:04