[Lazarus] Generalized DragDrop

Hans-Peter Diettrich DrDiettrich1 at aol.com
Mon Jan 24 11:49:36 CET 2011


michael.vancanneyt at wisa.be schrieb:

>>> I was thinking about something non-trivial, of course.
>>
>> Please specify what "non-trivial" use you have in mind, and what 
>> results you expect to see in this very early implementation stage 
>> (proof of concetpt).
> 
> Drop a piece of text from wordpad on a TMemo. The text should be 
> inserted at
> the drop point.

You know that a TMemo is a platform specific control, with accordingly 
platform specific behaviour? If you want the described behaviour 
implemented in code, a label or panel could be used as well.

If you want a TMemo or other standard widget react as designed, then 
okay, this should be made work in the LCL.


>> You miss the really essential point: the interface between the drag 
>> manager and the drag object.
> 
> I am not missing anything, I am just saying that putting everyting in the
> base drag object is not a good decision. I'm not interested in the
> implementation details such as dragperformer and whatnot.

Me2 ;-)

I only wanted to point out that the *current* LCL implementation is not 
the best one, and that putting the current performer code into the basic 
drag object types will allow to add any kind of drag sources (e.g. 
external ones). We already have dedicated DragObject classes for local 
drag-drop and drag-dock, and inter-application dragging can be handled 
in another class.


> I'm interested in how the end-user (the application programmer) sees DnD.
> Namely: he can re-use his existing knowledge, there are simply some extra
> descendants of TDragObject that implement external file DND and
> Inter-application DND, all the rest goes through the same events/methods 
> that exist now.

The DragObjects will invoke the appropriate methods of the involved 
controls, e.g. DragOver and DragDrop for a drop source, and DockOver and 
DockDrop for a dock source.


> How this is accomplished in the background is not so relevant to me; I'm
> sure that the people involved will solve it in any way they see fit.

Yes, of course, and that's why we currently discuss how to extend 
dragging in the best (transparent) way.

DoDi





More information about the Lazarus mailing list