荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: georgehill (佐治·希尔【多情网虫无情网】), 信区: Program
标  题: Delphi的竖排标签
发信站: BBS 荔园晨风站 (Sun Mar 12 01:38:41 2000), 转信

资料整理·中国程序员网站


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);

=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环境中运行通过。

--
        那你可不可以教我,
        有什么办法可以不去喜欢一个人呢?

                -- Bye 赤明莉香 --
 我是来自大富翁的小美!^_^

※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.115]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店