《奥运邮集》软件代码介绍——VB6初学之友
虽然这只是一个有文字说明的图片浏览软件,但偶是在业余条件下从零开始学的,在学习中遇到的一些代码觉得对初学者很有帮助。在此发帖,希望对您有所帮助。一、为什么要学编程?
这是对每一个业余编程爱好者提出的至关重要的问题,不然您会浪费毕生中一段宝贵的时光。
2008年,北京迎来了第29届奥运会,偶将以前出版过的《奥林匹克运动会邮票集》图书改编成一部软件——《奥林匹克运动会邮票集》软件。
愿《奥运邮集》软件也为北京奥运会献上一分光和热!
[[it] 本帖最后由 jrs123 于 2008-6-7 13:50 编辑 [/it]]
[[it] 本帖最后由 jrs123 于 2008-6-7 14:11 编辑 [/it]]
[[it] 本帖最后由 jrs123 于 2008-6-7 14:12 编辑 [/it]]
[[it] 本帖最后由 jrs123 于 2008-6-9 08:25 编辑 [/it]]
曾走了一段弯路
一开始,《奥运邮集》是选用了编制成“网页”的形式。而且整整用了“一年”的时间完成的《奥运邮集》网站制作。遗憾的是,“网页”式的《奥运邮集》浏览起来,效果极不理想(至少偶是这么认为的),于是就决定推翻重来。
偶是学机械的,对“编程”也是一窍不通。于是花了很长一段时间,在“百度”上寻求,要学哪种编程语言合适......
[[it] 本帖最后由 jrs123 于 2008-6-7 14:27 编辑 [/it]] 呵呵~~看下你的结果想弄成什么样子 我在考虑是不是把这个帖子给转移掉
怎么感觉废话好多。。。 写得很好!
我支持,加油! 二、选学什么编程软件?
这也是如今在论坛上常遇到的问题。偶为之也大动过脑筋。最终结论如下:
1.VB:是初学者的首选。容易入门和学习速度快,软件界面友好。更重要的是有较好的学习氛围和人气较旺的论坛。
2. PB:是开发大型MIS及各类数据库跨平台应用的首选,属高级编程语言,有关书籍的缺乏,其基础语言也不适合初学者。
3. C++ Builder/Dephi:是唯一一套能够同时适用于开发数据库应用、网络及Web应用、分布式应用、可重用组件、系统软件、驱动程序、多媒体及游戏等所有软件的高效率开发环境。但其基础语言不够通用和开发系统软件功能不足。这也不适宜偶的选用。
4. VC:从功能上讲除了跨平台应用外什么都可开发。基础语言的普及程度高,以及其代码的执行效率高等特性、VC自带强大帮助文档和大量优质教材,VC在数据库开发工具中始终可以稳住阵角。这可以是初学者选用之一。
5. JAVA:由于其开发环境的配置较难,偶不选它。
虽然微软抛弃了VB6,但作为基本语言的一种可视化编程工具。在中国乃至全世界都有它的身影,它曾是最为流行的编程工具,到现在还占据着非常重要的地位。再往远处说,它好比交通工具中的“自行车”,若干百年后,汽车、摩托车、火车以至飞机都有可能被淘汰,但“自行车”将始终是人类生活和运动的伴侣。
虽然偶最终是选用了VB6。但在学习中还是遇到了不少困难,不然也不会在这个论坛发二百多个帖子(几乎都是提问)。而且也体会到微软为何要弃儿了。 三、偶是怎样开始学VB6的?
1、启蒙学习:第一想到的是视频教程(如:VB编程与应用(电大)29讲,在网上找,下载很方便)。作为“启蒙学习”比看书效果好。第一遍先快速浏览一下,看讲些什么内容;第二遍有意识的做些简单的笔记,记下每一讲的重点,看不懂的先跳过;第三遍就是有目的看一些对自己编软件有用的内容,能看懂最好,看不懂也没关系。
完成启蒙学习后,对VB6就有了初步的认识;
2、接触VB6软件:偶到光盘店花了几元买了一张DB的“编程高手三合一”,其中有VB6的企业版(没有“帮助系统”)文件,安装很顺利,密码是111-1111111;(提示:不要将光盘上的VB6文件复制到硬盘来安装VB6系统,它只能从光盘安装)
启动VB6后,看到的编辑版面众多的栏目和图标,偶还是一头雾水。(在这里,将偶用过的内容编了序列号在下一讲进行介绍);
3、收集文本教材:网上这方面的内容更多了,选一个比较通俗易懂的。文本教材要比视频教程的内容更加详细。这里,偶采用的学习方法和“启蒙学习”是一样,先记下有用的内容所在位置,其它先别管。 四、初识VB6
从VB6系统的初始界面,可以看到有10可见的栏目需要偶去了解的:
1、菜单条——提供了VB6绝大部分的命令和方法。偶编辑《奥运邮票》软件,只选用了其中一部分内容:
(1)文件(F)——这里面偶用到的只有二项:(见图中红三角)
“工程另存为”:一般情况下,完成一个程序编辑存盘时,会形成一个“文件”,这个文件名默认是“工程1”。当您需要将它改为其它的文件名时,如改为“奥运邮集”、“第1届”、“第2届”......等文件名时,就要到这里来改。
提示:文件名改完之后,但原来的文件,如“工程1”在文件夹中还有,可以将其删除。(实际上是删除二个对应的文件,您知道是哪两个吗?)
“生成工程1.exe(K)”:点击此栏后,会弹出一个对话框,系统问你要将这个“工程1.exe”文件放在何处。这时,你可以将“工程1”改为你需要用的文件名,如olpk、xj1、xj2......等。
提示:由此功能生成的exe文件就可以在任何一台电脑上独立运行。如偶完成的“奥运邮集.exe”、“xj1.exe”、“xj2.exe”等各届奥运邮集。 继续吧! (2)视图(V)——在正常情况下,这一栏是用不到的。但一旦图中红三角各项(即前面的系统界面图中的3-8项)没有了,或不正常时,就要从这个栏目恢复;(在偶然一次用了一个清理电脑垃圾程序后,这几项有的就消失了)
恢复的方法很简单:点击它们后,就会弹出相应的视图,只是它们的位置需要您自己去摆放;(您不妨自己试试?) (3)工程(P)——这栏的大部分项目都可以在上面图tp4的(5)中操作,这里只提二个偶用到的项目:(见“工程”图)
引用——这是偶要在软件中提供与“QQ交友”链接时要加载的“控件”。点击此项,会弹出“引用—工程1”对话框(见“引用”图),移动滑块到“windows script host object model”项,前面打上勾(见红三角)后点“确定”即完成了该控件的“加载”工作。(链接QQ交友的其它代码以后再讲)
工程1属性(E)——这是一个重要设置的项目。点击此栏,弹出“工程1—工程属性”对话框(见“工程属性”图)。当您的软件中有多个窗体时,在这个属性可以任意选定哪个窗体是首先启动的窗体(见红三角位置);如要先启软件“封面”或“进度条”等,都要在这里确定。
其它的内容《奥运邮集》软件没用到,这儿就不讲了。 (4)工具(T)——《奥运邮集》软件用的该栏的唯一功能是“菜单编器(M)”(见工具图红三角)。点击此处,弹出“菜单编辑器”的对话框(见菜单编辑器图)。
编辑举例如下:在(1)框内容输入奥运邮集(Y),然后在(2)框内输入英文代码“oy”;
当输入下一行内容时,要点击(3)位置的“下一个(N)”钮;
由于“第1届、第2届......”是“奥运邮集(Y)”菜单下面的子菜单目录,所以要点一下在(5)位置的向右“→”箭头钮(即右移一位),然后再输入第1届和代码xj1;
灰色失效栏:“第6届”奥运会因第一次世界大战而未举办,所以“第6届”应是灰色,处于“失效”状态,即将(6)位置的“有效(E)”钮前面的勾去掉。
提示:a)凡窗体菜单栏上的各项(见主页图),如奥运邮集、奥运话史、奥运与中国......等各栏编辑时都要靠最左端(与“奥运邮集(Y)”对齐);
b)如果“第1届”的下面还有子菜单,如第1页,第2页等,则通过“→”箭头钮,将它们的位置再右移一位;
完成“菜单目录”编辑后,就点确定,结果如“主页图”所示。 2、工具条——编《奥运邮集》软件主要用到工具条的三个按钮,即“保存工程”、“启动”和“结束”(见工具条图中红三角所示)。
“保存工程”钮:这是最常用,而又经常出“状况”的钮。该钮是将软件编辑结果“存盘”。但不是说每次只有在退出VB6时才去存盘的“钮”。每当编完成一段代码或调试,就要及时“点”它一下,保存前面已完成的内容。偶就是没有做到这一点,时常忘了及时“存盘”,当电脑出现意外而卡机、重启动等,未能保存前面的结果,就会前功尽弃,后悔不已。
“启动”钮——当您需要看一下自己的编辑效果时,就点此钮。如果代码有问题,无法正常运行程序,会弹出各类出错提示。所以每完成一段代码或软件一项功能时,就需要验证一下前面所编代码是否正常。所以,不要累积太多太久才去验证,错误多了,查找出错原因也不容易。
“结束”钮——就是关闭前面“启动”的程序,如果运行程序出错,必需按此钮,退出运行的程序,才能进一步调试代码。
提示:工具条上的其它“钮”有何功能,您可以点击试试。各人的习惯不同,偶只是常用以上三个钮而已。
[[it] 本帖最后由 jrs123 于 2008-3-31 13:26 编辑 [/it]] *** 作者被禁止或删除 内容自动屏蔽 *** 五、《奥运邮集》软件的“积木”项目
可以说,该“邮集”软件就是各组代码“积木”式搭建成的,为了不耽误您的宝贵时间,偶将用到的“积木”列举如下,如不合您的口胃就不必往下看了:
1、窗体页面——如何实现超长页面的结构,滚动条的代码及窗体的居中;
2、多工程结构——夏季29届,冬季20届奥运邮票集为什么不用单工程,而用多工程,各exe文件如何跳接及进度条等;
3、悬浮窗体——为了进入各届奥运邮集的操作方便,采用了“悬浮窗体”。此外,向用户提供友好界面的两种不同操作模式;
4、窗体中的邮票——如何实现邮票不变形的放大与缩小,并可以由滚轮来操作;
5、页面中的文字说明——留言式的奥运问答题、简介、趣文、标题、信息发布等不同格式的实现;
6、子窗体的结构——子窗体的几种不同结构格式;
7、实现与网站及QQ交谈的链接;
8、软件的加密——《奥运邮集1-10届》是不加密的解压直接可以运行,而夏季11届以后采用了电子注册加密方式,即一个注册码只能用在一台电脑上;
说明:7楼的系统图中(3)-(10)项不再单独讲解,而是结合到上面的“积木”一起讲,希望这样的“教学工艺”能得到您的认可。
此外,在讲解过程中偶还会向您推荐一些收集到的好用的代码及免费的软件;如抓图软件,制作图标软件,压缩图片软件及CHM帮助文件制作软件等。
本教材如有不足和错误之处,敬请各位高手批评指正。更希望软件中还未解决的问题在此论坛能得到帮助和解决。
下图为第三届奥运会软件示例;(第二届奥运会因第一次世界大战而停办)
[[it] 本帖最后由 jrs123 于 2008-6-8 08:41 编辑 [/it]] 顶。支持! 谢谢“刨子头”的支持,谢谢各位网友的支持,偶会尽力把这套教材写好,欢迎大家多提宝贵意见! 六、《奥运邮集》软件窗体页面的结构
1、邮票图片的载体——考虑到《奥运邮集》邮票的数量大,所以每个页面要尽量多的放置邮票,偶采用了如下操作和页面的结构选择:
第一步:启动VB6系统,屏幕出现如7楼所示的系统图;
第二步:点击“工具箱”上的“Frame”控件,见页面结构图中(4);此时鼠标形成十字,在Form1窗体内拖出一个“Frame1”的控件,见页面结构图中(5)。为了满足奥运邮集软件的需要,偶对“Frame1”控件的属性作如下的设置:(见Frame1属性图)
控件名称,见(1):未变更;
控件底图,见(2):各页可选不同底色;
BackColor,见(3):选0-None为边框不可见(若选1-Fixed Single为边框可见);
Caption,见(4):为空。经(3)(4)两项属性选定后,页面上就见不到此控件的名称和边框线了(见XJ7图);
Enabled,见(5):选True,即表示当鼠标移到该控件上时,鼠标会显示属性ToolTipText,见(7)上面所设置的字体,如“点击邮票放大”的提示;
Height,见(6):这可以按需要来确定此控件的高度。应注意的是此高度不能大于32000,否则运行软件时会出现“溢出”错误;
此外,所有页面的宽度Width,见(8)统一选定为15200;
提示:关于高、宽的单位将取决于“窗体Form”属性中ScaleMode的参数设定。本软件是选用默认的1-Twip;(偶曾吃过这个亏,各窗体不一致,结果各页高度和宽度都乱套了) 2、超长页面——有两个主要问题要解决;
(1)在这页面上能放多少枚邮票,能放多少条文字解说框?其实就是一个窗体上允许“控件”的极限是多少的问题?
原先设计时,每枚邮票下面都配有文字说明,但后来因控件数受到限制,也就作罢;
(2)滚动条——滚动条是超长页面必须解决的问题。其实,一般的页面也需要设置“滚动条”。为此,偶花了很多的时间和精力,并在网友的帮助下完成的这一工作。
说起来,“滚动条”在HTML网页制作上,是不成问题的问题,而在VB6上为什么这么麻烦!难道这是微软要弃它的一个原因?
到现在,偶还不知道所选用的这个“滚动条”方案是否是最佳选择,所以在这里发表也希望起到“抛砖引玉”的效果。
《奥运邮集》软件的滚动条——“抛砖引玉篇”(之一)
http://bbs.bccn.net/viewthread.php?tid=207347&extra=page%3D1&frombbs=1
将偶《奥运邮集》“滚动条”代码在此发帖,抛砖引玉,希望看到更好更简捷的方案!
条件:在窗体上放一个高32000,宽15200的Frame控件,再从工具箱拖放水平与垂直二个滚动条,各属性设置如图所示:(图内的红色所示数据是经过一番调试后得出的);
垂直滚动条VScrollBar——(1)滚动条的高(2)鼠标点击空白区时滚动条移动快慢值(见滚动条示例图)(3)与窗体左边缘距离(4)移动最大值(5)鼠标点击两端黑三角箭头,滚动条移动快慢值(见滚动条示例图)(6)与窗体顶端距离(7)滚动条的宽
水平滚动条HScrollBar——(1)滚动条的垂直方向的高(即条宽)(2)鼠标点击空白区时滚动条移动快慢值(见滚动条示例图)(3)与窗体左边缘距离(4)移动最大值(5)鼠标点击两端黑三角箭头,滚动条移动快慢值(见滚动条示例图)(6)与窗体顶端距离(7)滚动条的总宽度(长度)
[[it] 本帖最后由 jrs123 于 2008-4-12 08:29 编辑 [/it]]
窗体居中问题目前仍未得到解决(已解决了)
3、窗体的居中——就是处于不同的分辨率的屏幕,窗体都显示在屏幕的中央。看似容易的问题,但在偶的奥运邮集软件始终未能解决,多个论坛上已经发了不少有关的帖子,也有不少高手介入,至今还没有解决。在VB6中令窗体的居中常用二种方法:一是从属性StartUpPpsition中选“2-屏幕中心”(或用鼠标将窗体拖至屏幕中心,见屏幕中心属性图的红三角所示);另一种是用代码:frame.left=(form.width-frame.width)/2等代码;
在《奥运邮集》软件中这些方法却不能见效。为此,偶再次将这个问题放在《奥运邮集》软件的窗体居中问题——“抛砖引玉篇”(之二),希望能得到解决。详见:
http://bbs.bccn.net/thread-199571-1-1.html
[[it] 本帖最后由 jrs123 于 2008-4-11 20:41 编辑 [/it]]
已解决窗体居中的解决方案如下
Private Sub form_resize()
Frame1.Left = (Me.ScaleWidth - Frame1.Width) / 2 '采用这段代码窗体居中问题就解决了,
End Sub
[[it] 本帖最后由 jrs123 于 2008-6-15 13:08 编辑 [/it]]
