📄 9912.txt
字号:
MouDrv 2, 0, 0, 0 '隐藏鼠标光标
*****************************************************
*****************************************************
Delphi的竖排标签
作者:赖立谦
大家知道用Deiphi开发应用程序时标签是必不可少的,但是Deiphi
提供的Label构件只支持横排方式的标签,而不支持竖排方式标签。
怎么办?
编写一段简单的函数就可以把标签从横排变成竖排。因为中文字
符集是用两个字节表示一个字符的,所以应在字符串的每两个字节之
间加入回车换行符。这个函数的参数是一字符串,返回值是在中文字
符之间添加了回车换行符的一个新的字符串。
下面就举例说明:我们以竖排方式显示一首诗。
新建一工程。
首先在implementation部分定义一个字符串数组常量poemary,
该数组的每一个成员顺序存放了诗中的一句。
const
poemary: array[0..6] of string = ('游子吟', '慈母手中线',
'游子身上衣', '临行密密缝', '意恐迟迟归', '谁言寸草心',
'报得叁春晖');
随后,在implementation部分加入字符串转换函数,代码如下:
function convertstring(source:string):string;
var
i,j:integer;
a,b:array[0..50] of char;
begin
StrPCopy(a, source) ;
j:=0; i:=0;
while (a[j] <>#0) do begin
b[i]:=a[j];
if (j mod 2=1)and(j>0) then begin
Inc(i); b[i]:=#13;
end;
Inc(j); Inc(i);
end;
b[i-1]:=#0;
result:= strpas(b);
end;
最后添加Form1的OnCreate事件。注意:要在uses子句中添加单
元名称stdctrls。
procedure TForm1.FormCreate(Sender: TObject);
var
labary:array[0..6] of Tlabel;
i:integer;
begin
for i:=0 to 6 do
begin
labary[i]:=Tlabel.Create(self);
labary[i].parent:=self;
labary[i].caption:=convertstring(poemary[i]);
labary[i].top:=(form1.Height-labary[i].height) div 2;
labary[i].left:=10+i*33;
end;
end;
此程序在Windows 95,Delphi3.0环境中运行通过。
*****************************************************
基于JPEG格式的图像数据库实现
作者:江明富
用VFP5.0开发多媒体应用时,存储图像通常使用的是BMP格式。
然而,由于幅面较大的BMP图像存储时占用存储空间较大,对于要管
理大量图像的应用,硬盘空间的占用将成为一个大问题。在众多图像
文件格式中JPEG格式压缩率最高,用JPEG格式将图像压缩20倍后,图
像仍然很清晰。VFP5.0能处理JPEG图像吗?回答是肯定的,我们可以
利用Wang图像控件达到目的。
Wang图像控件由Wang图像编辑控制、图像扫描控制、图像管理控
制及图像缩略图控制组成,它是一组Windows 95自带的控件,选择安
装Windows 95附件中的映像即可安装该控件。
Wang图像控件提供了图像扫描、图像打印、图像缩放、图像旋转、
在图像上加标签、生成缩略图、图像文件管理等功能,并且这些功能
的实现都可编程控制。这些控件的详细资料请参看Windows 95目录下
的Help\Wangocxd.hlp。
一、图像的扫描输入、存储、显示
创建“表单1.SCX”(见图)。插入Wang图像扫描对象imgscan的方
法是,在表单中插入“OLE容器控件”,出现“Insert Object”窗口
后,选“Insert Control”,在“Object Type”列表中选择“Wang
图像扫描控制”,再点“OK”按钮;插入Wang图像编辑对象imgedit1,
将其AutoRefresh属性置为.T.,ImagePalette属性置为3,ImageControl
属性置为imgscan;再插入其它对象(按钮名称:左旋90度:btnleft,
扫描:btnscan,保存:btnsave,退出:btnexit),并置
text1.value=100,btnsave.enabled=.f.
btnscan.click过程为:
if thisform.imgscan.scanneravailable()&&如果安装了扫描
仪thisform.imgscan.DestImageControl=′imgedit1′&&扫描到
imgedit1thisform.imgscan.scanto=0thisform.imgscan.startscan
&&开始扫描if thisform.imgscan.statuscode=0&&扫描成功
thisform.btnsave.enabled=.t.&&允许保存endif
elsemessagebox(′扫描仪未安装好′,16)
endif
btnsave.click过程(保存按钮)为:
local m.fn
m.fn=sys(3)+′.jpg′
thisform.imgedit1.saveas(m.fn,1,6,6,64,.f.)
*把图像以JPEG格式存在临时文件中这里把64改为128、256、
....、16384 ,可得到不同压缩率
appe memo pic from (fn) overwrite&&图像存入数据库
erase (fn)
btnexit.click过程为:
thisform.release
btnleft.click过程为:
if thisform.imgedit1.imagedisplayed()&&如果已经显示了
图像
thisform.imgedit1.rotateleft&&左旋90度
endif
text1.valid过程为:
thisform.imgedit1.zoom=this.value&&改变图像显示大小
表单1的init过程为:
if eof()
append blank
endif
public grph&&下面几条命令实现JPG图像的显示
grph=sys(3)+′.jpg′
if not empty(pic)&&如果本记录已经存有图像copy memo pic
to (grph)thisform.imgedit1.image=m.grph&&就显示图像
thisform.imgedit1.displaythisform.btnsave.enabled=.t.
endif
这里把JPG图像存储在二进制备注型字段中。假设表文件image.dbf
有一二进制备注型字段pic(下同),执行下列语句:
use image
...&&把记录指针定位到所需位置
do form表单1.SCX
可以扫描图像存入当前记录,如果当前记录已存有图像,也可修
改(旋转)已有图像。如果经常修改库中的图像,FPT文件会不断增
大,可打开库,执行Pack命令。
二、在报表中插入数据库中存储的图像
在VFP5.0的报表中,只能插入“图片/OLE绑定型控
件”,图片只支持BMP格式,故为了在报表中打印JPG图像,必须
在打印前将JPG格式转换成BMP格式。下面新建报表imagerpt.frm,在
“页标头”部分插入了一“域控件”,“表达式”位置填入pimage(),
由pimage.prg临时生成要打印的图片文件(同一页面中要打印多张图
片时,生成多个临时文件),在“细节”部分插入一“图片/OLE绑
定型控件”,在其“图片来源”中,填入文件名(tmp);pimage.prg
内容如下:
if file(tmp)
erase (tmp)&&删除前一页生成的JPG文件
tmp=left(m.tmp,12)
erase (tmp)&&删除前一页生成的BMP文件
endif
tmp=sys(3)+′.jpg′
if not empty(pic)
copy memo pic to (tmp)&&生成JPG文件
myform.imgedit.image=m.tmp
myform.imgedit.display
myform.imgedit.saveas(m.tmp+′.bmp′,3,7,1,0,.t.)&&转
换成BMP文件
myform.imgedit.cleardisplay&&清除显示的图像
tmp=m.tmp+′.bmp′
endif
return
这里设计的报表不能单独运行,因为使用的对象在报表中没有定
义,要用下面这段程序调用:
private myform,tmp
MyForm = CREATEOBJECT(″form″)
*在表单中加入图像编辑控件
MyForm.AddObject(″imgedit″,″olecontrol″,
″wangimage.editctrl.1″)
tmp=sys(3)+′.bmp′
use image
report form imagerpt preview for not empty(pic)
if file(m.tmp)
erase (tmp)
tmp=left(m.tmp,12)
erase (tmp)
endif
release myform
三、图像的引入和导出
图像的引入是指把现有的图像文件加入数据库,图像的导出是指
把库中存储的图像取出,供其它程序使用。
Wang图像编辑控件能识别BMP、JPG、TIFF等格式的文件,用下面
这段程序可将现有文件转换成JPG格式,存入数据库中:
private myform,tmp
MyForm = CREATEOBJECT(″form″)
MyForm.AddObject(″imgedit″,″olecontrol″,
″wangimage.editctrl.1″)
tmp=sys(3)+′.jpg′
use image
...&&定位记录到所需位置
myform.imgedit.image=′要入库的图像文件名′
myform.imgedit.display
myform.imgedit.saveas(m.tmp,1,6,6,64,.t.)&&转换成JPG文
件
append memo pic from (tmp) overwrite
use
erase (tmp)
release myform
*****************************************************
如何制作帮助文件
文/何发武
帮助文件是任何全功能的、基于Windows的应用程序的一个很重要的组成部
分。如果一个商品化的软件没有健全完整、特色丰富的联机帮助手册,那么可以肯
定它不是一个成熟的软件,因为不提供帮助就好象是假定用户从来不会有问题。其
实帮助文件的制作是应用程序设计工作中相当重要的一环,也是程序员必备的编程
技巧之一,可惜这方面的书籍介绍的比较少。现略为谈谈制作帮助文件技巧及所需
要的工具。
为了管理和显示帮助文件,WINDOWS有自己的帮助引擎(winhelp.exe或
winhlp32.exe)。这个应用程序能管理含有多种字体和颜色的帮助文件,并提供索
引和搜索能力。大多数商业应用程序都使用WINDOWS帮助引擎来显示帮助文件。制
作帮助文件需要两个工具:一个是帮助编器(如HC.EXE)和能够以RTF(Rich Text
Format)格式的创建和保存文档的应用程序(如Word)。
要生成自己程序的帮助文件,可以使用工具Microsoft Help Compiler(HC.EXE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -