dragdrop使用的问题(200分)

  • 主题发起人 主题发起人 whitelion
  • 开始时间 开始时间
W

whitelion

Unregistered / Unconfirmed
GUEST, unregistred user!
1、我使用这个控件从ie里向程序拖数据时,只能拖动无格式文本,其他的如颜色、字体都没有了,
这个问题能解决吗?

2、如果我在ie里选择了一段文字,其中包括一个或多个超链接,能提出来吗?
 
要看你的控件是怎樣寫的。
讓Word就能提出ie中的所有超鏈接,看你的程序有沒有這個功能 。
 
问题就在于我不会写,向高手请教
 
可以拖出html的内容,然后自己再分析,可以得到链接的
 
to zjfeng
如何得到内容啊
 
function TTMyDrop.Drop(const dataObj: IDataObject; grfKeyState: Integer;
pt: TPoint; var dwEffect: Integer): HResult;
begin
f.cfFormat := CF_HTML;
dataObj.GetData(f, medium);
HTMLSOURCE:=Pchar(GlobalLock(medium.hGlobal));
GlobalUnLock(medium.hglobal);
end;


这里 CF_HTML := RegisterClipboardFormat('HTML Format');
得到htmlsource是utf-8然后再转为ansistring,delphi有函数
 
to zjfeng,
谢谢
我先试试,不过有一些东西我看不懂
能给我一个较为完整的例子吗
 
这个例子我手头没有,不过你自己先写写看,不行了再问。
 
先谢谢了
 
to zjfeng
我是用bcb做的
void __fastcall Tdragwinf::dt3Drop(TObject *Sender, TShiftState ShiftState,
TPoint &Point, int &Effect)
{
//计算选择文字中的链接
tagFORMATETC * f=new tagFORMATETC;
tagSTGMEDIUM * medium=new tagSTGMEDIUM;
//f->cfFormat=RegisterClipboardFormat("HTML Format");
f->cfFormat=CF_TEXT;
((TDropTextTarget *)Sender)->DataObject->GetData(f,medium);
AnsiString ss=(char*)GlobalLock(medium->hGlobal);//运行到这里时medium->hGlobal为空
GlobalUnlock(medium->hGlobal);
}
 
取不到值
 
你首先先得保证里面有没有html的内容,用
var
enumFormatEtc: IEnumFormatEtc;

enumFormatEtc.Next这个函数来判断一下有没有html format的内容
 
to zjfeng,
f->cfFormat=CF_TEXT;
上一行我已经把格式设为文本格式了,可还是取不到值
medium->hGlobal为空
 
后退
顶部