VB编程俱乐部问答

2016-02-19 16:31 6 1 收藏

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的VB编程俱乐部问答,过去的都会过去,迎接崭新的开始,释放更美好的自己。

【 tulaoshi.com - 编程语言 】

问:我在学习VB过程中遇到一个问题,如源代码:
  SndPlaySound(″c:MyWorkeep.wav″)
  在制成安装盘后,安装到其它机器中不同目录下就不能执行,必须安装到C:MyWork下才能执行。怎样在源代码中识别,或有更好的办法。
  答:这是初学者经常忽略的一个小问题。在打开文件、调用程序时喜欢使用绝对文件路径。其实,只要使用相对路径,就完全可以避免这个问题。在Windows下,某个程序一旦运行,除非特别指定了工作目录,一般该程序文件所在的目录就是工作目录,其他目录可以用工作目录为参照系。例如,上述问题中,程序被安装到了MyWork目录下,那么在MyWork目录下的所有文件就不必用路径全称了,可以直接SndPlaySound(″Beep.wav″)。以此类推,如果要播放C:MyWorkSoundABC.Wav文件,就可以SndPlaySound(″SoundABC.wav″)。以后无论应用程序安装在何处,都可以避免这一问题。
  
  问:VB5.0生成的Exe文件能不能在一台从没装过VB5.0的机器上运行,如不能应如何做?
  答:当然可以。你只要运行VB5带的“应用程序安装向导”就可以了。向导自动把应用程序及其依赖的DLL、OCX、DAO驱动程序等打包,形成一个安装程序。分发这个安装包就一切搞定了。
  
  问:假设表A有一字段B(文本型,8个字符),当我在表中进行输入时超过8个字符,系统就会禁止我输入,这没有什么问题。但当我在VBA中使用DAO编辑这个字段时,我遇到了麻烦。
  答:可以通过DAO提供的Recordset或TablDef对象来得到字段B的长度,然后,根据情况把你的值直接赋予它或截断后赋值。例如:
  DimdbasDatabase,rsasRecordset
  DimiSizeasInteger,SasString
  setdb=DBEngine.OpenDatabase(″XXX.mdb″)
  setrs=db.OpenRecordset(″TableA″)
  iSize=td(″FieldB″).Size′字段长度
  ……
  ′下面准备赋值
  S=″ABC中DE国FGEGHG″
  setrs=db.OpenRecordset(″TableA″)
  rs.Edit
  IfiSize=LenB(strconv(S,vbFromUnicode))Then
  rs(″FieldB″)=S′直接赋值
  Else
  rs(″FieldB″)=LeftB(strconv(S,vbFromUnicode),iSize)'截断赋值
  EndIf
  rs.Update
  ……
  请注意,VB或VBA中字符串默认以vbUnicode格式保存,所以要转换后再比较运算。请参阅函数StrConv(),参数:vbFromUnicode,vbUnicode,及Byte数组,和以‘B'结尾的函数。
  
  问:我写了个应用程序,第一次进入时想要求用户输入密码,并将密码保存(有什么方法别人看不到)。下次进入时提示输入密码。应如何完成呢?
  答:可以把密码保存到INI文件或注册数据库。一般应用级的用户是不会去看这些密码的。为了防止像你我这样的人观看,比较好的是使用如DES、RC5等加密算法或自行设计一个加密算法,这样才能够达到一个较高的密级。本人设计有一个以DES和自制加密算法混合工作的DLL,如果有兴趣,请与我联系。
  
  问:如何生成一个透明窗体?使得可以看到窗体后面的内容?
  答:用如下代码可生成透明窗体,若要显示其他信息,可做一个背景透明的图案为窗体背景。
  Me.AutoRedraw=True
  hBitmap=CreateCompatibleBitmap(Me.hdc,0,0)
  SelectObjectMe.hdc,hBitmap
  Me.Refresh
  感谢ZhuangYong提供解答
  
  问:在Access97中如何实现代码输入? 
  答:在Access97中的代码输入解决方案是我见过中的比较好的一种。Accesss97至少提供了两种场合使用的代码输入方式。
  其一、在表结构设计窗口,选中指定字段,单击“查阅”标签,改显示控件为组合框或列表框,根据情况选择“行

来源:http://www.tulaoshi.com/n/20160219/1612336.html

延伸阅读
一、什么是WindowsAPI? Windows这个多作业系统除了协调应用程式的执行、分配内存、管理系统资源…之外,她同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备…等目的,由於这些函数服务的对象是应用程式(Application),所以便称之为Ap...
VisualBasic以友好易学的可视化开发环境闻名于世,成为人们学习计算机编程的首选语言。目前,全世界大概有300多万人使用着VisualBasic语言。如果您想在这茫茫众生中出类拔萃,那么您就不得不学习API(ApplicationProgramlnterface,即Windows的应用程序编程接口)编程。不懂API,那可成不了高手。 第一节:API基础 API说到底就是一系列的...
按照百分秒格式显示时间 你可以编写下面的代码来显示时间,其中包括百分秒格式: txt = Format$(Time, "hh:mm:ss") & Format$(Timer - Fix(Timer), ".00") 注意:Timer函数不能显示百分秒格式的时间,它只能精确到50毫秒。 简易安装注册表项目 这里有一个安装程序时设置注册表项目的简单...
步骤一:首先要先把控制项给叫出来,你只要按下Ctrl T後选取WinsockControl5.0若是用VB6的就选WinsockControl6.0,这样就可以使用Winsock元件。 步骤二:再来我们必须先确定程式是作Server端还是Client端的,要先设定一些属性: Server写法:winsock1.localPort=5400(数字可以随便设) winsock1.Listen(等待连线) Client写法:winsock1....
标签: vb
(1).视窗2000服务器版 (2). .Net FrameWork SDK Beta 2 二.初步认识注册表: 首先我们来了解一下注册表的组成。在注册表中,子树是主要节点,包括健、子健和值。健就是打开"注册表编辑器"后,出现在"注册表编辑器"左窗格中的文件夹,健可以包含子健和值健。子健就是健中的健,在注册表中,子健属于树和健。值健...

经验教程

668

收藏

7
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部