深度解析工业图形专家(VG)在delphi中的使用

Delphi中VisualGraph使用指南
本文详细介绍了如何在Delphi开发环境中安装和使用VisualGraph图形平台,包括注册组件、图形控制及Delphi与VisualGraph脚本混合编程交互的方法。

Visual Graph图形平台在delphi中的使用

第一步:安装Visual Graph
首先点击Visual Graph目录上的注册COM.bat,最后显示注册成功,其实这一步就是注册Visual Graph的ActiveX组件,他的组件名为vg.dll.用命令行批处理写上 regsvr32 vg.dll。
 <wbr> 那么就要在Delphi里面调出ActiveX了。
Visual Graph的VG组件是遵循ActiveX标准的控件,很容易安装到自己的开发环境中。</wbr>

  1、注册北京图王的Visual Graph的VG组件。
  2、打开DELPHI,选择Component;Import ActiveX Control…菜单。
  3、在Import ActiveX窗体中选择Visual Graph ActiveX Control Module选项,点击最下面的【Install…】按钮。
  4、在Package窗体中点击【Compile】、【Install】按钮,退出时选择不保存。
  5、在控件区的ActiveX页中出现一个Visual Graph的VG组件图标,表示安装成功。
  6、直接将Cell图标拖到Form中即可使用。
7、Visual Graph的VG组件提供了几种开发环境中的Demo,可以直接照办使用,那基本就是一个样的Demo。


第二步:在Delphi窗体里面加入并调用 Visual Graph
最开始使用Visual Graph的时候是进行图形管理与控制,也就是说,画出几个库图元之后,用户可以自己加载图库,从图库里面加入图形,并对图形进行一些属性设置。
我觉得它的技术特点如下:
1)非常人性化设计,提供最为完善的绘制、修改方法,各种显示模式,随意切换。
2)与常见的绘图、文档编辑软件的操作方式相似,使用户可以在短时间内掌握绘图的使用方法。
3)丰富的一致的图元库让用户绘制图形无需从头开始,只要轻轻的拖曳即可做出漂亮的图形。
4)VG里面全部是矢量绘图,缩放自如。
5)绘图过程比用纸笔画图更简单方便和精准,图层控制等格式设置.
6)基本绘图库让用户可以通过直线、曲线、弧线、矩形和椭圆工具等元素绘制出新的图形。
7)矢量图形抗锯齿。让您绘制的图形在任何角度都保持美观。
8)无限撤销和重做功能,使用更加方便灵活。
9)可以输出为VG专用的绘图格式TBL与Bin,其他图形格式.
10)所见即所得的操作方式。

 

 

 

第三步:图形控制
首先拖入一个VG控件,在窗口的OnShow代码里面写上:
procedure TForm1.FormShow(Sender: TObject);
begin
 <wbr> vgctrl1.Run( ExtractFilePath( Application.ExeName ) + 'hmi.tbl' );
end;

运行一张图,如下所示:</wbr>


 

 <wbr>procedure TForm1.Button1Click(Sender: TObject);
var
 </wbr><wbr> uu : IUnit;
 </wbr><wbr> ret : Integer;
begin
 </wbr><wbr> uu := vgctrl1.vg.ActiveSheet.UnitByName( TButton( Sender ).Caption );
 </wbr><wbr> ret := uu.GetPropertyValue( 'Value' );
//或者也可以用
//ret := vgctrl1.vg.Execute('return '+TButton(sender).Caption+'.Value');
 </wbr><wbr> ShowMessage( IntToStr( ret ) );
end;</wbr>

procedure TForm1.Button3Click(Sender: TObject);
var
 <wbr> uu : IUnit;
 </wbr><wbr> ret : Boolean;
begin
 </wbr><wbr> uu := vgctrl1.vg.ActiveSheet.UnitByName( TButton( Sender ).Caption );
 </wbr><wbr> ret := uu.GetPropertyValue( 'OnOff' );
//或者也可以用
//ret := vgctrl1.vg.Execute( 'return开关指示A1.OnOff' );
 </wbr><wbr> if ret then
 </wbr><wbr> </wbr><wbr> </wbr><wbr> ShowMessage( 'true' )
 </wbr><wbr> else
 </wbr><wbr> </wbr><wbr> </wbr><wbr> ShowMessage( 'false' );
end;</wbr>

procedure TForm1.Button4Click(Sender: TObject);
var
 <wbr> uu : IUnit;
 </wbr><wbr> ret : String;
begin
//首先从图形里面取得这个Iunit对象的指针,通过Isheet类里面的UnitByName函数,通过图元名字得到对象指针
uu := vgctrl1.vg.ActiveSheet.UnitByName( TButton( Sender ).Caption );
//再从对象指针里面获取其属性,由于text是Itext类的属性,而Iunit是Itext类的父类,如果想直接用COM接口得到Text属性,那就要Itext(uu).text,才行。同样GetPropertyValue是万能的取得属性值的函数。SetPropertyValue是万能的设置属性值的函数,这两个函数是Iunit的接口函数.
 </wbr><wbr> ret := uu.GetPropertyValue( 'text' );
//或者也可以用
//ret := vgctrl1.vg.Execute( 'return文字A.text' );
 </wbr><wbr> ShowMessage( ret );
end;</wbr>

procedure TForm1.Button5Click(Sender: TObject);
var
 <wbr> uu : IUnit;
begin
 </wbr><wbr> uu := vgctrl1.vg.ActiveSheet.UnitByName( TButton(sender).Caption );
 </wbr><wbr> uu.SetPropertyValue( 'value', 6 );
end;</wbr>

procedure TForm1.Button7Click(Sender: TObject);
var
 <wbr> uu : IUnit;
begin
 </wbr><wbr> uu := vgctrl1.vg.ActiveSheet.UnitByName( TButton( Sender ).Caption );
 </wbr><wbr> uu.SetPropertyValue( 'OnOff', True );
end;</wbr>

procedure TForm1.Button8Click(Sender: TObject);
var
 <wbr> uu : IUnit;
begin
 </wbr><wbr> uu := vgctrl1.vg.ActiveSheet.UnitByName( TButton( Sender ).Caption );
 </wbr><wbr> uu.SetPropertyValue( 'text', 'Visual Graph' );
end;</wbr>

 <wbr></wbr>

第四步:在Delphi与Visual Graph脚本混合编程交互

 

这两个事例,都是运用了AddFunction函数。

 <wbr></wbr>

AddFunction

void=AddFunction(string, string, int, long)

该函数属于高级应用,给Visual Graph脚本体系添加一个内部函数。利用此函数可以扩充脚本语言的能力。
第一个参数是函数的名字(32个字符以内);
第二个参数是参数类型,串中每一个字符代表一个参数类型
1-整数(Int)
2-小数(Double)
3-逻辑型(bool)
4-字符串(string)
比如有( Int,double )做为函数参数时,就用"12"表示。
第三个参数是返回值类型
如49('1'的ASC码)表示返回一个整数。
此外,如果没有返回值,用48('0'的ASC码)表示。
第四个参数是函数地址。
在C语言中,函数名就是函数地址。
在Pascal语言中,函数名前加“@”表示地址。
在Visual Basic语言中,AddressOf运算符能返回函数或者过程的地址。

 <wbr></wbr>

比如:

procedure TForm1.FormShow(Sender: TObject);
begin
 <wbr> vgctrl1.AddFunction( 'CallDelphiEditChange', '44', 48, Longint( @CallDelphiEditChange ) );
 </wbr><wbr> vgctrl1.AddFunction( 'CallDelphiRadioButtonCli</wbr><wbr>ck', '41', 48, Longint( @CallDelphiRadioButtonCli</wbr><wbr>ck ) );
 </wbr><wbr> vgctrl1.AddFunction( 'CallDelphiCheckBoxClick', '43', 48, Longint( @CallDelphiCheckBoxClick ) );
 </wbr><wbr> vgctrl1.Run( ExtractFilePath( Application.ExeName ) + 'demo.tbl' );
 </wbr><wbr> UseDelphiControl := true;
end;</wbr>

在Visual Graph脚本里面是这样写的:
CallDelphiCheckBoxClick(Sender.Name, Sender.Checked)
CallDelphiEditChange( Sender.Name, Sender.Value )
CallDelphiRadioButtonCli<wbr>ck(Name, 0)
那么VG脚本就能调用delphi内部的函数,
那么现在Delphi如何调用VG的函数呢?,那么要运用VG的Execute万能函数了。</wbr>

Execute

variant=Execute(string)

执行脚本语句,并返回一个值(如果脚本最后有return语句的话),脚本语句可以是多行的长串。
示例:
Execute( "Print()" )打印视图当前页。
Execute( "ActiveSheetIndex=2" )页面翻到第三页(0是第一页)。
Execute( "Text1.Text='Hello'" )设置某文字单元的文字内容。
Execute( "Sheet2.Text1.Text='Hello'" )设置Sheet2页上某文字单元的内容。
Execute( "x=2;y=3;return x+y" )返回5。
Execute( "s='ABC';return s" )返回"ABC"。

 <wbr></wbr>

在Delphi里面就这样使用:
Vgctrl1.Execute(“ActiveSheet. AddUnit(‘text’,1,1,0,0)”)就可以增加一个图元了。
如查在设计图形时,给页面增加了一个自定义函数。
那么用
Vgctrl1.Execute(“ActiveSheet. SelfInvoke()”),就能调用它了。

 

 

北京图王软件:http://www.visual-graph.com

这是一套是一套非常完善的图形系统,适合在电力、煤炭、化工、仿真、网络、自动化等各种工业监控软件以及图形建模、图形管理、图形分析、中小型GIS系统、工作流、中文表格、表单、工程绘图等软件项目中应用。 下载网址:http://www.visual-graph.com/down 文档:http://www.visual-graph.com/article 截图示例:http://www.visual-graph.com/gallery Visual Graph经过近十年的深入研究与应用,有预见性地开发了大量具有潜在应用的功能,长期与用户互相合作,大量吸取用户应用经验,十多年的应用研究试验,Visual Graph终于被打造成图形应用领域里面的超级引擎,不断前进,在技术与质量上赢得了众多合作伙伴的心。Visual Graph 在可靠性、兼容性、易用性、扩展性、完备性、容错性等多方面均达到了工业级应用的水平,其技术主要特点是: 其图形系统的基本技术特点如下: 包含编辑与运行两种状态,既可以绘图,也可以任意操纵与控制图形变化。 图形和图库是统一的 XML 格式,便于传输、存储和维护,支持 WEB 开发。 容易开发复杂变化的图形,实现自己的图形库。 每个图形都是对象,拥有众多的属性和函数,可以方便地编辑和操纵。 图形拥有众多的操作事件,可以给图形添加自定义属性或自定义函数。 多页面、多图层、支持图形的逻辑分组。 可以建立和分析图形间的拓朴连接关系,实现各种逻辑运算与控制。 内含面向对象的 Visual Graph 脚本语言,10个COM 类库接口。 支持表格、报表、表单开发。 支持桌面GIS系统的开发、大尺寸地图的显示和数据管理。 支持读取互联网服务器图形文件, 支持图形从内存或数据库读写。 允许自定义箭头、自定义线型、自定义网纹、自定义多个文字标注、自定义提示窗口、自定义图元连接点、自定义图元控制点、自定义光标。 可以制作对话盒、子窗口、弹出式窗口、菜单等窗口元素。 支持混合编程,不仅其他程序可以操控 Visual Graph 的技术,而且 Visual Graph 的脚本可以调用其他语言的程序,也可以调用 DLL,扩展功能。脚本语言的编程习惯和一般语言相同,各种属性、函数名称也基本相同,符合程序员的思维习惯。 可以给这些设备图形添加自定义属性,仪器仪表可以添加最小值、最大值、当前指针值等属性,改变这些属性,仪器仪表就会发生变化(例如指针旋转)。刀闸、开关可以添加开关属性,改变这个属性,开关的样式也发生相应的变化。信号灯可以添加当前状态属性,允许根据属性不同,信号灯的状态发生变化。这些在其他图形软件里面非得使用插件才能实现的功能 Visual Graph 在可靠性、兼容性、易用性、扩展性、完备性、容错性等多方面均达到了较高的水平。 可靠性: 用户主要是工业领域的有实力的软件公司或系统集成商,他们对软件的质量要求很高,首先,软件长期处于无人值守的运行状态下,所以,不能有任何隐患出现。其次,图形要及时响应硬件不断发出的指令,所以,反应速度要快。第三,要考察对方售后服务方面如何。我们现在已经拥有八十多家用户,其中很多都是行业内大名鼎鼎的软件公司或上市公司,每家公司在购买前都对我们进行了长期的考察。实践证明,用户对我们的产品质量和售后服务均非常满意。 兼容性: 软件不仅能在目前主流操作系统,如Windows NT、XP上优化运行,而且还完美兼容Windows98。在编程语言方面,软件提供的接口不仅能够支持VB、VC、Delphi、FoxPro、PowerBuilder、C++Builder、 C#、VB.net、VC.net、IE等不同的工作环境,而且提供了全部类库。要知道,在某些语言中,一些特殊的接口是无法识别和使用的, Visual Graph为此进行了精细设计,既照顾了方方面面不同的语言环境,同时编写程序还非常方便。 易用性: 程序员大都熟悉可视化编程,VB、Delphi、C#就是典型。Visual Graph设计思路和编程习惯非常类似这几种语言,对象的属性名称、函数名称都经过精心的设计,保证符合程序员的思维习惯。由于接口提供了完全的COM类库,当程序员在某个图形对象名后输入小数点时,立即出现下拉列表,里面列出了全部可用的属性和函数。图形文件采用标准XML而不是不可知的二进制格式,工作起来更放心。 扩展性: Visual Graph在图库设计方面是无与伦比的,它不象许多图形软件只能设计简单的组合图形,也不象许多软件必须提供插件才能实现个别复杂的图形,它的基本图形元素虽然只有三种(字、形、线),却能够通过嵌套技术、脚本技术像变魔术般生成无穷无尽的万千图库,只要其他软件有的图形,在这里都能自行开发出来,不需要编写插件,这样就非常适合用于互联网。专业版更提供了特殊的方案,脚本可以回调程序员自己的函数,因此,Visual Graph不支持的技术,程序员可以自行实现。 完备性: Visual Graph充分考虑了用户方方面面的需求,把许多技术做到了极致,超前设计了许多许多功能,更能细致入微地体贴用户。对于具体应用来说,许多功能暂时可能不需要,但给将来的发展却打下了良好的基础。 容错性: Visual Graph充分考虑了用户打开的文件的有可能错误的,所以Visual Graph人性化地显示出错误提示。并且不会出现画面死机现象。如果画面脚本出现错误时,则会显示出脚本错误信息。
Visual Graph是一套强大的交互图形开发平台,她能非常方便地建造基于图形的界面、制作各种图形元件、实现图形建模、制作监控系统、表单系统、绘图系统、流程设计等。   她提供功能非常强大的ActiveX组件,和其他流行的编程语言共同工作,极大地弥补了这些语言在图形处理方面的不足。 一、在电力、煤炭、化工、钢铁、安全监控软件开发中的应用   Visual Graph是专门处理交互图形的,与具体的业务没有关系,她提供了极其丰富的交互事件和控制命令,使程序员能够专心编写后台系统等与界面无关的部分,然后通过接口与Visual Graph联接,这样,体系结构就十分清晰,同时大大减轻了程序员的负担、降低了开发成本、节约了开发时间,软件运行效果还相当好。如果需要在网络上实现监控,还可以把Visual Graph插入网页中使用。   Visual Graph的图形分多个页面,可以制作菜单、子窗口、对话盒等,因此,常常只需要编写脚本就可以完成想要的操作。   一般的自动化图形设计软件,可以自行开发元件库,但是只能在软件限定的范围内进行,这样难免会有不足,而Visual Graph的元件库开发类似于流行编程语言(如Delphi),具有无限的可能性,任何元件都可以做。能够自定义元件甚至基本图形的属性,这是独一无二的技术。   Visual Graph的动画有三个种类,分别解决不同的需求,丰富界面的表现。   第一,整幅画面有众多动画效果,在图形页面出现或消失时启动动画。   第二,每个图形单元有众多动画效果,在图形显示或消失时启动动画。   第三,图形单元可以象演员一样按事先安排的时间序列做各种动作,可以有多个单元同时做动作,可以正向、反向和双向动作。 二、在图形管理、图形界面、图形建模、拓扑分析、小型GIS、演示教学中的应用   您也许需要管理区域所有的电杆、变压器、医院、邮局、派出所、住宅小区,鼠标点击某个地方出现某个操作,这可是一个庞大的矢量图啊,那么把Visual Graph插入您的程序中,也许完全能够满足您的要求。   Visual Graph可以开发的图形库几乎是无限的,图形图形之间可以建立拓扑联接关系,连接的方式充分考虑到用户的需要,自由变化,连接线如果交叉,甚至会出现绕行的小圈。   Visual Graph的连接线有一个起点和一个终点,两端可有多种箭头的形状。配合强大的脚本程序可以实现任何流程计算。   您还可以用Visual Graph开发演示系统。 三、在图库开发、绘图、表格、票据设计中的应用   您也许需要绘制一幅矢量图,其中包含大量的图符,由于Visual Graph提供了无限的元件库开发能力,任何图符都可以绘制。绘图无限自由,所见所得。一般此类软件,绘好的图符在需要用鼠标缩放时,只能按比例变形,而Visual Graph则可以按任何自己想要的方式变形!   需要制作票据打印吗?Visual Graph自由的表单式表格设计和丰富的文字、表格属性能满足您要求的一切样式,Visual Graph的无限丰富的公式计算能独立满足您一切的数据处理,使打印事务与您的其他程序无关。所见所得性能,使您在电脑上绘制票据就象在纸张上一样直观。更有独一无二的特性:打印纸能够用鼠标拖动和按比例缩放,从而实现图形的相对缩放打印,如果您的表格太大,纸张上放不下,可以拖动鼠标解决。   Visual Graph的折线可以用脚本变成各种函数曲线,如正弦曲线、抛物线等,动态变化。
这是一套是一套非常完善的图形系统,适合在电力、煤炭、化工、仿真、网络、自动化等各种工业监控软件以及图形建模、图形管理、图形分析、中小型GIS系统、工作流、中文表格、表单、工程绘图等软件项目中应用。 下载网址:http://www.visual-graph.com/down 文档:http://www.visual-graph.com/article 截图示例:http://www.visual-graph.com/gallery Visual Graph经过近十年的深入研究与应用,有预见性地开发了大量具有潜在应用的功能,长期与用户互相合作,大量吸取用户应用经验,十多年的应用研究试验,Visual Graph终于被打造成图形应用领域里面的超级引擎,不断前进,在技术与质量上赢得了众多合作伙伴的心。Visual Graph 在可靠性、兼容性、易用性、扩展性、完备性、容错性等多方面均达到了工业级应用的水平,其技术主要特点是: 其图形系统的基本技术特点如下: 包含编辑与运行两种状态,既可以绘图,也可以任意操纵与控制图形变化。 图形和图库是统一的 XML 格式,便于传输、存储和维护,支持 WEB 开发。 容易开发复杂变化的图形,实现自己的图形库。 每个图形都是对象,拥有众多的属性和函数,可以方便地编辑和操纵。 图形拥有众多的操作事件,可以给图形添加自定义属性或自定义函数。 多页面、多图层、支持图形的逻辑分组。 可以建立和分析图形间的拓朴连接关系,实现各种逻辑运算与控制。 内含面向对象的 Visual Graph 脚本语言,10个COM 类库接口。 支持表格、报表、表单开发。 支持桌面GIS系统的开发、大尺寸地图的显示和数据管理。 支持读取互联网服务器图形文件, 支持图形从内存或数据库读写。 允许自定义箭头、自定义线型、自定义网纹、自定义多个文字标注、自定义提示窗口、自定义图元连接点、自定义图元控制点、自定义光标。 可以制作对话盒、子窗口、弹出式窗口、菜单等窗口元素。 支持混合编程,不仅其他程序可以操控 Visual Graph 的技术,而且 Visual Graph 的脚本可以调用其他语言的程序,也可以调用 DLL,扩展功能。脚本语言的编程习惯和一般语言相同,各种属性、函数名称也基本相同,符合程序员的思维习惯。 可以给这些设备图形添加自定义属性,仪器仪表可以添加最小值、最大值、当前指针值等属性,改变这些属性,仪器仪表就会发生变化(例如指针旋转)。刀闸、开关可以添加开关属性,改变这个属性,开关的样式也发生相应的变化。信号灯可以添加当前状态属性,允许根据属性不同,信号灯的状态发生变化。这些在其他图形软件里面非得使用插件才能实现的功能 Visual Graph 在可靠性、兼容性、易用性、扩展性、完备性、容错性等多方面均达到了较高的水平。 可靠性: 用户主要是工业领域的有实力的软件公司或系统集成商,他们对软件的质量要求很高,首先,软件长期处于无人值守的运行状态下,所以,不能有任何隐患出现。其次,图形要及时响应硬件不断发出的指令,所以,反应速度要快。第三,要考察对方售后服务方面如何。我们现在已经拥有八十多家用户,其中很多都是行业内大名鼎鼎的软件公司或上市公司,每家公司在购买前都对我们进行了长期的考察。实践证明,用户对我们的产品质量和售后服务均非常满意。 兼容性: 软件不仅能在目前主流操作系统,如Windows NT、XP上优化运行,而且还完美兼容Windows98。在编程语言方面,软件提供的接口不仅能够支持VB、VC、Delphi、FoxPro、PowerBuilder、C++Builder、 C#、VB.net、VC.net、IE等不同的工作环境,而且提供了全部类库。要知道,在某些语言中,一些特殊的接口是无法识别和使用的, Visual Graph为此进行了精细设计,既照顾了方方面面不同的语言环境,同时编写程序还非常方便。 易用性: 程序员大都熟悉可视化编程,VB、Delphi、C#就是典型。Visual Graph设计思路和编程习惯非常类似这几种语言,对象的属性名称、函数名称都经过精心的设计,保证符合程序员的思维习惯。由于接口提供了完全的COM类库,当程序员在某个图形对象名后输入小数点时,立即出现下拉列表,里面列出了全部可用的属性和函数。图形文件采用标准XML而不是不可知的二进制格式,工作起来更放心。 扩展性: Visual Graph在图库设计方面是无与伦比的,它不象许多图形软件只能设计简单的组合图形,也不象许多软件必须提供插件才能实现个别复杂的图形,它的基本图形元素虽然只有三种(字、形、线),却能够通过嵌套技术、脚本技术像变魔术般生成无穷无尽的万千图库,只要其他软件有的图形,在这里都能自行开发出来,不需要编写插件,这样就非常适合用于互联网。专业版更提供了特殊的方案,脚本可以回调程序员自己的函数,因此,Visual Graph不支持的技术,程序员可以自行实现。 完备性: Visual Graph充分考虑了用户方方面面的需求,把许多技术做到了极致,超前设计了许多许多功能,更能细致入微地体贴用户。对于具体应用来说,许多功能暂时可能不需要,但给将来的发展却打下了良好的基础。 容错性: Visual Graph充分考虑了用户打开的文件的有可能错误的,所以Visual Graph人性化地显示出错误提示。并且不会出现画面死机现象。如果画面脚本出现错误时,则会显示出脚本错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值