Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.47 MB
Время: 0.014 c
7-47030
Fedor
2003-03-19 14:53
2003.05.15
Печать


3-46671
Evgeny
2003-04-25 09:13
2003.05.15
Определение полей


14-46898
als
2003-04-28 15:52
2003.05.15
Ничего не пойму


14-47008
Style
2003-04-28 08:04
2003.05.15
DelphiChallenge: Первый блин комом :(


14-46900
Andy
2003-04-28 16:19
2003.05.15
Proxy сервер