📄 zx_label.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>制作Delphi的竖排标签</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p align="center"><big><big>制作Delphi的竖排标签<br>
作者:赖立谦</big></big></p>
<p><br>
大家知道用Deiphi开发应用程序时标签是必不可少的,但是Deiphi<br>
提供的Label构件只支持横排方式的标签,而不支持竖排方式标签。<br>
<br>
怎么办?<br>
<br>
编写一段简单的函数就可以把标签从横排变成竖排。因为中文字<br>
符集是用两个字节表示一个字符的,所以应在字符串的每两个字节之<br>
间加入回车换行符。这个函数的参数是一字符串,返回值是在中文字<br>
符之间添加了回车换行符的一个新的字符串。<br>
<br>
下面就举例说明:我们以竖排方式显示一首诗。<br>
<br>
新建一工程。<br>
<br>
首先在implementation部分定义一个字符串数组常量poemary,<br>
该数组的每一个成员顺序存放了诗中的一句。<br>
<br>
const<br>
<br>
poemary: array[0..6] of string = ('游子吟', '慈母手中线',<br>
<br>
'游子身上衣', '临行密密缝', '意恐迟迟归', '谁言寸草心',<br>
<br>
'报得叁春晖');<br>
<br>
随后,在implementation部分加入字符串转换函数,代码如下:<br>
<br>
function convertstring(source:string):string;<br>
<br>
var<br>
<br>
i,j:integer;<br>
<br>
a,b:array[0..50] of char;<br>
<br>
begin<br>
<br>
StrPCopy(a, source) ;<br>
<br>
j:=0; i:=0;<br>
<br>
while (a[j] <>#0) do begin<br>
<br>
b[i]:=a[j];<br>
<br>
if (j mod 2=1)and(j>0) then begin<br>
<br>
Inc(i); b[i]:=#13;<br>
<br>
end;<br>
<br>
Inc(j); Inc(i);<br>
<br>
end;<br>
<br>
b[i-1]:=#0;<br>
<br>
result:= strpas(b);<br>
<br>
end;<br>
<br>
<br>
最后添加Form1的OnCreate事件。注意:要在uses子句中添加单<br>
元名称stdctrls。<br>
<br>
procedure TForm1.FormCreate(Sender: TObject);<br>
<br>
var<br>
<br>
labary:array[0..6] of Tlabel;<br>
<br>
i:integer;<br>
<br>
begin<br>
<br>
for i:=0 to 6 do<br>
<br>
begin<br>
<br>
labary[i]:=Tlabel.Create(self);<br>
<br>
labary[i].parent:=self;<br>
<br>
labary[i].caption:=convertstring(poemary[i]);<br>
<br>
labary[i].top:=(form1.Height-labary[i].height) div 2;<br>
<br>
labary[i].left:=10+i*33;<br>
<br>
end;<br>
<br>
end;<br>
<br>
运行结果如图所示,此程序在Windows 95,Delphi3.0环境中运<br>
行通过。 </p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -