如何实现“str1 str2 str3...”,其中str1,str2,str3长度不定,他们的位置固定(50分)

  • 主题发起人 主题发起人 donkey
  • 开始时间 开始时间
D

donkey

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个memo控件,要求其内容为
str1 str2 str3...
str1' str2' str3'...
. . .
. . .
. . .
即不管str长度如何变化,要求他们能上下对齐
 
可以通过设置字体的对齐方式......好像哪本书上有....
呵呵~~,我忘了......
 
适当地加入Tab(^I)字符吧。
 
判断每个str的长度,不够加空格达到一个定值.
 
用format+add试试。
 
这种情况为什么不用stringgrid
 
同意daiqingbo
 
输出一个规则的字符串,这是一个经常遇到的问题,我只是想找出一个最佳的答案。事实
上用C语言很容易实现,但用Pascal就比较麻烦。我试过用Insert,Copy,Format等函数,都
不理想。
 
format 怎么不行? 看我的程序.
procedure TForm1.Button1Click(Sender: TObject);
var
s1: string;
s2: string;
begin
s1 := format('%-20s', ['str']);
s2 := format('%-20s', ['stsfdr']);
Memo1.Lines.Add(s1 + s2);
Memo1.Lines.Add(IntToStr(Length(s1)) + ' ' + IntToStr(Length(s2)));
end;

procedure TForm1.Button2Click(Sender: TObject);
var
s1, s2: string;
begin
s1 := format('%-20s', ['stsfdsr']);
s2 := format('%-20s', ['sr']);
Memo1.Lines.Add(s1 + s2);
Memo1.Lines.Add(IntToStr(Length(s1)) + ' ' + IntToStr(Length(s2)));
end;


其中不对齐是因为字体的缘故, 不是等长字体, 只要选一种是等长字体就可以了.
(我不知道等长字体的名字叫什么).
 
我还是比较倾向于用stringofchar函数来解决问题或者自己写一个函数。
 
用FORMAT绝对可以的,我试过不知多少遍了
 
多人接受答案了。
 
我试过了,format可行,以前我没有注意到字体问题。补充一句,中文字体都是等
宽字体。
 

Similar threads

回复
0
查看
978
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部