delphi 读取剪粘板内的html格式数据
根据剪贴板的原理,在获取剪贴板内容之前,必须指定要获取内容的格式。由于剪贴板中的数据可能存在多种格式,所以有必要对剪贴板的格式类型先做一些了解。W写下了以下的测试代码:
procedure TForm1.Button3Click(Sender: TObject);
var
i: integer;
Buffer: PChar;
s: string;
begin
Memo1.Lines.Clear; //增加了一个Memo控件来跟踪数据
with TClipboard.Create do //利用TClipboard追踪剪贴板
begin
GetMem(Buffer, 20);
for i:=0 to FormatCount - 1 do
begin
GetClipboardFormatName(Formats[i], Buffer, 20);
s := StrPas(Buffer);
Memo1.Lines.Add(Format('%s:%d', [s, Formats[i]]));
end;
FreeMem(Buffer);
Free;
end;
end;
点击Button3,在Memo1文本框中显示出以下的内容:
DataObject:49161
Object Descriptor:49166
Rich Text Format:49312
HTML Format:49394
HTML Format:14
HTML Format:3
PNG:49672
GIF:49536
JFIF:49538
……
很明显,第4行的“HTML Format:49394”应该就是HTML编辑器真正需要的格式。由于“HTML Format”并不是剪贴板默认支持的格式,所以W需要使用API函数RegisterClipboardFormat先进行注册。
procedure TForm1.Button4Click(Sender: TObject);
var
s: string;
hMem: DWORD;
CF_HTML: DWORD; // 声明一个CF_HTML剪贴板格式
txtPtr: PChar;
begin
CF_HTML := RegisterClipboardFormat('HTML Format'); //注册HTML Format格式
with TClipboard.Create do
begin
hMem := GetAsHandle(CF_HTML);
txtPtr := GlobalLock(hMem);
s := StrPas(txtPtr);
GlobalUnlock(hMem);
Memo1.Lines.Add(UF8Decode(s));
Free;
end;
end;
单击Button4就可以在memo1中看到真定html格式文本。
相关文档:
\webapps\test 路径下ThreeParams.html:
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>TreeParams</title>
</head>
<body>
<form method="get" onsubmit="return true" name="form1" action="/test/tp">
<tabl ......
for
(tmp
=
m_commentHead
;
tmp
;
tmp
=
tmp->next)
{
nCommentNum ++
;
memset(wBuffer,
0
......
如何表示上级目录
../表示源文件所在目录的上一级目录,../../表示源文件所在目录的上上级目录,以此类推。
假设info.html路径是:c:\Inetpub\wwwroot\sites\blabla\info.html
假设index.html路径是:c:\Inetpub\wwwroot\sites\index.html
在info.html加入index.html超链接的代码应该这样写:
<a href ......
设置字体的过程
Procedure TForm1.FontDlgApply(Sender:Tobject);
begin
Button1.Font:= FontDialog1.Font;
end;
该程序只有当用户按动About框的按钮或被About窗控制图标关闭窗口后,才会回到主窗体中,而不能与第一个窗体发生交互行为。这就是方法Show和ShowModal的主要不同之处
集合类型是一群相同类型元素的组合 ......
查找另外一个窗口的句柄: handle := FindWindow(nil,PChar('窗口的标题'));//查到窗体句柄
查找子窗体:childHandle := FindWindowEx(handle,0,'子窗体类','子窗体标题');
另外有个枚举子窗体的API,EnumChildWindows(主创体句柄,@回调函数,用户参数);
用这个函数需要自己写一个回调的函数,比如:
function EnumChil ......