| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 17142 人关注过本帖, 3 人收藏
标题:《奥运邮集》软件代码介绍——VB6初学之友
取消只看楼主 加入收藏
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
谢谢“刨子头”的支持,谢谢各位网友的支持,偶会尽力把这套教材写好,欢迎大家多提宝贵意见!
2008-04-03 10:13
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
六、《奥运邮集》软件窗体页面的结构
    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;(偶曾吃过这个亏,各窗体不一致,结果各页高度和宽度都乱套了)

页面结构.JPG (54.25 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


Frame1属性.jpg (24.07 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


xj7.gif (116.29 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2008-04-04 18:06
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
2、超长页面——有两个主要问题要解决;
    (1)在这页面上能放多少枚邮票,能放多少条文字解说框?其实就是一个窗体上允许“控件”的极限是多少的问题?
    原先设计时,每枚邮票下面都配有文字说明,但后来因控件数受到限制,也就作罢;
    (2)滚动条——滚动条是超长页面必须解决的问题。其实,一般的页面也需要设置“滚动条”。为此,偶花了很多的时间和精力,并在网友的帮助下完成的这一工作。
    说起来,“滚动条”在HTML网页制作上,是不成问题的问题,而在VB6上为什么这么麻烦!难道这是微软要弃它的一个原因?
    到现在,偶还不知道所选用的这个“滚动条”方案是否是最佳选择,所以在这里发表也希望起到“抛砖引玉”的效果。
     《奥运邮集》软件的滚动条——“抛砖引玉篇”(之一)
    https://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]]

水平滚动条属性设置.jpg (21.86 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


垂直滚动条属性设置.jpg (22.37 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2008-04-08 17:59
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
窗体居中问题目前仍未得到解决(已解决了)
3、窗体的居中——就是处于不同的分辨率的屏幕,窗体都显示在屏幕的中央。看似容易的问题,但在偶的奥运邮集软件始终未能解决,多个论坛上已经发了不少有关的帖子,也有不少高手介入,至今还没有解决。
    在VB6中令窗体的居中常用二种方法:一是从属性StartUpPpsition中选“2-屏幕中心”(或用鼠标将窗体拖至屏幕中心,见屏幕中心属性图的红三角所示);另一种是用代码:frame.left=(form.width-frame.width)/2等代码;
    在《奥运邮集》软件中这些方法却不能见效。为此,偶再次将这个问题放在《奥运邮集》软件的窗体居中问题——“抛砖引玉篇”(之二),希望能得到解决。详见:
          https://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]]

窗体居中属性.jpg (18.68 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2008-04-11 20:40
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
本讲小结:
本讲“《奥运邮集》软件窗体页面的结构”小结:欢迎交流
   应知:(1)如果窗体内的控件超出一个屏幕高度,就需要设置滚动条代码与模块,同时应能实现鼠标滚轮移动页面;
         (2)在不同屏幕分辨率下,页面居中的设置方法;
   应会:(1)实现超长页面高不能超过32000,完成滚动条设置,还需要一组代码和一个模块;
         (2)合理设置水平和垂直滚动条的属性,各页面ScaleMode的参数设定要一至(如都选1-Twip);
   实践:请您也完成一个超长页面,上面放一些图和控件,设置一组滚动条,看您设计的工程否正常运行?

[[it] 本帖最后由 jrs123 于 2008-6-15 13:09 编辑 [/it]]

滚动条XJ8.jpg (128.84 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2008-04-12 14:38
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
七、《奥运邮集》软件的多工程结构
如果将夏季29届,冬季20届所有邮票都集中在一个工程内,会不会设计简单,操作方便呢?偶当初就是这样的思路,结果却行不通。
    1、单工程带来的问题——由于超长页面上的控件数量受到限制,所有近万枚的奥运邮票及众多的文字说明就要分布在几百个窗体上。偶进行了实践,在一个工程内的窗体数量几百个可以不受限制制,但软件启动的速度至少在二三分钟以上(这又是VB6的一个致命的弱点!),让人无法接受,所以这一方案很快就放弃了。
    此外,启动速度慢的原因,除了“机构”庞大之外,滚动条方案所采用的模块,每个窗体都要配一组代码,占用了大量的资源;加上未采用数据库,图片也占用了大量的空间,导致软件启动速度缓慢。
    有关滚动条的模块代码详见
    [url]http://bbs.bccn.net/viewthread.php?tid=207347&extra=page%3D1&frombbs=1[/url]

[[it] 本帖最后由 jrs123 于 2008-4-24 18:54 编辑 [/it]]
2008-04-18 08:31
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
网上收集“关于窗体”的几个小程序:
在制作软件时,网上收集了不少小程序,今日整理一下,先将“关于窗体”的选出几个向大家介绍,希望对您有用;
1、打开窗体的各种方式:从左到右、从右到左、从上到下、左上到右下、右上到左下、从下到上、左下到右上以及中间到四周等。
    2、窗体定时自动关闭;
    3、鼠标滚动轮改变窗体大小;
    4、控件大小随窗体变化;
    5、右下角弹出小窗口并自动关闭;
    6、带圆弧角的窗体(圆弧大小可调);
    7、Realone不可改变大小窗体;
    8、Realone可改变大小窗体
    9、类同XP导航窗体;
   10、百叶窗方式打开窗体;
   11、窗体居中(本教材“抛砖引玉之二”的窗体居中代码就是从这里找到的);
   12、漂亮的透明窗体;
   13、无边框窗体;  
   14、窗体分割为左右两边;

关于窗体.rar (220.85 KB) 关于窗体的几个小程序

2008-04-19 18:07
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
多工程结构的选用
这几天忙于在软件内增加视频内容,推迟了几天发帖;
    2、多工程结构的选用——就是按每一届奥运会邮集作为一个工程。为此,多工程要解决如下几个问题:
    (1)每个工程内各页面的转接;
     ***主页面间的转接——在工程内从一个主页面要转到forma2的页面时,就用下面代码:
     Unload forma2 '先关闭再打开,为什么要这样做您知道吗?
     Load forma2
     forma2.Show
     ***主页面向副页面转接——如点击主页面上的奖牌图“image1”,就弹出xj18a01a副页面,用下面代码:
    Private Sub Image1_Click()
    Load xj18a01a
    xj18a01a.Show
    End Sub
    ***主页面与网站的链接——当您点击主页面左上角的《奥运邮集》网站图标时,就会进入IE系统的奥运邮集网站;
    有两个链接方案:
    第一个方案:Shell "explorer.exe http://www.——这个方案的优点是代码简单,但不足的是打开的网站网页是处于最小化状态;
    第二个方案:需要二段代码和一个属性设置——这个方案的优点是打开网站的网页是处于最大化状态。缺点是代码多,设置稍烦锁。
    第一段声明:
    Private Declare Function ShellExecute Lib "shell32.dll" Alias _
    "ShellExecuteA" (ByVal Hwnd As Long, ByVal lpOperation As String, _
    ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Private Const SW_SHOW = 5
    第二段转接代码:
    Dim web As String '链接网站用,网址放在Combo1的属性Text中
  web = Combo1.Text
  ShellExecute 0&, vbNullString, web, vbNullString, vbNullString, 0
   提示:被链接的网站网址要放在网址放在Combo1的属性Text中

xj29hj.gif (117.92 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


弹出副页面.jpg (37.15 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2008-04-28 13:44
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
副页面的奖牌榜
副页面的奖牌榜

[[it] 本帖最后由 jrs123 于 2008-4-28 13:51 编辑 [/it]]

副页面.JPG (107.91 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


2008视频1.gif (50.82 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


2008视频2.gif (65.55 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


2008视频3.gif (76.18 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2008-04-28 13:46
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
(2)相邻exe工程之间的转接;
各届邮集都是exe格式的文件,它们之间的转换有两个途径;
    ***第一个途径——任一届奥运邮集的首页和尾页,都有转到前一届或后一届的按钮来完成转换。
    由于转一另一届是需要打开exe格式的文件,所以需要用下面的特殊的代码:
    Shell "rundll32.exe url.dll,FileProtocolHandler " & App.Path & "\XJ9.exe", vbMaximizedFocus
    注:XJ9.exe为将被打开的新一届邮集。
    提示:采用这种从一个exe文件转换一另一个exe文件时,原来的已打开的文件仍在进程中,而未被关闭;而采用下面的方法,打开一个新的exe文件后,就会关闭前面所有的已打开文件。
    这一段代码看似简单,但偶也是在很多论坛上才求教得到的,也曾来之不易。如果您今后设计软件遇到exe文件之间的转换或许能用得上,如果您有更好的代码也希望在这里交流。
    ***第二个途径——通过屏幕左侧的悬浮窗体上的导航钮(见图)。这一方式转换的特点是,打开某一届后,就会自动关闭掉前面其它已打开的各届。实现这一方式的代码举例如下:(有一段声明)
Private Declare Function FindWindow Lib "USER32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "USER32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Const PROCESS_TERMINATE = 1
Private Sub Command3_Click()
Dim Ltem As Long
Dim LpID As Long
Dim hLong     As Long
Dim strWinName     As String
strWinName = "第1届" ‘被关闭的所有届都要有相应这样的一组代码;
hLong = FindWindow(vbNullString, strWinName)
If hLong Then
GetWindowThreadProcessId hLong, LpID
Ltem = OpenProcess(PROCESS_TERMINATE, False, LpID)
TerminateProcess Ltem, 0
hLong = 0
End If
strWinName = "第2届"
hLong = FindWindow(vbNullString, strWinName)
If hLong Then
GetWindowThreadProcessId hLong, LpID
Ltem = OpenProcess(PROCESS_TERMINATE, False, LpID)
TerminateProcess Ltem, 0
hLong = 0
End If
Shell "rundll32.exe url.dll,FileProtocolHandler " & App.Path & "\xj3.exe", vbMaximizedFocus
End Sub
提示:由于目前夏季奥运会有29届,所以打开一届,就要设置关闭其它28届的28组代码,一个程序代码重复而又庞大。不知是否还有更好的代码?

[[it] 本帖最后由 jrs123 于 2008-5-3 19:57 编辑 [/it]]

悬浮窗.JPG (22.21 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2008-05-03 15:50
快速回复:《奥运邮集》软件代码介绍——VB6初学之友
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028820 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved