THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 10/06/2003 at 15:36, xxxxxxxx wrote:
Hi,
well, the last posts I have done is the rest of my COFFEE drag & drop thoughts crawling through my head too ;)
Once again here is an example plugin I have posted. It should work fine in R8.1 and uses an editfield for the dragoperation. BFM_DRAGRESULT isn´t necessary and I never used it either for it wasn´t documented...but you can use SetDragDestination() to change the mouse pointer to indicate the dropping result.
var PLUGIN_ID = 1010111;
class MyDialog : GeDialog
{
public:
MyDialog();
CreateLayout();
Message(msg);
}
MyDialog::MyDialog()
{
super(PLUGIN_ID);
}
enum
{
drag_TEST=1000
}
MyDialog::CreateLayout()
{
AddEditText(drag_TEST , BFH_SCALE, 200, 0);
return TRUE;
}
var obj;
MyDialog::Message(msg)
{
if(msg->GetId() == BFM_dragRECEIVE)
{
if(CheckDropArea(drag_TEST, msg, TRUE, TRUE))
{
obj= GetdragObject(msg);
SetString(drag_TEST, obj->GetName());
**Set dragDestination(MOUSE_POINT_HAND);
** return TRUE;
}
}
return super::Message(msg);
}
class MyMenuPlugin : MenuPlugin
{
public:
MyMenuPlugin();
GetID();
GetName();
GetHelp();
Execute(doc);
RestoreLayout(secret);
}
MyMenuPlugin::MyMenuPlugin() { super(); }
MyMenuPlugin::GetID() { return PLUGIN_ID; }
MyMenuPlugin::GetName() { return "drag"; }
MyMenuPlugin::GetHelp() { return "drag"; }
var d;
MyMenuPlugin::Execute(doc)
{
d->Open(TRUE,-1,-1);
}
MyMenuPlugin::RestoreLayout(secret)
{
if (!d) d = new(MyDialog);
d->RestoreLayout(secret);
}
main()
{
d = new(MyDialog);
Register(MyMenuPlugin);
}
Maybe you want to add a few lines that will help you get the object only
if the drag is finished. Then your message function should look somehow like
this:
var obj,temp;
MyDialog::Message(msg)
{
if(msg->GetId() == BFM_dragRECEIVE)
{
if(CheckDropArea(drag_TEST, msg, TRUE, TRUE))
{
temp = GetdragObject(msg);
SetdragDestination(MOUSE_POINT_HAND);
SetString(drag_TEST, temp->GetName());
if(msg->GetData(BFM_drag_FINISHED))
{
obj= GetdragObject(msg);
SetString(drag_TEST, obj->GetName());
}
return TRUE;
}
else SetString(drag_TEST, "");
}
return super::Message(msg);
}