熟悉和掌握菜单栏和工具栏。
运行演示菜单栏和工具栏综合实例Example3.24(PPT:JX-CS程序设计(附一:常用组件补充)-6.ppt的第25张)。
新建一个名称为project1的项目,完成如下功能。
新建一个名称为mainForm的窗体,如图1所示:
图1-mainForm窗体示意图
主要各项属性如下:
组件类型 |
组件名 |
属性名 |
设置值 |
窗体(Form) |
mainForm |
Caption |
我的浏览器 |
工具栏(ToolBar) |
Toolbar1 |
内含6个Button和1个Seperator ,具体文字和图标参见图1 |
|
菜单栏(MainMenu) |
MainMenu1 |
菜单结构、热键和快捷键如下:
|
|
浏览器(WebBrowser) |
WebBrowser1 |
|
|
图片列表(ImageList) |
ImageList1 |
加载icon目录下的所有图标 |
点击工具栏按钮的[下载],[IT],[汽车]和[音乐],则将webBrowser1分别导航至:http://download.it168.com, http://it.163.com,http://auto.163.com和 http://music.163.com
进入上述网址后,可点击[添加收藏]将网址收藏到主菜单的[收藏栏]下,也可点击[删除收藏]将网址从主菜单的[收藏栏]下删除,例如:
i. 点击了[IT] 按钮出现界面如图2所示:
ii. 此时可点击[添加收藏]按钮将该网址收藏到[收藏栏]下,如图3所示:
iii. 然后也可点击[删除收藏]按钮将该网址从[收藏栏]下删除。
提示:
WebBrowser组件在Internet面板下。
[收藏栏]的动态添加需要使用TMenuItem的create和Add方法,参考代码如下:
var tempItem:TMenuItem;
begin
tempItem:=TMenuItem.Create(MainMenu1);
tempItem.Caption:=website;
MainMenu1.Items[1].Add(tempItem);
end;
[收藏栏]的动态删除需要使用TMenuItem的delete方法,具体请参考帮助文件。
设计思路为:
可以重复添加到收藏夹,但是若把一个地址删除,则所有相同的地址都会被删除.....
总共经历了3次迭代
{第一次迭代:
此方法有个BUG ,收藏第一个,在收藏第二个,
然后返回收藏第一个(即第一个收藏2遍),
删除的时候会发现爆出数组越界错误,所以注释掉了
当然如果你不做这么离谱的收藏操作,就不会出错。 }
procedure TmainForm.ToolButton2Click(Sender: TObject);
var
n,i,j:integer;
begin
n:=N6.count;
for i:=0 to n-1 do
begin
if N6.Items[i].Caption= URLs then
begin
if i>=0 then
N6.Delete(i);
end;
end;
{第二次迭代:
下列算法没报错,但是执行效率不高,不能删除重复收藏的地址,
原因是 Find(URLs)返回的是第一次出现URLs的子菜单索引,
找到后就不会继续寻找,所以只能一个个删除}
procedure TmainForm.ToolButton2Click(Sender: TObject);
var
n,i,j:integer;
begin
i:=N6.IndexOf(N6.Find(URLs));
showmessage(inttostr(i));
if i>=0 then
N6.Delete(i);
end;
{这是第三次迭代,无BUG,一次能删除重复收藏的地址,}
procedure TmainForm.ToolButton2Click(Sender: TObject);
var
n,i,j:integer;
begin
n:=N6.count;
for i:=0 to n-1 do
begin
j:=N6.IndexOf(N6.Find(URLs));
if j>=0 then
N6.Delete(j);
end ;
end;