创建一个简单的通讯录程序_课件制作
其中文本文件的最后部分内容如图14.14所示。
图 14.14 文本文件中的内容
下面是具体的实现过程:
1.进入authorware ,新建一个文件,保存为“对象_demo.a6p”。打开文件属性设置对话框,设置程序窗口大小为variable,选中center on screen,取消title bar和menu bar前的选择。
2.在程序开头拖入一个计算图标,命名为“读取文本”,在其中加入以下语句:
--设置窗口大小
resizewindow(320,240)
--定义一个空的列表
wen:=[]
tem:=[]
--创建一个fileio xtra的子对象
zil:=newobject("fileio")
--以只读方式打开文本文件
callobject(zil, "openfile", filelocation^"ziliao1.txt",1)
--依次读取该文本文件的行,存放到列表中
temp:=callobject(zil,"readline")
i:=1
repeat while temp<>-1
repeat with p:=1 to 4
tem[p]:=getword(p,temp)
end repeat
wen[i]:=[#name:tem,#sex:tem,#age:tem,#tel:tem]
temp:=callobject(zil, "readline")
temp:=substr(temp,2,charcount(temp))
i:=i+1
end repeat
--关闭文本文件
callobject(zil, "closefile")
--初始化一个计数器
j:=1
--统计列表wen中元素的个数
geshu:=listcount(wen)
说明:虽然系统函数readextfile()也可以读取文本文件的内容,但当文本文件比较大时,所获得的字符串就比较大,对其进行处理就会影响程序的运行程序,且会受到authorware中字符串的最大字符数的影响。所以此处使用fileio xtra中的openfile函数来打开文件,此时实际上获得的是指向该文本文件的指针。另外打开一个文件用完后最好马上关闭它。
3.拖入一个显示图标到流程线上,命名为“显示记录”,双击打开该显示图标的展示窗口,用文字工具输入如图14.15所示的文字。
图 14.15 显示图标“显示记录”中的标签
然后在“姓名:”后输入语句:{wen[j][#name]};在“性别:”后输入语句:{wen[j][#sex]};在“年龄:”后输入语句:{wen[j][#age]};在“电话:”后输入语句:{wen[j][#tel]}。
选择菜单命令modify>icon>properties,.在弹出的显示图标属性对话框中选中update displayed variables,单击ok按钮关闭对话框。
4.在显示图标“显示记录”的下方拖入一个交互图标,命名为“控制”。
⑴在交互图标“控制”的右边放置一个计算图标,命名为“上一个”,在弹出的对话框中选择button,双击新加入的计算图标上方的响应图标,在弹出的按钮响应属性对话框中按图14.16所示进行设置。设置好后单击“ok”关闭对话框
图 14.16 按钮响应图标的属性设置对话框
在计算图标“上一个”中加入以下语句:
j:=j-1
⑵在计算图标“上一个”的右边加入一个计算图标,命名为“下一个”,双击其上方的响应图标,在弹出的如图14.16所示的对话框中把选项“activex if”改为“j<geshu”。
在计算图标“下一个”中加入以下语句:
j:=j+1
⑶在计算图标“下一个”的右边加入一个计算图标,命名为“删除”。
在计算图标“删除”中加入以下语句:
--从列表中删除当前记录
xuan:=messagebox(windowhandle, "真的要删除当前记录吗?", "提醒", 292)
--6=yes, 7=no
if xuan=6 then
--从列表中删除当前记录
deleteatindex(wen,j)
--如果当前记录是最后一个记录,更改计数器的值
if j=geshu then
j:=j-1
end if
--更改列表的个数
geshu:=geshu-1
end if
⑷在计算图标“下一个”的右边加入一个群组图标,.命名为“添加”。双击群组图标“添加”打开其流程窗口。
①拖入一个擦除图标,命名为cha,在该擦除图标中要擦除的是按钮“上一个”、“下一个”、“删除”、“添加”。
②使用菜单命令insert>control>activex…依次插入四个activex控件,第一个是textbox控件,第二个是combobox控件,第三、四个是textbox控件,其中textbox控件的属性中设置属性项font为黑体12号,属性项forecolor设置为蓝色;combobox控件的属性中属性项font、forecolor也同上设置,另设置属性项style为“2-dropdownlist”。
把这四个控件图标依次命名为xm、xb、nl、dh,然后运行程序单击“添加”按钮后再暂停调整这些控件的位置和大小。
具体的属性设置和调整可以参见activex控件一章的介绍。
③拖入一个计算图标,命名为“给xb赋值”,在其中输入以下内容:
callsprite(@"xb", #additem,"男")
callsprite(@"xb", #additem,"女")
④拖入一个交互图标,命名为“选择”。拖一个群组图标到该交互图标的右边,命名为“确定”,在弹出的响应类型对话框中选择button,单击“ok”关闭对话框,双击图标“确定”上方的响应图标,在弹出的按钮响应属性设置对话框中按图14.16所示进行设置。
双击“确定”群组图标打开其流程窗口。拖入一个计算图标,命名为“增加记录”,在其中输入以下内容:
--获得四个控件图标中的值
tem:=getspriteproperty(@"xm", #text)
tem:=getspriteproperty(@"xb", #text)
tem:=getspriteproperty(@"nl", #text)
tem:=getspriteproperty(@"dh", #text)
--判断xm图标中的值是否为空,即是否输入了姓名
if tem<>"" then
--如果输入了姓名就在列表最后增加一个元素
geshu:=geshu+1
wen[geshu]:=[#name:tem,#sex:tem,#age:tem,#tel:tem]
j:=geshu
else
--否则就显示出错,并根据用户的选择给出不同的反应
xuan:=messagebox(windowhandle, "没输入姓名,不能添加记录!", "出错", 21)
-- 4=retry, 2=cancel
if xuan=4 then goto(iconid@"xm")
end if
拖一个擦除图标到“增加记录”的下方,该图标要擦除的是四个控件图标和按钮“确定”以及将要增加的按钮“取消”。
再拖入一个计算图标,命名为“返回”,在其中输入以下内容:
goto(iconid@"显示记录")
关闭“确定”的流程窗口回到“添加”图标的流程窗口,选中图标“确定”,再按ctrl+c键,然后在“确定”图标的右边单击鼠标,将粘贴指针移到此处,按ctrl+v键。将新粘贴过来的图标改名为“取消”。
双击图标“取消”打开其流程窗口,删除计算图标“增加记录”。
⑸关闭群组图标“添加”的流程窗口回到主流程窗口,.拖一个计算图标到“添加”图标的右边,命名为“退出”,在其中输入以下内容:
--创建一个fileio xtra的子对象
zil:=newobject("fileio")
--以只写方式打开文本文件
callobject(zil, "openfile", filelocation^"ziliao.txt",2)
--删除该文件
callobject(zil, "delete")
--创建一个同名文件
callobject(zil, "createfile", filelocation^"ziliao.txt")
--关闭文本文件
callobject(zil, "closefile")
--依次把列表中的值添加到文本文件中
repeat with i:=1 to geshu
str:=wen[i][#name]^" "^wen[i][#sex]^" "^wen[i][#age]^" "^wen[i][#tel]^"\r"
appendextfile(filelocation^"ziliao.txt",str)
end repeat
appendextfile(filelocation^"ziliao.txt","-1")
quit()
5.整个程序的流程如图14.17所示。
图 14.17 程序流程图
擦除图标通常可以在基本程序完成后再来设置,这样就容易设置有擦除的图标。