社区
Delphi
帖子详情
有谁弄过ACTIVEX Form的三层结构!请详解!给100分!!!
keboy
2000-08-25 01:35:00
有谁弄过ACTIVEX Form的三层结构!请详解!给100分!!!
或给资料(网址)也可!
...全文
205
8
打赏
收藏
有谁弄过ACTIVEX Form的三层结构!请详解!给100分!!!
有谁弄过ACTIVEX Form的三层结构!请详解!给100分!!! 或给资料(网址)也可!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
guowzgyc
2000-11-30
打赏
举报
回复
怎么没回应?
guowzgyc
2000-11-29
打赏
举报
回复
说的更详细一点,现在给你一个简单例程:
一、服务器:
1、启动delphi/new application.
2、改变Form1的Name属性为ServerMainForm.
3、现在建立一个远程数据模板。选择 File-New打开New Items对话盒,选择multitiere页中的Remote Data Module.
4、按Ok按钮后出现Remote Data Module Wizard ,在其中的 Class Name 中输入类的名称,本例为MyServer.
5、选择File-Save All,把所做的工作保存起来,我把文件保存在c:\midasTest\,并用以下文件名:
项目文件:Server
主窗体: ServerMain
数据模板:ServerDM
6、在数据模板上放置两个Ttable,1个TDataSource(Data Access页)和1个Tprovider(Midas页),设置其属性分别如下(未列入的属性保持默认值):
属 性 内 容
Name(TTable) TblCustomer
DataBaseName DBDEMOS
TableName Customer.db
Name TTable) TblOrder
DataBaseName DBDEMOS
TableName Orders.db
Name(Tprovider) PrvCustom
DataSet TblCustomer
Name(TdataSource) DSCustomer
DataSet TblCustomer
7、用鼠标右键点击PrvCustomer,在弹出的菜单里选择Export PrvCustomer from datamodule.
8、将TblOrder的MasterSource属性设置为DSCustomer,单击MasterFields属性右边的省略号,弹出如图4的Fields Link Designer对话盒,按图设置其值:
Avalible Index选择索引,此处为CustNo;
Detail Fields 和 Master Fields选择字段:都选择 CustNo;
按 Add 按钮,再按Ok保存所做的工作并关闭对话盒.
9、这样,应用程序服务器部分就完成了,按F9键运行并注册应用程序服务器.
二、客户端:
1、选择File-Close All关闭所有已打开的应用程序。
2、选择File-New出现New Item对话盒,选择其中ActiveX页上的ActiveForm,出现ActiveForm Wizard对话盒.
3、File-Save all保存所有文件,我把文件保存在c:\midastest\,文件名为:
项目文件: Client
主窗体文件:ClientMain
关于对话盒:About
4、建立关于对话盒,选择View-Project Manager,双击About,显示Delphi帮你做好的关于对话盒,你可以在其中填写你自己的信息。
5、在窗体上放置两个Tpanel,5个Tbutton(Standard页),两个TDBGrid,两个TDBNavigator(Data Control页),两个TdataSource(Data Access页),两个TclientDataSet,一个TsocketConnection(Midas页),布置成类似图7的样子,并设置其属性为下表(未列出的为默认值)
构件 属性 内容
Tpanel Name Panel1
Align AlTop
Tpanel Name Panel2
Align AlBotton
TsocketConnction Name SocketConnection1
TClientDataSet Name CDSCustomer
TdataSource Name DSCustomer
DataSet CDSCustomer
TdataSource Name DSOrder
DataSet
TdbNavigator Name DBNaviCustomer
DataSource DSCustomer
TdbNavigator Name DBNaviOrder
DataSource DSOrder
TDBGrid Name DBGCustomer
DataSource DSCustomer
Align AlLeft
TDBGrid Name DBGOrder
DataSource DSOrder
Align AlClient
Tbutton Name BtnLoad
Caption 脱机使用
Tbutton Name BtnSave
Caption 备份数据
Tbutton Name BtnConnect
Caption 连接服务器
Tbutton Name BtnApplyUpdate
Caption 保存修改
Tbutton Name BtnAbout
Caption 版权信息
6、运行.\Delphi4\bin\ScktSrvr.exe。
此程序是提供客户程序和服务器程序通过TCP/IP连接所必须的服务。你可以到www.inprise.com得到这个程序的最新升级版本。
7、把SocketConnection的Address属性设置为127.0.0.1表示本机。
8、单击ServerName属性,选择Server.MyServer(也就是在建立应用程序服务器时所输入的),此时,ServerGUID被自动填充。
如果在单击ServerName发生错误,那么很可能是第7步的ScktSrvr.EXE没有正确运行。
9、选择CDSCustomer,它的的RemoteServer属性设置为SocketConnection(只需选择即可)。
10、选择CDSCustomer,单击其Provider属性下拉列表,选择PrvCustomer,
你可能发现,在选择时,刚才编写的应用程序服务器自动启动了!也就是说,你以后也不必每次手工启动和关闭应用程序服务器。
11、双击CDSCustomer,弹出字段编辑器,单击右键,选择Add All Fields,关闭字段编辑器。
图8 字段编辑器
12、为得到主要明细结构的数据,我们需要在DSCustomer的OnDataChange事件中加入如下代码:
procedure TClientMainForm.DSCustomerDataChange(Sender: TObject;
Field: TField);
begin
DSOrder.DataSet := CDSCustomerTblOrder.NestedDataSet;
end;
13、为做到备份数据和脱机工作,我们利用TclientDataSet的LoadFromfile/SaveToFile方法,分别在脱机工作和备份数据中实现:
procedure TClientMainForm.BtnLoadDataClick(Sender: TObject);
begin
try
CDSCustomer.LoadFromFile('Cust.cds');
except
Showmessage('本地没有数据库备份!');
end;
end;
procedure TClientMainForm.BtnSaveDataClick(Sender: TObject);
begin
try
CDSCustomer.SaveToFile('Cust.cds');
except
Showmessage('本地无法数据库备份!');
end;
end;
14、为显示“关于”对话盒,我们可以利用Delphi自动生成的过程:
procedure TClientMainForm.BtnAboutClick(Sender: TObject);
begin
ShowClientMainFormAbout;
end;
15、现在,我们可以键入以下代码,使客户可以连接到应用程序服务器,这里,我提供了让用户自己选择IP地址的功能,你可以根据自己需要进行改变:
procedure TClientMainForm.BtnConnectClick(Sender: TObject);
var
s:string
begin
s := InputBox('输入','输入服务器的IP地址','');
if s <> '' then
begin
SocketConnection1.Address := s;
CDSCustomer.Open;
end;
end;
16、最后剩下一个按钮就是保存修改,只有使用了这个按钮,你所做的修改才能被保存到数据库中去:
procedure TClientMainForm.BtnApplyUpdateClick(Sender: TObject);
begin
CDSCustomer.ApplyUpdates(-1);
end;
这里,参数-1表示在更新时不允许任何错误,否则,修改被拒绝。这是比较安全的做法.
三、发布应用程序:
1、选择一个服务器,可以是正在开发的计算机,也可以是网络上的计算机,不过它需要运行诸如PWS的WEB服务器。在本例中,为了便于说明,我使用本机同时担任应用程序服务器、WEB服务器和数据库服务器,这是一台运行PWS的中文WIN98计算机。
2、如果Delphi4没有运行,则运行它,打开刚才完成的CLIENT项目。
3、如果ScktSrvr.exe,没有运行,则运行之(见第二步的步骤7)。
4、选择Project-Options-Package,关闭Build with runtime package复选盒.按Ok关闭对话盒.
5、选择Project-Web Deployment Options。
6、在中Target dir和HTMLdir中输入要发布到的目录(也就是其它用户可以通过WEB服务访问到的目录),本例为c:\webshare\wwwroot\(如果为其它计算机,可以利用\\Server\ShareName的UNC命名)。如果不了解应该发布到什么目录,可查阅PWS的设置。在Target URL中输入用户可以下载此ActiveX的URL,如果用户没有此ActiveX,会自动到此URL.
7、选择Additional files页,按Add,在系统目录(Win9x通常为c:\windows\system。NT通常为为c:\winnt\system32)中选择DBClient.dll和STDVCL40.dll,保持其它为默认选项.
8、按OK。选择Project-Deploy。
好了,现在发布工作已经完成了!
9、在客户计算机的浏览器中输入你的URL,本例为http://gyc/client.htm。啊,奇妙的事情发生了!
10、给分吧!
guowzgyc
2000-11-29
打赏
举报
回复
请查阅台湾李维先生的Delphi5系列丛书,讲解的非常详细.
zscao
2000-11-28
打赏
举报
回复
要如何详细法?请与我联系:zscao@km169.net
keboy
2000-08-25
打赏
举报
回复
基于internet/intranet的数据库前端,
可以建立与应用程序服务器相连!
从而建立m-tier的结构,没人知道吗?
Putao
2000-08-25
打赏
举报
回复
What's 三层结构???
ustczhy
2000-08-25
打赏
举报
回复
请说详细,谢谢!
pcyang
2000-08-25
打赏
举报
回复
请说得详细点
asp.net知识库
深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...
BOM和DOM
详解
BOM和DOM
详解
js组成 我们都知道, javascript 有三部
分
构成,ECMAScript,DOM和BOM,根据宿主(浏览器)的不同,具体的表现形式也不尽相同,ie和其他的浏览器风格迥异。 DOM 是 W3C 的标准; [所有浏览器公共遵守...
项目实战:Java Applet与
ActiveX
控件应用
作为一个程序员和架构师,掌握控件的开发和集成技术,是必须的技能; 浏览器中显示的内容主要是标签,当需要复杂操作时,控件技术是超越标签、给B/S项目扩展功能的重要方法! 学习本套视频,主要是掌握java applet...
JavaScript
详解
undefined算术运算关系运算逻辑运算控制语句常用字符串API数组初始化数组的三种方式数组的常用方法Math数学对象number对象正则表达式日期对象函数参数对象构造函数匿名函数全局函数闭包弹框输出DOM操作DOM访问DOM...
SQL Server性能优化
详解
数据库性能优化
详解
性能调节的目的是通过将网络流通、磁盘 I/O 和 CPU 时间减到最小,使每个查询的响应时间最短并最大限度地提高整个数据库服务器的吞吐量。为达到此目的,需要了解应用程序的需求和数据的...
Delphi
5,391
社区成员
262,736
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章