请教一个观念上的问题!

DDeveloper 2003-02-11 06:26:38
今日读了《高手突破》里面有一个将功能模块和界面模块分开的文章,小弟看完,觉的有点含糊,特来向各位HIGH MAN请教,谢了!

一个简单的应用程序,一个FORM,上面一个BUTTON,一个COMBOBOX,一个POPUPMENU
其中COMBOBOX的内容为1到5,当点BUTTON的时候会弹出POPUPMENU,但POPUPMENU的菜单项个数会随着COMBOBOX的内容不同而不同,比如,假设这个时候COMBOBOX的内容为3,那么点下BUTTON后出现的菜单中就有三个菜单项。
我想请问各位,这里按下BUTTON弹出POPUPMENU并且将其中的项目个数设置的过程属于哪个模块,如果是属于界面模块,是不是需要自己定义一个界面模块类还是直接将DELPHI为我们生成的框架做为默认的界面模块(由若干个类组成)?

谢谢了,学了这么长时间DELPHI,还买了人家的书,可就是没有成为高手的感觉,总结出来认为观念是高手的护身符,大家发表发表自己的意见!
...全文
51 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
DDeveloper 2003-02-11
  • 打赏
  • 举报
回复
谢谢,告诉我你的QQ吧,我想认识你,顺便问一下,怎么把分给别人啊
ehom 2003-02-11
  • 打赏
  • 举报
回复
规范的结构化程序即有利于对程序的升级、修改、维护,也有利于他人阅读

大到一个软件项目的开发,多人合作,每个人开发不同的功能模块,如果没有一种结构化的思想!项目会变的很混乱,根本没办法合作!小到一个小程序,没有一种合理的结构,整个程序的修改,维护会变的毫无头绪,别说让别人阅读,就是你自己在N年后也不一定看得明白~~

我个人在编写一段小程序,一般是这样做的,先对程序本身有个结构上的把握。把所有的全局变量申明、常量、类型说明放到一公共单元中,同一类函数和类封装到一个单元中~~

界面模块,我的理解就是人机交互,既数据的输入,输出~~~

拿你的程序来说,功能模块和界面模块分开,就是在窗体单元中只包括获得数据和输出数据的语句,而其他具体的功能实现都封装成相关的类和函数,事件驱动语句中只是调用,而不包括功能的实现!

以上面的程序为例:

TMyPopupMenu = class(TPopupMenu)
private
FComboBox: TComboBox;
procedure SetComboBox(Value: TComboBox);
published
property ComboBox:TComboBox read FComboBox write SetComboBox;
end;

var MyPopupMenu:TMyPopupMenu;

procedure TMyPopupMenu.SetComboBox(Value: TComboBox);
var
i:Integer;
FMenuItem:TMenuItem;
begin
for i:=0 to Value.Items.Count-1 do
begin
FMenuItem:=TMenuItem.Create(Self);
FMenuItem.Caption:=Value.Items.Strings[i];
Self.Items.Add(FMenuItem);
end;
Self.FComboBox:=Value;
end;
//如果只是单纯的SetComboBox是面向过程的处理方式

而事件驱动语句中只是
MyPopupMenu.ComboBox:=ComboBox1;

var p:TPoint;
GetCursorPos(p);
MyPopupMenu.Popup(p.X,p.Y);
这类语句

这样就实现了界面与数据处理的分离

这样有利于程序的维护,修改和代码的重复利用~~~
DDeveloper 2003-02-11
  • 打赏
  • 举报
回复
但我感觉像弹出菜单和确定菜单内容项个数这些东西都是界面方面的事情啊,能给俺说说为什么么
Billy_Chen28 2003-02-11
  • 打赏
  • 举报
回复
属于功能模块

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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