《Delphi从入门到精通》第21章 第二部分
创建IntraWeb应用程序
创建IntraWeb应用程序,有很多组件可用。不妨看一下Delphi组件板中的IW Standard页,会给您留下深刻的印象,从简单的按钮、复选框、单选框、编辑框、列表框到迷人的树形控件、菜单、计时器、表格和链接应有尽有。我不想举例描述每个组件的用法,只想通过几个例子,阐述IntraWeb的体系结构,当然顺便也会介绍用到的组件。
我创建了一个例程(叫IWTree),演示了IntraWeb的菜单和树形控件的用法,同时也说明了如何动态创建组件。IntraWeb菜单通过引入常规Delphi菜单内容来工作的,这很容易,只需简单地把AttachedMenu设置成Tmenu组件即可:
object MainMenu1: TMainMenu
object Tree1: TMenuItem
object ExpandAll1: TMenuItem
object CollapseAll1: TMenuItem
object N1: TMenuItem
object EnlargeFont1: TMenuItem
object ReduceFont1: TMenuItem
end
object About1: TMenuItem
object Application1: TMenuItem
object TreeContents1: TMenuItem
end
end
object IWMenu1: TIWMenu
AttachedMenu = MainMenu1
Orientation = iwOHorizontal
end
菜单项运行时处理OnClick事件,是以链接形式实现的。看一下图21.3,这是展示菜单的例程的运行效果。例程中的另外一个组件是树形控件,在例子中预置了很多节点。该组件通过很多JavaScript代码来实现在浏览器中(不需要调用服务器代码)直接控制树形控件节点的展开和收叠。同时,菜单中还有控制树形控件节点展开和收叠以及控制字体大小的菜单项。下面列出其中两个事件代码:
procedure TformTree.ExpandAll1Click(Sender: TObject);
var
i: Integer;
begin
for i := 0 to IWTreeView1.Items.Count - 1 do
IWTreeView1.Items [i].Expanded := True;
end;
procedure TformTree.EnlargeFont1Click(Sender: TObject);
begin
IWTreeView1.Font.Size := IWTreeView1.Font.Size + 2;
end;
图21.3 演示菜单、树形控件和动态创建组件的例程
感谢IntraWeb提供了如同标准Delphi VCL组件的特性,使代码易读,也容易理解。
例程中的菜单有两个子菜单稍微复杂一点。第一个是显示应用程序ID,也就是程序执行时的会话期ID。该标志可以通过全局对象WebApplication的AppID属性获得。第二个子菜单是Tree Contents,它可以把树形控件的一级节点标题和子节点数目清单列出。值得注意的是,这些信息显示在一个运行时才创建的组件memo里(见图21.3),这一点与在一个VCL应用程序里面做同样的事情非常相似。
procedure TformTree.TreeContents1Click(Sender: TObject);
var
i: Integer;
begin
with TIWMemo.Create(Self) do
begin</