try function TForm1.VString(ss:AnsiString):AnsiString; var ass:AnsiString; ii,ll:Integer; cc:Byte; begin ass:=''; ll:=Length(ss); ii:=1; while ii<=ll do begin cc:=ord(ss[ii]); if (cc>160) then begin ass:=ass+ss[ii]+ss[ii+1]+''#13''; ii:=ii+2; end else begin ass:=ass+ss[ii]+''#13''; ii:=ii+1; end; end; result:=ass ; end;procedure TForm1.btn1Click(Sender: TObject); begin Label1.Caption:='这里发言,表示您接受了CSDN社区的用户行为准则' ; Label1.Caption:=VString(Label1.Caption); end;
这样就已经可以了: function VString(ss:WideString):WideString; var i:Integer; begin for i:=1 to Length(ss) do result:=result+ss[i]+#13; end;procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption:=VString('这里发言,表示您接受了CSDN社区的用户行为准则'); end;
或者设为 禁止 自动大小,同时调整label宽度为一个汉字宽
Label1.Canvas.Font.Size:=Label1.Font.Size;
Label1.Width:=Label1.Canvas.TextWidth('字');
Label1.Height:=Label1.Canvas.TextWidth(Label1.Caption);
Label1.AutoSize:=false;
Label1.WordWrap:=true;
Label1.Width:=Label1.Canvas.TextHeight(Label1.Caption);
Label1.Height:=Label1.Canvas.TextWidth(Label1.Caption);
Label1.AutoSize:=false;
Label1.WordWrap:=true;
function TForm1.VString(ss:AnsiString):AnsiString;
var
ass:AnsiString;
ii,ll:Integer;
cc:Byte;
begin
ass:='';
ll:=Length(ss);
ii:=1;
while ii<=ll do
begin
cc:=ord(ss[ii]);
if (cc>160) then
begin
ass:=ass+ss[ii]+ss[ii+1]+''#13'';
ii:=ii+2;
end
else
begin
ass:=ass+ss[ii]+''#13'';
ii:=ii+1;
end;
end;
result:=ass ;
end;procedure TForm1.btn1Click(Sender: TObject);
begin
Label1.Caption:='这里发言,表示您接受了CSDN社区的用户行为准则' ;
Label1.Caption:=VString(Label1.Caption);
end;
function VString(ss:WideString):WideString;
var i:Integer;
begin
for i:=1 to Length(ss) do result:=result+ss[i]+#13;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:=VString('这里发言,表示您接受了CSDN社区的用户行为准则');
end;
1,设置WordWrap为True,把Label的宽度调整为一个字符的宽度(比较山寨)
2,用GDI+,DrawString,设置StringFormatFlagsDirectionVertical格式
(参考http://www.cnblogs.com/del/archive/2009/12/22/1629717.html)