分享
 
 
 

Delphi随笔二

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

一、关于界面

界面对于一个程序,仿佛就是容貌对于一个人,重要性是不言而喻的。

一个程序的界面做的很漂亮是很好,但是如果界面不能很好的反映功能,那再漂亮的界面都是垃圾一堆,这方面我是有体会的,当你的大部分精力全放在如何

做一个漂亮的界面的时候,灾难就降临了,你将永远无法把程序的功能做好!如果想把程序做好,就不要考虑漂亮的界面,等到功能全部实现的时候,界面自然

就会出现,到时候美化也不迟。

这个问题上,Delphi的程序员可能遇到的最多,因为满天飞的都是漂亮的控件,这个也好,那个也好,不用真是可惜,于是找个一堆控件,一个个的试验过来

,功能全然不顾。其实用户用一个软件,不是因为界面漂亮,而是因为功能强。即使是在DOS窗口下跑的程序,只要功能强,用户照样会津津有味的使用,如果功

能弱的一塌糊涂,即使界面做成无比酷,最后的命运也是被删除。所以,写一个软件的时候,请首先从功能入手,而不是界面!

那么是不是不用考虑漂亮的界面呢?也不是。终究漂亮的界面是很吸引眼球的,但是要是按照我的意思,先弄个普通的界面,最后美化,会造成一个问题,就

是要修改很多代码,比如:

procedure TMainForm.Button1Click(Sender : TObject)

begin

FWidth := StrToInt(Edit1.Text);

FHeight := StrToInt(Edit2.Text);

FScreenSize := FWidth * FHeight;

end;

上面的代码运行的时候是没有什么问题的,但是一旦你换了一个Edit控件,或者是只是换了Edit的名字,工作量就出来了,一个两个的变化还没有问题,假如

这个Edit1.Text在代码里出现了100多个地方呢?怎么办?我的方法是把程序的界面和功能分开!代码尽量不要和具体的控件相关联。如下:

procedure TMainForm.SetParam(const Width, Height : string);

begin

FWidth := StrToInt(Width);

FHeight := StrToInt(Height);

FScreen := FWidth * FHeight;

end;

procedure TMainForm.Button1Click(Sender : TObject)

begin

SetParam(Edit1.Text, Edit2.Text);

end;

这个例子有点极端,好像是画蛇添足,但是当你大量的修改控件或者更换控件名字的时候,作用就显示出来了。到你最后想美化界面的时候,修改代码的工作

量会减轻很多。因为只要传入的参数更换一次就可以,而不是在无数的地方进行修改。

原则:界面和实现分开

二、全局变量

不要使用全局变量!!!即使设定的全局变量你认为一万年也不会变,也不要使用,因为说不定那天修改了一个功能,这个全局变量就要拆成两个变量了,那

么问题就会出现,还是通过参数传递吧。还是来个例子:

//main

const

ShowWidth = 384;

ShowHeight = 288;

...

// SetParamDlg 子窗口

SpinEdit1.Value := MainForm.ShowWidth;

SpinEdit2.Value := MainForm.ShowHeight;

上面的代码工作的不错,但是假如有一天客户说我要分辨率可变,怎么办?在const里重新加入ShowWidth1、ShowWidth2、、、?最后const的体积会越来越大

,查const的时候会累死你,那换一种方法:

//main

function ReadWidth : integer;

function ReadHeigth : integer;

SetParamDlg.Width := ReadWidth;

SetParamDlg.Height := ReadHeight;

//SetParamDlg

SpinEdit1.Value := FWidth;

SpinEdit2.Value := FHeight;

是不是比较好一点?

原则:尽量在一开始设计的时候把所有看起来目前不会变化的参数也做成动态的。

三、一个小问题

这是我在一个网站上看到的,比较有意思,而且感觉很容易犯,这里就抄袭一下了,不过这只是编程技巧,不是方法

function sum(a : array of word; count : word) : longword;

var

i : word;

begin

result := 0;

for i := 0 to count - 1 do inc(result, a[ i ]);

end;

上面的代码有问题么?乍看是没有问题,但是说不定什么时候他就当掉了。为什么?因为Count是个WORD,假如传入参数的时候Count=0会发生什么事情呢?对

了,WORD翻转了,那就等他循环FFFF次吧:)所以请注意无符号类型的操作!

累了,自己都感觉没写好,休息ing,欢迎砖头,欢迎高手来发表意见....

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有