精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>● VB和Basic(1)>>文章连载>>VB邮件>>VB邮件(7.26)

主题:VB邮件(7.26)
发信人: aaaaaaaaa()
整理人: cobe(2000-03-12 14:41:30), 站内信件
                      编者的话
==============================================
大家好!
    欢迎大家回答问题和提出问题,同时也欢迎大家
提供有关VB、VBA和ASP的好作品。

                     版主    冯德平
                     [email protected]
=============================================
                      目  录
a Excel中简化上标和下标设置
b 在VB中使用Word的“艺术字”工具
c 防止用户编辑文本框控件中的内容
=============================================
                     VB邮件(7.26)
a Excel中简化上标和下标设置

  如果您从事编辑统计或计算文本,每当需要上标或下标时都得打开Excel 97的
"单元格格式"对话框,这可能会使您觉得乏味。遗憾的是,在工具条上没有这个按
钮,并且还不能为某些选定的做上标或下标的字符编写宏,因为在一个单元格被编
辑时宏是不能执行的。 
  有一个为Excel 97开发的加载宏的工具,也许会对您有帮助。这个加载宏是J
walk SuperSub,它显示一个对话框,使单元格中的字符很容易设置成上标、下标、
黑体、斜体和字体大小格式。您可以从http ://www.j-walk.com/ss或是http://
www.pcworld.com上免费下载,这是一个自释放文件supersub.exe。 
  当您下载完并解压之后,在Excel中选择"工具"*"加载宏",单击" 浏览"来放置
加载宏文件supersub.xla(这是放置安装程序的桌面),然后单击"确定"。 
  要使用这个新的工具,只需加亮单元格,选择"工具"*"Jwalk Supe rSub",对话
框就每次显示出单元格中的7个字符。单击箭头按钮在字符间移动,选择一个字符
,然后就用对话框控制进行设置。您也可以检查In-cell预览框来看一下效果。 


《微电脑世界》98年第12期 
        tuisly 推荐
b 在VB中使用Word的“艺术字”工具

  Word 97中的“艺术字”工具(WordArt)能创建出各种各样的文字,令人赏心
悦目。如果能在VB中使用“艺术字”该有多好啊!由于有了面向对象技术中的代
码重用思想,现在就可以轻松地实现这个愿望了。 
  代码重用主要有两种形式,即二进制代码重用与源代码重用。前者是通过创
建和使用对象来实现的;后者,顾名思义,是通过继承实现的,后者在C++语言中
被广泛使用。由于Visual Basic不支持继承,所以在VB中的代码重用主要是指二
进制代码重用,并且VB算得上是二进制代码重用的先驱。它的基本思路是:首先
将待重用的代码和数据编译为二进制文件,称为ActiveX服务器部件,然后在客户
应用程序里创建部件中类的对象来调用该部件。在VB中最为人们所熟悉的控件就
是典型的二进制代码重用的例子,每个控件都是一个ActiveX部件,在向窗体中添
加一个控件的同时就创建了该控件类的一个新实例,然后通过调用该控件的属性
、方法和事件就重用了该控件中的代码。 
  Word 97本身就是一个庞大的代码部件,也就是说,Word 97中的整个对象库
是对外开放的,它允许其他应用程序对其进行编程。换句话说,Word 97中的对象
能被其他应用程序所调用。而“艺术字”正是Word 97中的一种对象,因此可以方
便地在VB中调用它。 
  要使用“艺术字”,必须先把Word 97的对象库加入到程序中,然后创建一个
对象变量来保持对Word应用程序对象的引用,可以用两种方法创建对Word应用程
序对象的引用,一种方法是直接声明一个Word应用程序的对象变量,例如: 
  Dim w As New Word.Application 
  这种方法称为前期绑定,它速度较快;另一种方法是声明一个对象变量w,然
后把用CreateObject函数创建出的Word应用程序对象赋给w,例如: 
  Dim w As Object 
  Set w=CreateObject("Word.Application") 
  这种方法称为后期绑定,它速度较慢。在创建了Word应用程序对象后,就可
以以代码的方式像在Word中进行具体操作那样创建新文档,并在文档中加入“艺
术字”。在创建好“艺术字”之后,用剪贴板将其传给窗体。在创建Word应用程
序对象时,VB会在后台自动打开Word,因此,在程序结束时,应该先关闭Word,
其代码如下: 
  w.Quit wdDoNotSaveChanges 
  下面用一个具体的项目实例帮你轻松学习如何在VB中使用Word对象。 
  (1)启动Microsoft Visual Basic 5.0,选择“标准EXE”,创建一个新项目
; 
  (2)选择“项目”菜单中的“引用”选项,显示“引用”对话框,选中"Micr
osoft Word 8.0 Object Library"和"Microsoft Office 8.0 Object Library"两
项,单击“确定”按钮(见图1); 
   
  添加对Word对象库的引用 
  (3)将下列代码加入到Form1的“通用”|“声明”选项中: 
  Dim w As New Word.Application 
  (4)将下列代码加入到Form1的Load事件中: 
  Private Sub Form_Load() 
   w.Documents.Add.Select 
   w.ActiveDocument.Shapes.AddTextEffect(0,"艺术字","隶书",48#,-1,0,
183.75,70.5).Select 
  End Sub 
  这里显示的字样是隶书的“艺术字”三个字,你可以根据自己的喜好来改变
字体(如宋体、楷体等)以及改变字样; 
  (5)将下列代码加入到Form1的Click事件中: 
  Private Sub Form_Click() 
   w.Selection.ShapeRange.TextEffect.PresetTextEffect = Int(Rnd(1) *
 30) 
   w.Selection.ShapeRange.TextEffect.FontName = "隶书" 
   w.Selection.Copy 
   Picture = Clipboard.GetData() 
  End Sub 
  (6)将下列代码加入到Form1的Unload事件中: 
  Private Sub Form_Unload(Cancel As Integer) 
   w.Quit wdDoNotSaveChanges 
   Set w = Nothing 
  End Sub 
  (7)在窗体上放置一个按钮,其Caption属性为"Exit",并在它的Click事件中
处理退出: 
  Private Sub Command1_Click() 
   End 
  End Sub 
  (8)运行程序后,当鼠标在窗体上单击时,会随机地显示出一种“艺术字”字
型(Word中共有30种内建“艺术字”字型),下图分别给出了隶书与宋体两种不
同字体的字样为“艺术字”的几种情形。 
  在VB窗体中显示的Word中的“艺术字”,左面是隶书,右面是相应的宋体 

  同样,由这个实例可以举一反三,即我们也可以在VB中使用Excel的图表、P
owerPoint的幻灯片,因为Office 97中的产品都是代码部件,这些产品中的对象
库都是可以被其他应用程序调用的,所以只要了解这些对象的外部接口(属性、
方法和事件),就可以方便地调用这些对象了。PCC 
  .郭虹 
  (作者地址:河南省郑州市1001信箱306号 450002 收稿日期:1998.12.29)
 
《电子与电脑》99年第3期  
                 lixianlin 推荐

c 防止用户编辑文本框控件中的内容  
 
-Visual Basic 中 的 文 本 框 控 件 允 许 用 户 在 其 中 键 入 文 本, 
以 便 在 程 序 中 使 用。 相 反, 程 序 员 可 能 会 希 望 显 示 一 些 
文 本 但 不 希 望 用 户 编 辑 该 文 本。 本 文 介 绍 了 如 何 创 建 只
 读 的 文 本 框 控 件 的 内 容。 

使 一 个 文 本 框 控 件 只 读 

 

---- 在Visual Basic 中, 如 果 文 本 框 控 件 的MultiLine 属 性 设 置 
为True, 文 本 将 会 自 动 地 换 行 到 下 一 行。 另 外, 如 果 文 本 
框 控 件 的ScrollBars 属 性 设 置 为3-Both( 或 者1-Vertical, 或 者2-
Horizontal), 用 户 还 能 够 滚 动 控 件 中 的 内 容。 

---- 程 序 员 要 想 实 现 文 本 框 控 件 中 的 文 本 不 可 编 辑, 可 
将 文 本 框 控 件 中 的 内 容 设 置 为 只 读 状 态, 这 可 以 通 过 使
 用Microsoft Windows 应 用 程 序 编 程 接 口(API) 的SendMessage 函 数
 来 实 现。 SendMessage 函 数 可 以 用 来 发 送 一 个EM_SETREADONLY 消
 息 到 文 本 框 控 件 中, 这 将 使 文 本 框 控 件 变 为 只 读。 

---- 要 在 程 序 中 使 用 该SendMessage 函 数, 需 要 将 如 下 的 声 明
 语 句 包 含 在 项 目 的 通 用 声 明 部 分 中( 注 意 该 声 明 语 句 需
 要 书 写 在 一 行 内): 

---- Private Declare Function SendMessage Lib "user32" Alias "SendMess
ageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer
, ByVal lParam As Long) As Long 

---- 该SendMessage 函 数 需 要4 个 参 数, 如 下 所 示: 

---- .hwnd 一 个 长 整 数 值, 它 包 含 文 本 框 控 件 的 句 柄。 

---- .wMsg 一 个 长 整 数 值, 它 包 含 被 发 送 的 消 息, 在 这 个 例
 子 里, 是EM_SETREADONLY。 

---- .wParam 一 个 整 数 值, 如 果 它 为True, 则 控 件 被 设 置 只 读
 标 记, 如 果 它 为False, 则 删 除 控 件 的 只 读 标 记。 

---- .lParam 一 个 长 整 数 值, 它 应 该 被 设 置 为0(EM_SETREADONLY
 不 使 用 它)。 

---- 在 程 序 运 行 了 此SendMessage 函 数 之 后, 将 返 回 一 个 长 整
 数 值, 指 明 调 用 成 功( 返 回 值 非0) 或 是 失 败( 返 回 值 为0
)。 

样 例 程 序 

 

---- 该 程 序 显 示 了 如 何 防 止 用 户 编 辑 一 个 文 本 框 控 件 中
 的 内 容。 

---- 1. 在Visual Basic 中 开 始 一 个 新 的 工 程, 采 用 缺 省 的 方 
法 建 立Form1。 

---- 2. 将 如 下 的 常 量 和 声 明 语 句 添 加 到Form1 的 通 用 声 明 
部 分 中( 注 意 该 声 明 语 句 需 要 书 写 在 一 行 内): 

---- Private Declare Function SendMessage Lib "user32" Alias "SendMess
ageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer
, ByVal lParam As Long) As Long 
---- Const WM_USER = &H400 
---- Const EM_SETREADONLY = (WM_USER + 31) 

---- 4. 在Form1 上 添 加 一 个 文 本 框 控 件, 采 用 缺 省 的 方 法 建
 立Text1。 将 其MultiLine 属 性 设 置 为True, 并 且 将 它 的ScrollBar
s 属 性 设 置 为3-Both。 

---- 5. 在Form1 上 添 加 一 个 命 令 按 钮 控 件, 采 用 缺 省 的 方 法
 建 立Command1。 

---- 6. 将 如 下 的 代 码 添 加 到Command1 的 单 击 事 件 中: 

Private Sub Command1_Click()
    Dim RetVal As Long
    RetVal = SendMessage(Text1.hwnd, EM_SETREADONLY, True, ByVal 0&)
End Sub

 

---- 通 过 按 下F5 键 来 执 行 样 例 程 序。 在 文 本 框 控 件 中 键 入
 一 些 文 本, 可 以 使 用 水 平 和 垂 直 滚 动 条 来 滚 动 文 本, 还
 可 以 改 变 文 本 的 内 容。 单 击 命 令 按 钮, 用 户 仍 然 可 以 使
 用 滚 动 条 或 是 光 标 键 来 查 看 文 本 框 控 件 的 内 容, 但 是 不
 能 编 辑 它。   

            刘一斯  推荐 

=============================================
                     VB问答
问题部分:
回答部分:
=============================================
                     说  明
    凡未署名的文章是网友推荐的作品,如果原作者
看到自己的文章未署自己的名字,请与版主联系。
    如要转载本VB邮件请与原作者联系,不是版主的
文章请不要署版主的名字,但请注明:
摘自:  goodvbhome.yeah.net
    谢谢大家的合作。
====================================================================
欢迎订阅VB免费邮件:
订阅地址  http://server.com/WebApps/mail-list-subscribe.cgi?id=16852  

====================================================================  

如果您觉得这个邮件列表好的话,请告诉您的朋友。  
====================================================================
欢迎投稿  [email protected]  
====================================================================  

网易上的主页地址:http://www4.netease.com/~aaaaaaaaa 
本网站主页镜像地址:goodvbhome.yeah.net
广东视灵通:http://personal.gz168.gnet.gd.cn/vbok/
====================================================================

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.46.47]

[关闭][返回]