`
vgraphvgraph
  • 浏览: 31396 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

阅读更多

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

分享到:
评论

相关推荐

    一款超强的图形系统——Delphi源码Delphi-source-VG7.23

    这是一套是一套非常完善的图形系统,适合在电力、煤炭、化工、仿真、网络、自动化等各种工业监控软件以及图形建模、图形管理、图形分析、中小型GIS系统、工作流、中文表格、表单、工程绘图等软件项目中应用。...

    AIX HACMP增加磁盘到使用的VG

    本文将详细介绍如何在 AIX HACMP 环境中增加磁盘到使用的 VG。 为什么需要增加磁盘到使用的 VG 随着业务的发展和数据的增长,原始的存储空间可能不足以满足业务需求。此时,增加磁盘到使用的 VG 就变得非常必要。...

    日立VG7S变频器使用说明.pdf

    7. 故障诊断与维护:变频器在使用过程中可能会出现各种故障,如过热、过载、显示错误代码等。用户需要根据错误代码或现象进行故障诊断,并根据说明书进行相应的维护工作。 8. 日立VG7S变频器的维护保养:定期检查...

    TOP264vg规格书_中文

    在TOP264vg规格书中,还提供了详细的输出功率表,供用户参考。 TOP264vg规格书的输出功率表包括: | 产品型号 | 输出功率(W) | | --- | --- | | TOP264VG | 21 W | | TOP264EG/VG | 30 W | | TOP264KG | 30 W |...

    NEX-VG20E说明书

    - 避免狭窄空间中使用电源适配器 - 使用附近的电源插座 - 故障时立即断开电源连接 - 电源关闭时仍保持通电状态 - **电源线使用注意事项** - 仅适用于本机 - 不适用于其他电气设备 - **耳机音量警告** - 过大...

    exe.zip_delphi 画图_delphi画图_画图_画图软件

    在Delphi中,开发者通常会使用VCL(Visual Component Library)框架,其中包含了一系列预定义的组件,如TCanvas,可以用于在屏幕上绘制图形。 压缩包内的文件名列表提供了更多线索: 1. MapPublish.exe:这很可能是...

    一款超强的图形系统—C#源码C#vb.net_source_vg7.23

    这是一套是一套非常完善的图形系统,适合在电力、煤炭、化工、仿真、网络、自动化等各种工业监控软件以及图形建模、图形管理、图形分析、中小型GIS系统、工作流、中文表格、表单、工程绘图等软件项目中应用。...

    富士电机5000VG7S系列变频器用户手册(完整版)

    9. 维护与故障排除:变频器在长期使用过程中,需要进行定期检查和维护以保证其性能。用户手册会给出保养项目、方法以及如何诊断和解决常见的故障问题。 10. 安全须知:变频器安装和操作时安全非常重要,用户手册会...

    vg849 规格书 VG849是一种常用信号发生源

    规格书中还会详细介绍VG849的调制功能,包括AM、FM、PM、脉冲调制等,以及相关的调制深度和调制指数设置。这些调制模式使得VG849能够模拟各种复杂信号,以测试接收机的性能或验证滤波器的带宽。 在输出能力方面,VG...

    AIX在Hacmp环境下扩容VG[定义].pdf

    在AIX操作系统中,使用C-SPOC功能可以在线添加PV和扩展FS。首先,创建PV,使用命令Cfgmgr和/usr/DynamicLinkManager/bin/dlmcfgmgr配置LUN;然后,检查PVID,确保PV已经生成。最后,使用C-SPOC功能扩展VG,进入C-...

    VG自由开发的多个图片

    总的来说,掌握VG开发意味着你需要理解SVG的基本原理、语法特性,以及如何在实际项目中有效地利用SVG提升用户体验和图形质量。同时,了解SVG与其他技术如CSS、JavaScript的集成,将使你在Web开发中更具优势。

    PCA-6010VG主板集成网卡在Windows2000下的驱动

    值得注意的是,尽管Windows 2000是一个较老的操作系统,但有些工业应用可能还在使用,因此对这种系统的支持依然很重要。然而,由于系统版本较旧,可能不支持现代的安全标准和技术,因此在实际部署时要考虑其兼容性和...

    华硕vg239q显示器校色文件

    在本文中,我们将主要围绕华硕VG249Q显示器的校色过程、校色文件的作用、以及如何使用这些文件来优化显示效果进行讨论。 华硕VG249Q是一款专业级的电竞显示器,具备高刷新率、快速响应时间和优秀的色彩表现。显示器...

    瑞传 ROBO-8777VG2A-PICMG1.0架构工业主板说明书.pdf

    在芯片组方面,ROBO-8777VG2A使用了Intel® Q965和ICH8芯片组,为系统提供了稳固的基础。该主板的系统内存支持高达4GB的DDR2 SDRAM,通过两个240-pin DIMM插槽实现扩展。主板还配备了Award BIOS,为用户提供了丰富的...

    设置hosts建VG

    在IT领域,"设置hosts建VG"通常是指在Linux系统中创建Volume Group(VG)的过程,这是一项重要的存储管理任务。VG是逻辑卷管理(LVM)的一部分,它允许我们抽象化物理磁盘以创建更灵活的逻辑存储空间。下面我们将...

    中科蓝讯开发板AB32VG1相关资料.rar

    在使用AB32VG1开发板前,开发者需要安装合适的IDE(集成开发环境),如Keil、IAR或MDK等,这些IDE提供了代码编辑、编译、调试等一系列功能。同时,还需要确保计算机上安装了必要的驱动程序,以便与开发板进行通信。...

    VG-859C Instruction Manual

    根据提供的文件信息,本文将对“VG-859C Instruction Manual”进行深入解析,提炼出其中的关键知识点,包括该产品的基本介绍、特点、配置数据、操作模式等内容,并结合部分内容进一步详细阐述。 ### 一、产品简介 ...

    VG-859手册

    本篇将深度解析VG-859的核心功能、面板布局与操作流程,为用户提供全面的使用指导。 #### 面板介绍 VG-859的面板设计简洁直观,主要包括: - **LCD显示器**:双行显示,每行可显示24个字符,用于显示设备状态与...

    HP UNIX创建vg过程.doc

    在这个例子中,管理员使用`vgcreate`命令创建了一个名为`vgbackup`的新VG,将之前创建的`/dev/rdsk/c4t1d0`和`/dev/rdsk/c4t1d1`加入其中。需要注意的是,创建VG时要确保物理卷的PE(Physical Extent)数量不会超过...

Global site tag (gtag.js) - Google Analytics