请高手指教!(300分)

  • 主题发起人 主题发起人 xiongda
  • 开始时间 开始时间
X

xiongda

Unregistered / Unconfirmed
GUEST, unregistred user!
请各位高手指教:
(1)在DHTMLED控件中如何用ExecCommand(DECMD_GETBLOCKFMTNAMES,
OLECMDEXECOPT_DODEFAULT, blockFmtParam)语句取得可用的段落样式?
(2)DHTMLSafe控件如何保存和打开文件?
 
我想应该在微软的网站MSDN上找的到相关资料的,
恐怕不能直接获取吧!看下面的东西够不够,其实感觉够用了。

我使用这个的时候遇到几个问题(没有使用DHtmlsafe)
1.资源释放不完全,看内存里面调用了MSI?free不掉不明白
2.段落自动被截断,你会发现打开一个超大的html文件时,大概只有8000多个字符可以编辑
其他部分丢失了:(
Commands := TList.Create;
lCommand := New(PCommand);//1剪切
lCommand^ := DECMD_CUT;
Commands.Add(lCommand);
lCommand := New(PCommand);//2复制
lCommand^ := DECMD_COPY;
Commands.Add(lCommand);
lCommand := New(PCommand);//3粘贴
lCommand^ := DECMD_PASTE;
Commands.Add(lCommand);
lCommand := New(PCommand);//4删除
lCommand^ := DECMD_DELETE;
Commands.Add(lCommand);
lCommand := New(PCommand);//5全选
lCommand^ := DECMD_SELECTALL;
Commands.Add(lCommand);
lCommand := New(PCommand);//6撤消
lCommand^ := DECMD_UNDO;
Commands.Add(lCommand);
lCommand := New(PCommand);//7重做
lCommand^ := DECMD_REDO;
Commands.Add(lCommand);
lCommand := New(PCommand);//8查找
lCommand^ := DECMD_FINDTEXT;
Commands.Add(lCommand);
lCommand := New(PCommand);//9图形
lCommand^ := DECMD_IMAGE;
Commands.Add(lCommand);
lCommand := New(PCommand);//10超级链接
lCommand^ := DECMD_HYPERLINK;
Commands.Add(lCommand);
lCommand := New(PCommand);//11字体
lCommand^ := DECMD_FONT;
Commands.Add(lCommand);
lCommand := New(PCommand);//12加粗
lCommand^ := DECMD_BOLD;
Commands.Add(lCommand);
lCommand := New(PCommand);//13倾斜
lCommand^ := DECMD_ITALIC;
Commands.Add(lCommand);
lCommand := New(PCommand);//14下划线
lCommand^ := DECMD_UNDERLINE;
Commands.Add(lCommand);
lCommand := New(PCommand);//15靠左
lCommand^ := DECMD_JUSTIFYLEFT;
Commands.Add(lCommand);
lCommand := New(PCommand);//16居中
lCommand^ := DECMD_JUSTIFYCENTER;
Commands.Add(lCommand);
lCommand := New(PCommand);//17靠右
lCommand^ := DECMD_JUSTIFYRIGHT;
Commands.Add(lCommand);
lCommand := New(PCommand);//18插入行
lCommand^ := DECMD_INSERTROW;
Commands.Add(lCommand);
lCommand := New(PCommand);//19删除行
lCommand^ := DECMD_DELETEROWS;
Commands.Add(lCommand);
lCommand := New(PCommand);//20插入列
lCommand^ := DECMD_INSERTCOL;
Commands.Add(lCommand);
lCommand := New(PCommand);//21删除列
lCommand^ := DECMD_DELETECOLS;
Commands.Add(lCommand);
lCommand := New(PCommand);//22插入单元格
lCommand^ := DECMD_INSERTCELL;
Commands.Add(lCommand);
lCommand := New(PCommand);//23删除单元格
lCommand^ := DECMD_DELETECELLS;
Commands.Add(lCommand);
lCommand := New(PCommand);//24合并单元格
lCommand^ := DECMD_MERGECELLS;
Commands.Add(lCommand);
lCommand := New(PCommand);//25拆分单元格
lCommand^ := DECMD_SPLITCELL;
Commands.Add(lCommand);
lCommand := New(PCommand);//26减少缩进量
lCommand^ := DECMD_INDENT;
Commands.Add(lCommand);
lCommand := New(PCommand);//27增加缩进量
lCommand^ := DECMD_OUTDENT;
Commands.Add(lCommand);
lCommand := New(PCommand);//28绝对路径
lCommand^ := DECMD_MAKE_ABSOLUTE;
Commands.Add(lCommand);
lCommand := New(PCommand);//29置前
lCommand^ := DECMD_BRING_TO_FRONT;
Commands.Add(lCommand);
lCommand := New(PCommand);//30置后
lCommand^ := DECMD_SEND_TO_BACK;
Commands.Add(lCommand);
lCommand := New(PCommand);//31
lCommand^ := DECMD_BRING_FORWARD;
Commands.Add(lCommand);
lCommand := New(PCommand);//32
lCommand^ := DECMD_SEND_BACKWARD;
Commands.Add(lCommand);
lCommand := New(PCommand);//33
lCommand^ := DECMD_SEND_BELOW_TEXT;
Commands.Add(lCommand);
lCommand := New(PCommand);//34
lCommand^ := DECMD_BRING_ABOVE_TEXT;
Commands.Add(lCommand);
lCommand := New(PCommand);//35锁定物体
lCommand^ := DECMD_LOCK_ELEMENT;
Commands.Add(lCommand);
lCommand := New(PCommand);//36删除格式
lCommand^ := DECMD_REMOVEFORMAT;
Commands.Add(lCommand);
 
感谢heipi2002!
微软的SDK中有关叙述如下:
Dim fmt as DEGetBlockFmtNamesParam

' [...]

Private Sub DisplayFormats()
If cmbBlockFmt.ListCount < 1 Then
Set f=CreateObject("DEGetBlockFmtNamesParam.DEGetBlockFmtNamesParam")
DEdit1.ExecCommand(DECMD_GETBLOCKFMTNAMES, _
OLECMDEXECOPT_DODEFAULT,f)
For Each fmtName in f.Names
cmbBlockFmt.AddItem(fmtName)
Next
End If
End Sub
请问上述VB语句如何翻译成Delphi语句呢?
 
var
I: integer;
oFormatNames: OLEVariant;
sNames: Variant;
begin

// Create the block fmt names holder
oFormatNames := CreateOleObject('DEGetBlockFmtNamesParam.DEGetBlockFmtNamesParam.1');
// Get the localized strings for the DECMD_SETBLOCKFMT command
DHTMLEDIT1.ExecCommand(DECMD_GETBLOCKFMTNAMES, OLECMDEXECOPT_DONTPROMPTUSER, oFormatNames);
sNames := oFormatNames.Names;
for I := 0 to VarArrayHighBound(oFormatNames.Names, 1) do
SHOWMESSAGE(sNames);
 
感谢Adnil!
取得DHTMLed可用的段落样式的问题已解决,请各位高手就DHTMLSafe控件保存和打开文件
的问题继续指教。
 
DHTMLSafe控件保存和打开文件的问题已解决,感谢各位大侠!
 

Similar threads

D
回复
0
查看
754
DelphiTeacher的专栏
D
D
回复
0
查看
728
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部