delphi安装cad控件delphi一些语法及实例.docx
- 文档编号:5582
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:33
- 大小:65.97KB
delphi安装cad控件delphi一些语法及实例.docx
《delphi安装cad控件delphi一些语法及实例.docx》由会员分享,可在线阅读,更多相关《delphi安装cad控件delphi一些语法及实例.docx(33页珍藏版)》请在冰点文库上搜索。
delphi安装cad控件delphi一些语法及实例
delphi安装cad控件
我下载的是使用版本,用的Delphi版本是Delphi7,在下载的文件包目录\CADImportVCLv6.1产品试用版\cadimportvcl\Delphi\Lib7有个sgGrpVw7.dpk文件,用Delphi打开后,先点compile,然后再install就可以了,操作的时候貌似会出现message提示有warning,不过貌似不影响安装。
下面附加Delphi安装第三方控件的方法供参考:
由于组件提供的方式不同,所以安装的方法也是不一样的,下面就目前常见的各种形式的组
件的安装方法介绍一下。
1只有一个DCU文件的组件。
DCU文件是编译好的单元文件,这样的组件是作者不想把源码公
布。
一般来说,作者必须说明此组件适合Delphi的哪种版本,如果版本不对,在安装时就会
出现错误。
也正是因为没有源码,给使用者带来了不便,那就是一旦Delphi版本升级,此组
件就不能再使用了,当然有的作者给出了几种版本的DCU文件,用户根据需要选择使用。
这
样的组件的安装方法是:
在Component菜单中,选择installcomponent,在对话框中的
"intoexistingpackage"页中,单击“Unitfilename”后的“Browse”按钮,在打开的
文件对话框中,将“文件类型”设定为*.dcu,找到要安装的DCU文件,按OK按钮返回
"intoexistingpackage"页后再按OK按钮就可以安装了。
注意,此时Delphi会提示
dclusr40.dpk将被重建,是否继续,OK就可以了。
这里是将组件安装到dclusr40.dpk包中,
此包从文件名上可以看出是用户自定义组件包,先安装到这个包中吧,下面再讲有关注意
事项。
安装完毕会有已经将组件注册完的提示信息以及安装到哪个组件页中的信息等,到
组件面板上看看,一般会出现一个新的组件页,其中有刚安装的组件。
2、只有PAS文件或既有PAS又有DCU文件的组件。
这种组件因为有PAS文件,也就是说作者提
供了源码,这就好办多了。
安装的方法和上面是一样的,在文件类型中可以设定为DCU也可
以设定为PAS,建议设定为PAS,这样可用你的Delphi重新编译一下,看是否会出现问题。
Delphi升级后只能选择PAS文件安装,这样才能重新编译,使得组件能适应新Delphi版本。
这样的组件是很值得使用的,根据心铃的经验,没有源码的组件最好不要使用,一是存在
Delphi版本升级后无法使用的问题,再者当程序出现问题后用户无法调试组件来判断是否
是组件中存在BUG。
3、有dpk文件的组件包。
带有dpk文件的组件包一般是有多个组件构成的,也就是说安装后
会有多个组件供使用,如果只有一个组件作者一般不会制成DPK文件,使用上面的方式发布
就可以了。
对于这样的组件包,一般来说会有详细的安装说明文件,如上面提到的RXLIB,
由于组件复杂且安装时有先后顺序,作者不提供安装说明用户根本无法正确安装。
如果没
有安装说明文件,那么用下面的方法安装:
在File菜单下,选择”OPEN…”打开dpk文件
(文件类型列表框中选*.dpk),在出现的Package窗口中,工具栏上有Install按钮,按此
按钮即可进行安装。
如果Install按钮处于无效状态,那么先按Compile按钮编译,一般
来说编译之后Install按钮就会处于有效状态,此时再按Install按钮就可以了。
4、带有Bpl文件的组件包。
一般来说这也是由多种组件构成的组件包,它其实是一个动态
连接库文件(DLL)。
对于这种组件包的安装方法是:
在component菜单下选择
“installpackages”,然后单击Add按钮,在打开的文件对话框中找到相应的bpl文件打
开返回后,再单击Ok按钮就可以了。
5、ActiveX控件的安装。
要安装这类控件,需要先用regsvr32.exe注册,然后选择
Component菜单中ImportActiveXControl项。
在ImportActiveXControl打开的窗口中,
只有已经注册的ActiveX控件才出现在列表中,选中一个然后按Install按钮就可以安装了。
如果事先没有用regsvr32.exe注册也可以按ADD按钮找到OCX文件即时注册,注册后再进行
安装。
几点说明:
1在拿到组件后先看是否有说明文件,一般来说在说明文件中有如何安装的
指导,有些还会有组件的属性、事件、方法的使用说明,这些在使用时是非常重要的。
2在上面的组件(包)安装操作之前,最好将*.bpl拷贝到你的System目录中,将
*.pas、*.dcu、*.dcr、*.dp?
拷贝到Delphi的Lib目录中再进行。
3前面我们提到安
装DCU组件时,选用的是已经存在的dclusr40.dpk,当然也可以选择安装到一个新的包中,
如果选择新包,需要先取一个名字比如DEMO,事实上安装完毕后用户可以找到的是
Demo.bpl,而找不到DEMO.DPK。
假如你已经将一个组件安装到dclusr40.dpk中了,还想再
安装一个组件,如果再安装到dclusr40.dpk中,安装后你得到提示,原来安装的那个组件
已经被取消注册,你将无法使用了。
这样不就成了只能安装一个组件了吗?
除非你再安装
到一个新的包中才可以两个组件同时使用。
当然每安装一个组件生成一个新的BPL文件也
未偿不可,但BPL文件就增加许多。
能否在dclusr40.dpk中多安装几个组件呢?
当然是可
以的。
方法如下:
用File菜单下的OPEN打开dclusr40.dpk文件,单击ADD按钮,在打开的
对话框中选择ADDUNIT页面,按Unitfilename后的“Browse”按钮打开组件单元文件,
OK即可,用此种方法这样可添加多个组件的单元文件,添加完毕,按一下编译按钮,然后
再按Install按钮即可,如果单元文件是编译好的(DCU)可以直接按安装按钮。
4组件的
删除。
光会安装可不行,还要会删除呀。
很简单,在component菜单下,选择
installpackages,在列表中找到安装所在的Bpl,按Remove按钮,ok!
再把Bpl文件删掉
就彻底了,如果不删除BPL文件,下次可以按安装BPL组件的方法再安装使用。
上一篇:
Delphi连接AutoCA...
下一篇:
ObjectPascal的...
|返回日志列表
用Delphi实现对AutoCAD的操作[图片]分享复制地址日志地址:
请用Ctrl+C复制后贴给好友。
雨蒙蒙的天空2009年11月05日18:
33阅读(4)评论(0)分类:
个人日记权限:
公开
字体:
大▼小中大更多▼设置置顶权限设置推荐日志转为私密日志删除编辑
一、概述
AutoCAD?
ActiveX?
使用户能够从AutoCAD的内部或外部以编程方式来操作AutoCAD。
它是通过将AutoCAD对象显示到“外部世界”来做到这一点的。
这些对象被显示后,许多不同的编程语言和环境以及其他应用程序(例如Microsoft?
WordVBA或ExcelVBA)就可以访问它们。
在AutoCAD中实现ActiveX接口有两大优点:
更多的编程环境可以编程访问AutoCAD图形。
在ActiveXAutomation出现以前,开发人员只能使用AutoLISP?
或C++接口。
与其他Windows?
应用程序(如MicrosoftExcel和Word)共享数据变得更加容易。
二、在Delphi中导入AutoCAD类型库
AutoCAD2005Automation工程与AutoCAD2004Automation工程使用同一类型库(acax16enu.tlb)。
类型库位于C:
\ProgramFiles\CommonFiles\AutodeskShared目录下。
在Delphi中按下述步骤导入类型库:
Project菜单—>ImportTypeLibrary—>Add...选择类型库(acax16enu.tlb)—>Install...然后就会生成一个AutoCAD_TLB.pas文件。
在Unit单元中引用AutoCAD_TLB,然后就可以按照CAD自带的帮助文件《ActiveX和VBA开发人员指南》中的相关说明使用了。
三、简单的一个例子:
(新建一个图形文件,输入文字,并全部显示)
新建一个工程,添加一个按钮。
下面为全部代码。
unitUnit1;
interface
uses
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
Dialogs,StdCtrls,ComObj,autocad_tlb;
type
TForm1=class(TForm)
Button1:
TButton;
procedureButton1Click(Sender:
TObject);
private
{Privatedeclarations}
public
{Publicdeclarations}
end;
var
Form1:
TForm1;
implementation
{$R*.dfm}
procedureTForm1.Button1Click(Sender:
TObject);
varcad,CADDOC,inpoint:
variant;
textheight:
integer;
begin
//form1.Visible:
=false;
try
cad:
=GetActiveOleObject('AutoCAD.Application');
except
cad:
=createOleObject('AutoCAD.Application');
end;
cad.WindowState:
=$00000003;//最大化
//(acmax--$00000003,acmin--$00000002,acnorm--$00000001)
cad.Visible:
=true;//设置为可视
try
caddoc:
=cad.activedocument;//选择当前活动文档
except
caddoc:
=cad.documents.add();//如果没有打开文档则新建一个;
end;
inpoint:
=varArraycreate([0,2],5);
inpoint[0]:
=strtoint('30');
inpoint[1]:
=strtoint('40');
inpoint[2]:
=strtoint('30');
textheight:
=strtoint('5');
caddoc.ModelSpace.addtext('Hello,World!
',inpoint,textheight);
cad.Application.ZoomExtents;
end;
end.
unitUnit1;
interface
uses
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
Dialogs,DB,ADODB,StdCtrls,Grids,DBGrids;
type
TForm1=class(TForm)
ADOConnection1:
TADOConnection;
ADOConnection2:
TADOConnection;
Button1:
TButton;
OpenDialog2:
TOpenDialog;
ADOQuery1:
TADOQuery;
ADOQuery2:
TADOQuery;
DBGrid1:
TDBGrid;
DataSource1:
TDataSource;
Button2:
TButton;
Label1:
TLabel;
SaveDialog1:
TSaveDialog;
procedureButton1Click(Sender:
TObject);
procedureButton2Click(Sender:
TObject);
procedureFormCreate(Sender:
TObject);
private
{Privatedeclarations}
public
{Publicdeclarations}
end;
var
Form1:
TForm1;
implementation
{$R*.dfm}
procedureTForm1.Button1Click(Sender:
TObject);\\将Excel导入access
var
sFileName,sTableName:
string;
sl:
TStringList;
i:
integer;
begin
ifnotOpenDialog2.ExecutethenExit;
ifnotADOConnection1.ConnectedthenADOConnection1.Connected:
=True;//判断是否连接
try
sFileName:
=OpenDialog2.FileName;
ADOConnection2.Connected:
=False;//注意这里连接EXCEL的参数//关键是这里
ADOConnection2.ConnectionString:
='Provider=Microsoft.Jet.OLEDB.4.0;Password="";DataSource='+sFileName+';ExtendedProperties="Excel8.0;IMEX=1";PersistSecurityInfo=False';
ADOConnection2.Connected:
=True;
//
sl:
=TStringList.Create;
ADOConnection2.GetTableNames(sl);//记住Excel文件的底部必须是sheet1否则不能导入
sTableName:
=sl[0];
ifPos('$',sTableName)>0thensTableName:
='['+sTableName+']';
ADOquery2.Close;
ADOquery2.SQL.Clear;
ADOquery2.SQL.Text:
='SELECT*FROM'+sTableName;
ADOquery2.Open;
sl.Free;
ADOquery1.Close;
ADOquery1.Sql.Text:
='SELECTtop1*FROMshiyanwhere1=0';//打开空记录表....这里可以用insert,不用append
ADOquery1.Open;//根据自己习惯做吧...
ifADOquery2.RecordCount>0then
begin
ADOquery2.First;
fori:
=1toADOquery2.RecordCountdo//
begin
ADOquery1.Append;
ADOquery1.FieldValues['孔号']:
=ADOquery2.FieldValues['konghao'];
ADOquery1.FieldValues['图号']:
=ADOquery2.FieldValues['tuhao'];
ADOquery1.FieldValues['层号']:
=ADOquery2.FieldValues['cenghao'];
ADOquery1.FieldValues['深度']:
=ADOquery2.FieldValues['shendu'];
ADOquery1.FieldValues['岩土名称']:
=ADOquery2.FieldValues['ytmc'];
ADOquery1.Post;
ADOquery2.Next;
end;
end;
MessageBox(Handle,'导入完成!
','完成!
',MB_OK+MB_ICONINFORMATION);
except
MessageBox(Handle,'失败!
','信息!
',MB_OK+MB_ICONINFORMATION);
end;
end;
procedureTForm1.Button2Click(Sender:
TObject);\\打开access--SP表
begin
ifnotADOConnection1.ConnectedthenADOConnection1.Connected:
=True;//判断是否连接
ADOquery1.Close;
ADOquery1.Sql.Text:
='SELECT*FROMshiyan';
ADOquery1.Open;
end;
procedureTForm1.FormCreate(Sender:
TObject);
begin
end;
end.
DBGrid1图为:
“聪明的程序员用Delphi!
”现在,真是有越来越多的人开始用Delphi了。
不过,高手毕竟是少数,像我这样的菜鸟可谓遍地都是,哈哈。
既然是菜鸟自然就有一大堆很菜的问题,什么这个怎么设置、那个怎么写的……所以,以下我就以我所积累的那一点点经验和论坛上常见的小问题作一个总结性发言(全场热烈鼓掌!
哎,这鲜花我就收下了,那个什么烂番茄就不要扔上来了嘛)
==系统应用篇==
A.Delphi自代了大量的常用控件,如Delphi5就有一百多了,而今年出的Delphi6更是Delphi5的1.5倍。
这么多控件,就是在1024*768的分辨率下也无法全部显示他们的组件面板,而每次要按那两颗小按钮来显示更多的面板,真是非常不方便!
但通过添加下面那一个注册表键值就能实现组件面板自动展开:
[HKEY_CURRENT_USER\Software\Borland\Delphi\X.0\Extras]
"AutoPaletteSelect"="1"
(注:
X.0表示你的Delphi的版本号;如果没有Extras主键则新建即可,下同)
B.每次新建窗体,然后设置其字体、大小……真是好麻烦的!
那就再添加一个以下的键值,让系统自动来设置吧:
[HKEY_CURRENT_USER\Software\Borland\Delphi\X.0\FormDesign]
"DefaultFont"="宋体,9,_"
(注:
_表示空格,也可以用Bold(粗体)等代替)
C.自定义工作环境,让它更加适合自己。
?
设置工具栏。
在Delphi的工具栏右键单击,选Customize,然后挑选需要的按钮拖到工具上,把不要的拖出来。
我常用的是:
Standard工具栏下的Open、OpenProject、Save、SaveAll、Undo、Redo;Debug工具栏下的Pause、AddWatch、ProgramReset、Run;Desktop工具栏下的SaveCurrentDesktop、SetDebugDesktop;ComponentPalette工具栏。
?
设置窗口布局。
为了能跟高效的编写程序,合理的布置各个窗口是很重要的。
我常用的窗口有:
ObjectInspector、ProjectManager(View|ProjectManager)、WatchList(Run|AddWatch...),具体的停放位置如图1。
设置好各个窗体后按Desktop工具栏上的SaveCurrentDesktop按钮保存。
?
设置显示颜色。
让代码的颜色更符合自己的习惯,有利于编写时思维的清晰。
Tools|EditorOptions打开EditorProperties,选Color标签页,设置代码颜色。
以下仅解释一下几个常用的:
Whitespace:
空白处,即背景;
Comment:
注释;
Reservedword:
保留字;
String:
字符串;
Number:
数字;
ExecutionPoint:
正在执行的当前行(即F7步入时所到达的那一行);
Enabledbreak:
断点;
Errorline:
错误发生行;
D.掌握一些Delphi编程中的快捷键,能够极大程度的提高效率,还不会让你因为过多无聊的设置等而感到厌烦,现在如果不用这些快捷键,我会很不适应这样的编程的!
以下我就介绍一下我常用的几个快捷键:
Esc:
选择当前选中组件的容器(通常是Panel,GroupBox或Form等);
Ctrl+方向键:
将所选组件移动一个像素;
Ctrl+Shift+方向键:
将所选组件移动一大格(类似Fireworks中按住Shift再用方向键移动时的效果);
Shift+方向键:
调整选中组件的大小,每次一像素;
Shift+选中组件:
按住Shift键再用鼠标点击组件,可以同时选择多个组件;
Ctrl+鼠标左键:
在procedure中掉用其他的函数(如一个自定义的过程),在这个调用处按住Ctrl会发现当鼠标移上去的时候变成了一个类似超链接的格式,鼠标单击就能直接转到所调用的此函数的实现部分。
这个功能我可是用的最多了,让我找模块变得非常方便!
Ctrl+Shift+C:
在一个对象中声明了一个方法,然后把光标放到它的上面,按下Ctrl+Shift+C就可以为他的实现建立一个基本框架,如:
TForm1=class(TForm)
private
{Privatedeclarations}
public
{Publicdeclarations}
procedureMine;
end;
把光标放到procedureMine这行,按下Ctrl+Shift+C,下面这段代码将自动插入到单元中:
procedureTForm1.Mine;
begin
end;
==窗体操作篇==
在有多个窗体的程序中,Delphi默认是将它们在程序启动时全部创建(只是都隐藏了,只显示一个主窗体),这样,那些暂时不必要启动的窗体就占用了许多内存空间。
所以我们需要在菜单Project|Options...的Forms标签页下,将那些暂时不要启动的窗体从“Auto-createforms”下转移到“Availableforms”中。
这样,这些窗体的创建和释放就需要代码来实现了。
A.两种创建窗体方法之比较。
对于这些非自动创建的窗体,我们必须在Show之前Creat(Self)或Create(Application),将其创建。
如Form2.Creat(Self)和Form2.Create(Applicat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- delphi 安装 cad 控件 一些 语法 实例