探讨关于界面与代码分离

iamduo 2004-04-17 06:08:15
本人最近头痛于一个windows代码问题。
就是在form所属unit中代码也太多了。
于是想到了有关界面与代码分离的话题,想请大伙儿探讨探讨。
代码和界面如何分离?
当代码中含有界面里的控件时分离好像就没有想象中那么简单了。
...全文
37 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
bxh2dai 2004-04-19
  • 打赏
  • 举报
回复
如何分离??能真正分离吗?
S.F. 2004-04-19
  • 打赏
  • 举报
回复
如何分离??能真正分离吗?UI的控制部分和逻辑处理部分怎么分离??我也不懂,关注
dbExpress 2004-04-19
  • 打赏
  • 举报
回复
楚人无衣 2004-04-19
  • 打赏
  • 举报
回复
在另开unit里写成类吧,在form命令里调用,这可不是个轻松的事儿
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2932/2932964.xml?temp=.259411
cll007 2004-04-19
  • 打赏
  • 举报
回复
N言难尽呀
http://expert.csdn.net/Expert/topic/2932/2932964.xml?temp=.259411
alphax 2004-04-19
  • 打赏
  • 举报
回复
空中居士 2004-04-19
  • 打赏
  • 举报
回复
数据和代码紧密结合好像是面向对象编程的实质;
如果你嫌一个form的代码较多,可以多分几个,有些form可以不显示,只是用来归类。
web700 2004-04-19
  • 打赏
  • 举报
回复
说起来容易做起来难
可能是水平不行..
FlyAnyWhere 2004-04-19
  • 打赏
  • 举报
回复
看看设计模式行里面的command模式
maycy 2004-04-19
  • 打赏
  • 举报
回复
.net
iamduo 2004-04-19
  • 打赏
  • 举报
回复
我一向希望自己的程序能做到界面unit 与 代码unit 相分离。
但是,事实上,一般界面unit 中还是很乱。
比如,Label.Caption Edit.Text的赋值都是在界面unit 中完成。
真正的所谓归类为“代码”的真是不怎么多。
所以,看看大家,在对待这个话题时,都是怎样来处理个中的关系。
ImFool 2004-04-19
  • 打赏
  • 举报
回复
不要走极端,跟界面关系密切或者只是几行的的代码分离出来反而会让自己以后觉得很乱。
跟界面没直接关系的,比如纯计算问题、数据库稍复杂的操作当然分离出来比较好。

不管怎么分离,界面单元中总是会有一堆OnClick之类,自动生成的框架就要占好多地方。如果本来代码就简单,重复就重复吧、该粘贴就粘贴吧。分离出来也还是会占那么多地方,虽然实际代码就一个调用。
iamduo 2004-04-19
  • 打赏
  • 举报
回复
强烈抗议!!!
可以关注,可以顶。
但是,不准“建议放弃”类话题。
我不会给这种贴子一分的!
请勿贴!
不会不要逃避,应该虚心看高手们和有志者们的谈论。
exia 2004-04-19
  • 打赏
  • 举报
回复
我的看法是,能写成函数和类的,决不让CODE夹杂在事件相应中,一个程序肯定要公用UNIT
fj218 2004-04-18
  • 打赏
  • 举报
回复
界面和代码分离很必要,即容易升级,又便于管理。我认为代码部分不能有任何控件语法。
bigery 2004-04-18
  • 打赏
  • 举报
回复
顶!
hwz_119 2004-04-18
  • 打赏
  • 举报
回复
可以写个公共的代码单元
我觉着界面与代码分离很必要,既可以养成好的编程风格,又方便了以后对系统的升级,以后改动界面时就不用大段的复制粘贴了。
miky 2004-04-18
  • 打赏
  • 举报
回复
你可以把控件指针当参数传递。例如:

FGrid: TStringGrid;
FTreeView:TTreeView;

Create的时候就这样
MyClass.Create(AGrid:TstringGrid,ATreeView:TTreeView);
begin
FGrid := AGrid;
FTreeView := ATreeView;
.........
end;

通过 FGrid.Cells[i,j] := MyString;
MyNode := FTreeView.Selected 来对界面元素进行操作。
SydPink 2004-04-18
  • 打赏
  • 举报
回复

procedure Draw(ACanvas:TCanvas);
begin
ACanvas.draw();
end;
加载更多回复(3)

5,392

社区成员

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

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