有谁弄过ACTIVEX Form的三层结构!请详解!给100分!!!

keboy 2000-08-25 01:35:00
有谁弄过ACTIVEX Form的三层结构!请详解!给100分!!!
或给资料(网址)也可!
...全文
195 8 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
请说得详细点

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧