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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2012, 19:48   #1
digios
Новичок
Джуниор
 
Регистрация: 22.11.2011
Сообщений: 2
По умолчанию drag and drop текста!

проблема такая, использую такой код по перетаскивания текста на форму
PHP код:
unit Unit1;

 interface

 
uses
   Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
   
DialogsComCtrlsActiveXShlObjComObjStdCtrlsOleCtnrsUnit3,
  
OleCtrlsSHDocVw;

 
type
   TForm1 
= class(TFormIDropTarget)
    
Memo1TMemo;
    
WebBrowser1TWebBrowser;
    
Button1TButton;
     
procedure FormCreate(SenderTObject);
     
procedure FormDestroy(SenderTObject);
    
procedure Button1Click(SenderTObject);
   private
     { Private 
declarations }
     
// IDropTarget 
    
function DragEnter(const dataObjIDataObject;
                        
grfKeyStateLongint;
                        
ptTPoint;
                        var 
dwEffectLongint): HResultstdcall;
    function 
DragOver(grfKeyStateLongint;
                       
ptTPoint;
                       var 
dwEffectLongint): HResultstdcall;
    function 
DragLeaveHResultstdcall;
    function 
Drop(const dataObjIDataObject;
                   
grfKeyStateLongintptTPoint;
                   var 
dwEffectLongint): HResultstdcall;
    
// IUnknown
   // Ignore referance counting
    
function _AddRefIntegerstdcall;
    function 
_ReleaseIntegerstdcall;

   public
     { Public 
declarations }
   
end;


 var
   
Form1TForm1;

 
implementation

 
{$R *.dfm}

 
uses
   ShellAPI
;

procedure TForm1.FormCreate(SenderTObject);
 
begin
   OleInitialize
(nil);
   {
Allow window to accept drop events}
   
OleCheck(RegisterDragDrop(HandleSelf));
   { 
Execute Wordpad for testing }
  
// ShellExecute(Handle, 'open', 'wordpad', 'd:\games\Test.doc', nil, SW_SHOW);
 
end;

procedure TForm1.FormDestroy(SenderTObject);
 
begin
   
{Finished accepting drops}
   
RevokeDragDrop(Handle);
   
OleUninitialize;
 
end;

 function 
TForm1.DragEnter(const dataObjIDataObject;
   
grfKeyStateLongint;
   
ptTPoint;
   var 
dwEffectLongint): HResult;
 
begin
   dwEffect 
:= DROPEFFECT_COPY;
   
Result  := S_OK;
 
end;

 function 
TForm1.DragOver(grfKeyStateLongint;
   
ptTPoint;
   var 
dwEffectLongint): HResult;
 
begin
   dwEffect 
:= DROPEFFECT_COPY;
   
Result := S_OK;
 
end;

 function 
TForm1.DragLeaveHResult;
 
begin
   Result 
:= S_OK;
 
end;

 function 
TForm1._AddRefInteger;
 
begin
    Result 
:= 1;
 
end;

 function 
TForm1._ReleaseInteger;
 
begin
    Result 
:= 1;
 
end;

 function 
TForm1.Drop(const dataObjIDataObject;
   
grfKeyStateLongint;
   
ptTPoint;
   var 
dwEffectLongint): HResult;
 var
   
aFmtEtcTFORMATETC;
   
aStgMedTSTGMEDIUM;
   
pDataPChar;
 
begin
   
{Make certain the data rendering is available}
   if (
dataObj nilthen
     raise Exception
.Create('IDataObject-Pointer is not valid!');
   
with aFmtEtc do
   
begin
     cfFormat 
:= CF_TEXT;
     
ptd := nil;
     
dwAspect := DVASPECT_CONTENT;
     
lindex := -1;
     
tymed := TYMED_HGLOBAL;
   
end;
   {
Get the data}
   
OleCheck(dataObj.GetData(aFmtEtcaStgMed));
   try
     {
Lock the global memory handle to get a pointer to the data}
     
pData := GlobalLock(aStgMed.hGlobal);
     { 
Replace Text }
     
Memo1.Text := UTF8ToAnsi(pData);
   finally
     {
Finished with the pointer}
     
GlobalUnlock(aStgMed.hGlobal);
     {
Free the memory}
     
ReleaseStgMedium(aStgMed);
   
end;
   
Result := S_OK;
 
end
в новом приложении работает на ура, а вот при добавлении в другой проект выдает: Incompatible types: 'IDropTarget' and 'TForm1'
в этой строчке: OleCheck(RegisterDragDrop(Handle, Self));

что может быть не так? любые идеи
digios вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
drag and drop c# katbka Помощь студентам 1 05.03.2012 05:09
Drag And Drop Adyvan C# (си шарп) 0 04.03.2012 06:27
Drag and Drop nusik Общие вопросы C/C++ 2 09.07.2009 11:09
Нужна помощь (Drag-And-Drop & Drag-Abd-Dock)) Arkuz Общие вопросы Delphi 1 18.04.2009 00:15
Drag and Drop Xardas Общие вопросы Delphi 8 20.01.2008 23:09