Текущий архив: 2003.05.15;
Скачать: CL | DM;
Вниз
Использование Drag&Drop между приложениями Найти похожие ветки
← →
BVK (2003-03-13 22:22) [0]Мастера, подскажите как используя Drag&Drop передать текст (его выделенные фрагменты)из Memo или WebBrowser одного приложения в Memo моей программы. Заранее благодарен...
← →
MBo (2003-03-14 06:59) [1]Drag"n"Drop Component Suite
Anders Melander
на torry.ru
← →
Дмитрий Баранов (2003-03-14 09:54) [2]см. в яндексе или королевстве Delphi IDropTarget, IDataSource, IDataObject
У меня такой простенький классик есть:
unit TDropEdit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
AxCtrls, OleCtrls, StdCtrls, ExtCtrls, ComCtrls, COmObj, ActiveX;
type
TDragTarget = class(TInterfacedObject, IDropTarget)
private
FControl: TWinControl;
public
constructor Create(ATarget: TWinControl);
destructor Destroy; override;
function DragEnter(const dataObj: IDataObject; grfKeyState: Longint;
pt: TPoint; var dwEffect: Longint): HResult; stdcall;
function DragOver(grfKeyState: Longint; pt: TPoint;
var dwEffect: Longint): HResult; stdcall;
function DragLeave: HResult; stdcall;
function Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint;
var dwEffect: Longint): HResult; stdcall;
end;
implementation
{ TDragEdit }
constructor TDragTarget.Create(ATarget: TWinControl);
begin
Self.FControl:=ATarget;
RegisterDragDrop(FCOntrol.Handle, Self);
end;
destructor TDragTarget.Destroy;
begin
RevokeDragDrop(FControl.Handle);
inherited;
end;
function TDragTarget.DragEnter(const dataObj: IDataObject;
grfKeyState: Integer; pt: TPoint; var dwEffect: Integer): HResult;
begin
dwEffect:=DROPEFFECT_COPY;
result:=S_OK;
end;
function TDragTarget.DragLeave: HResult;
begin
result:=S_OK;
end;
function TDragTarget.DragOver(grfKeyState: Integer; pt: TPoint;
var dwEffect: Integer): HResult;
begin
dwEffect:=DROPEFFECT_COPY;
result:=S_OK;
end;
function TDragTarget.Drop(const dataObj: IDataObject; grfKeyState: Integer;
pt: TPoint; var dwEffect: Integer): HResult;
var
Buffer : PChar;
Etc : TFormatEtc;
Medium : TStgMedium;
begin
Result := S_OK;
Etc.cfFormat := CF_TEXT;
Etc.ptd := nil;
Etc.dwAspect := DVASPECT_CONTENT;
Etc.lindex := -1;
Etc.tymed := TYMED_HGLOBAL;
try
OleCheck( dataObj.GetData(Etc, Medium) );
Buffer := GlobalLock(Medium.hGlobal);
SetWindowText(FCOntrol.Handle, Buffer);
GlobalUnlock(Medium.hGlobal);
ReleaseStgMedium(Medium);
except
Result := E_UNEXPECTED;
end;
end;
initialization
OleInitialize(nil);
end.
Далее в коде:
type
TfrmNews = class
...
public
{ Public declarations }
a1, a2, a3: TDragTarget;
...
end
...
procedure TfrmNews.FormCreate(Sender: TObject);
var CoNM: CoNewsmanager;
begin
try
...
a1:=TDragTarget.Create(mmText); // TEdit, TMemo
← →
BVK (2003-03-14 22:29) [3]Большое спасибо всем, особенно Дмитрию Баранову
Страницы: 1 вся ветка
Текущий архив: 2003.05.15;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.007 c