怎么样实现对数据库的在线修改
本文将介绍如何使用Visual BASIC(以下简称VB)编写具有“所见即所得”功能的Windows程序。
一、方法概述
为了在屏幕上模拟打印效果,我们使用VB的一个窗体来模拟一张打印纸。在VB中,每一个窗体都有一个PrintForm方法。使用PrintForm方法可以把一个窗体的内容完全一样地通过打印机打印出来。由于PrintForm方法在打印窗体内容的时候,对于窗体内的文字和图形都是同样地打印。所以通过简单的编程,使用PrintForm方法可以非常方便地实现图文混合打印。
①确定用户可以使用的显示与打印双功能字模
“所见即所得”程序中用户可以使用的字模必须是同时支持Windows的显示设备和打印设备的双功能字模。只有这些字模才可以在屏幕和打印机上产生一样的效果。因此,程序必须首先获得这些显示与打印双功能字模的名称。
②在屏幕上设置“纸张”窗体的大小
通过读取Windows打印管理器纸张尺寸的设置,在VB里建立一个与打印纸具有同样尺寸比例关系的窗体,作为屏幕上模拟打印效果的“纸张”,让用户在屏幕上就可以看到文字和图形在打印纸上的位置分布。
③用户在屏幕“纸张”上模拟打印效果
在模拟打印的窗体中通过使用Print、Line、Circle等方法绘制文字和图形的,还可以使用图形框、Graph.VBX、OLE等控件绘制图形、统计图表、公式、艺术字型等。
④将屏幕“纸张”的内容输出到打印机
使用窗体的PrintForm方法把第③步所绘制的文字和图形输出到打印机,得到和屏幕显示一模一样的打印拷贝,实现“所见即所得”。
二、打印机字模和显示器字模的精确匹配
Windows的字模分为两类:打印机字模和显示器字模。各种TrueType字模(如宋体、黑体字模)都是显示与打印双功能字模。其他的非TrueType字模就只能用于显示或打印。
如果在模拟打印窗体的文字输出中使用了只能用于显示的字模,那么当PrintForm方法执行的时候,Windows就只能在打印字模中查找一个尽量和这个显示字模字型匹配的字模来进行打印。这样将导致得到的打印拷贝与屏幕显示不一致。
为了使程序获得“所见即所得”的能力,必须在窗体输出中使用显示与打印双功能字模。因此,程序获得“所见即所得”能力的一个关键是:确保在屏幕输出中只使用显示与打印双功能字模。
在VB中提供了两个全局对象:屏幕对象Screen和打印机对象Printer。两个对象都提供了FontCount属性和Fonts属性。FontCount属性提供了可使用字模的数量,而Fonts属性提供了可使用字模的名称。在程序中,我们可以取出Screen对象和Printer对象所共同拥有的字模,这些字模就是所有的显示与打印双功能字模。
具体的程序如下:
首先设置一个列表框,取名List1,然后调用下面的GetFont函数,在List1中就存放所有显示与打印双功能字模的名称。
Sub GetFont()
For i=0 To Screen.FontCount-1
For j=0 To Printer.FontCount-1
If Screen.Fonts(i)=Printer.Fonts(j) Then
List1.Add1tem (Sereen.Fonts(i))
End If
Next j
Next i
End Sub
三、窗体大小和纸张尺寸的匹配
为了在屏幕上可以清楚地看到文字和图形在打印纸上的位置和大小关系,必须使VB显示窗口的大小比例和打印纸张的大小比例是一致的。打印纸张的大小可以使用Printer对象的Width和Height属性来获得。根据获得的属性值可以设置VB显示窗体的大小比例,使之合乎纸张的比例大小。
下面的程序中有一个变量Size,其取值的范围为0-1。它的作用是控制打印图形的大小。当Size的值为1的时候,打印图形将和Windows设定的纸张一样大小。具体程序如下:
Sub Form_Load ()
Dim SizeAS INTECER
Size=0.95
Form1.Height=Printer.Height*Size
Form1.Wdth=Printer.Width*Size
End Sub
四、模拟打印和打印输出
下面的一段程序演示了在显示窗体上模拟打印文字和图形的方法,以及使用PrintForm把显示窗体中的文字和图形输出到打印机的方法。
注意的是:为了使用PrintForm方法,必须把显示窗体的AutoRedraw属性设置为True。
由于PrintForm方法打印窗体的内容是使用bit-by-bit的拷贝方法,因此在窗体里的所有文字和图形都可以被原样打印出来。作为例子,我们可以使用OLE控件来显示Word公式编辑器里编辑的公式,使用Picture和Graph控件来显示图形和统计图。然后使用PrintForm方法将它们打印出来。
具体程序如下:
Sub PrintOnScreen ()
Form1.Scale(0,0)-(100,100) ' 设置坐标
Form1.Line(100,0)-(0,100) ' 显示画线
Form1.CurrentX=0
Form1.CurrentY=0
Form1.FontName="宋体" ' 输出文字
Form1.FontSize=20
Form1.Print "模拟打印"
Picture1.Picture=LoadPicture("setup.bmp") '输出图形
Form1.PrintForm ' 将显示窗体的内容送到打印机
Printer.EndDoc ' 开始打印
End Sub
-
佚名2024-11-15 19:31:07
问Oracle 远程数据库和本地数据库名字一样,该如何连接数据库
答在tnsnames.ora文件里,你怎么配置的本地起的名字 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS...
-
佚名2024-11-15 23:24:10
问数据库,数据库管理系统,数据库系统,这三个分别是什么意思?并举个实例。
答数据库简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作,库名可以自己定义如高一八班;数据库管理系...
-
佚名2024-11-15 21:34:13
问数据管理在文件系统和数据库系统阶段各有那些特性,你认为数据库系统的实现目标时
答1、文件系统阶段:特点数据的管理者:文件系统数据面向的对象:某一应用程序数据的共享程度:共享性差,冗余度大数据的独立性:独立性差数据的结构化:记录内有结构,整体...
-
佚名2024-11-15 04:21:45
问SQL Server 数据库文件怎么改名字呢?
答选中 你要操作的数据库 右键 ->所有任务-分离知道你要修改的数据库所在文件夹 修改名称然后附加数据库
-
佚名2024-11-15 08:00:00
问数据库中怎样声明变量?
答Declare @test nvarchar(1000) Declare @test2 int这个是声明一个test变量 类型是nvarchar类型 长度为10...
-
佚名2024-11-15 08:00:00
问sql 数据库修改字段名的语句,给个例子
答你好:alter table test rename column aa to bb;大小写一样... 修改表字段名称 delete语句 修改字段长度 sql ...
-
佚名2024-11-15 08:00:00
问对sql视图进行修改时是否会改变基本数据表数据
答会的,修改视图会修改底层基表的数据,另外视图一般只做查询不做增删改的操作。视图的目的通常是从优点考虑的,一个是安全(敏感字段),第二是高效,第三是可以定制化数据...
-
佚名2024-11-15 08:00:00
问怎样用VB对access数据库 进行 数据 添加
答两种办法,一种是 用SQL,另一种是ADO1、用SQL添加数据:insert into 表名(字段1,字段2,字段3) values(值01,值02,值03)例...
-
佚名2024-11-15 08:00:00
问android中怎样在sqlite中创建一个数据库然后在该数据库中创建两个表?
答public class DBOpenHelper extends SQLiteOpenHelper { private static final S...
-
佚名2024-11-15 08:00:00
问c#多线程访问数据库实例
答给你个思路吧。你先用多线程输出1和2,一个线程输出1,一个线程输出2。当你能很熟练控制输出1和2的位置。那么多线程访问数据库就很简单了。因为你不同线程调用不同的...
风水
起名
网名
- 1 带弃的网名
- 2 干净女网名
- 3 网名女生赵丽颖
- 4 不将就的网名是情侣吗
- 5 有关歌名的qq网名
- 6 有什么好听的qq网名女
- 7 惊恐网名
- 8 两字心酸网名
- 9 提醒警示自己的网名
- 10 qq昵称含蛋字
说说
- 1 幽默的女生签名
- 2 小学老师说说
- 3 qq空间说说红人qq
- 4 说说尾巴不需要root
- 5 形容雪的美景说说
- 6 人这一生很短暂说说
- 7 形容头发长得快的说说
- 8 停下匆忙的脚步说说
- 9 天枰座专属说说
- 10 一个男人喜欢一个女人的说说