当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言:
 

 

    摘要://// 使用说明:单击dbgrideh的标题栏排序(适用于ado)// --在dbgrideh的事件ontitlebtnclick引用该函数即可:// sortdbgrideh(sender, acol, column);// --为了保证表格的每一列都能点击触发排序,你需要将你需要排序的列属性// -- title->titlebutton设置为true。//procedure sor......
 ·支持自绘画的属性编辑器     »显示摘要«
    摘要: 我的主页: http://www.tommstudio.com/ 属性编辑器对于大多数delphi程序员来说无疑是很熟悉的,在对象编辑器的内核中有着大量的属性编辑器,每个对象编辑器中的属性都对应一个属性编辑器类的实例。 delphi5中提供了一些新的高级特性,使我们能够定义新的属性编辑器,为以有的属性提供新的功能,或者设定和显示新的控件的新的属性的显示方法。在delphi5以前,对象编辑器只能够......


揭开Outlook Express编辑器的奥秘
上一页   ...有个简单的办法,在初始化时,通过twebbrowser的navigate方法导航到一个空白页面,有一个busy属性可以用来监测是否加载完毕……

  【程序编程相关:利用VFI提高Delphi程序的重用性

w:哦……哦……(一边听一边敲出下面的代码)运行成功!太感谢了. 【推荐阅读:DBGridEh实现单击标题栏排序方法

procedure tform1.formcreate(sender: tobject);

【扩展信息:后台调用外部程序的完美实现(Delphi

begin

  wbeditor.navigate(about:blank);

  while wbeditor.busy do application.processmessages;

  (wbeditor.document as ihtmldocument2).designmode := on;

end;

 

在老d的帮助下,w对twebbrowser的用法有了一个初步的了解.很显然,接口在twebbrowser的编程中至关重要.此时,为了加深对接口的了解,w决定对ihtmldocument2接口做一个深入的了解.

 

小知识:

       在执行twebbrowser的某个方法以进行某些期望的操作如execwb等时候,可能会碰到如“试图激活未注册的丢失目标”或“ole对象未注册”等错误提示,或者并没有任何出错信息但却得不到希望的结果.这是因为twebbrowser本身是一个ole类型的com组件,你需要在使用twebbrowser前对ole进行一些初始化工作,这个工作可以放到单元的initialization与finalization段中来完成.

 

{uses activex}

initialization

  oleinitialize(nil);

finalization

  try

    oleuninitialize;

  except

  end;

 

浅谈ihtmldocument2接口

 

背景知识:

       为了使用ihtmldocument2接口,你必须包含mshtml.pas单元(如果你采用activex导入的方式,这个单元就是mshtml_tlb.pas)

 

mshtml控件的document对象实现了包括ihtmldocument2接口在内的多个接口.其中document对象的常用属性.子集合.方法等都集中在ihtmldocument2接口中.通过ihtmldocument2接口,可以利用dhtml的强大功能对网页对象进行各种增删操作与属性的动态改变.

 

在ihtmldocument2的接口方法中,有一个特殊的方法引起了w的注意,这就是execcommand方法.很显然,这个方法与命令的调用有关.execcommand方法声明如下:

 

//对当前文档.选定内容或指定范围执行特定的操作

hresult execcommand(      

    bstr cmdid,

    variant_bool showui,

    variant value,

    variant_bool *pfret

);

 

其中,cmdid参数定义了大多数常用的格式化命令.这样,oe编辑器工具栏上的大多数编辑功能完全可以通过这个方法来实现.为了验证自己的想法,w在窗体上新建一个按钮,并写了一些测试代码.运行结果完全符合w的猜测.

 

procedure tform1.button1click(sender: tobject);

begin

  with wbeditor.document as ihtmldocument2 do

begin

//改变字体的前景色

execcommand(forecolor, false, red);

//改变字体的粗细

execcommand(bold, false, 1);

//打开插入图片对话框,插入图片

execcommand(insertimage, true, );

//文本居中

execcommand(justifycenter, false, 0);

//执行撤销上一步操作

execcommand(undo, false, 0);

  end;

end;

 

注:为了确保execcommand调用成功,你必须保证当前页面已经完全加载.

 

如果考虑效率问题,iolecommandtarget::exec方法则可以提供更好的性能.事实上,execcommand命令正是对iolecommandtarget::exec方法的一个封装,其目的主要是为了给script类型的语言提供一个方便的调用入口.通过以下示例学习如何获得对iolecommandtarget接口的访问并调用exec方法:

 

iolecommandtarget::exec方法

      

       procedure tform1.button2click(sender: tobject);

       const

              cgid_mshtml: tguid = {de4ba900-59ca-11cf-9592-444553540000};

       begin

               (wbeditor.document as iolecommandtarget).exec(

@cgid_mshtml,

idm_bold,     //bold命令的id,请参考msdn有关帮助

olecmdexecopt_dodefault,

0,

polevariant(nil)^);

       end;

 

 

再谈document对象的初始化与赋值

在ihtmldocument2接口中,document对象是实现dhtml模型的核心.要实现对document对象的任何操作,必须要等到document对象的初始化操作结束之后才能进行.通过navigate方法,可以实现对document对象的初始化.需要注意的是,navigate方法并不能识别常规方式下的相对路径,如果需要导航到某个文件,必须指定绝对路径.

 


...   下一页
    摘要:我的主页: http://www.tommstudio.com/本文原作者为: 孟辉大家对照片的底片一定都很熟悉了,底片上的颜色与色彩鲜艳的照片的颜色是正好相反的,即反色,这也是我们制作反色图像的核心。编程原理:你所见到的各种色彩都是由红、绿、蓝三种颜色按不同的比例混合而成的,这就是我们所说的三基色,它们的颜色值(rgb值)是 0~255 ,所以我们只需去的图像上各个点的rgb值,然后用255减去......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE