大家知道用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] $#@60;$#@62;#0) do begin
b[i]:=a[j];
if (j mod 2=1)and(j$#@62;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;