• 主页
  • 招聘
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API

Memo组件根据字符内容换行?

Eagle_ice 2009-08-21 01:19:03
大家好,问题是这样的,用户随机输入一组字符串,比如“ABC中发白DEF大中小”,但是在Memo中要显示成这样:
ABC
中发白
DEF
大中小

,或是当用户输入“中发白ABC大中小DEF”时,显示如下:

中发白
ABC
大中小
DEF

就是说当字符状态改变时,就换行显示。请指教...
...全文
58 点赞 收藏 5
写回复
5 条回复
Eagle_ice 2009年08月24日
[Quote=引用 4 楼 mjp1234airen4385 的回复:]
现场编写,有误无责。
Delphi(Pascal) codeprocedure SetMemoText(Memo: TMemo; Data: string);var
i, DataLen: integer;
StrTemp: string;begin
DataLen := Length(Data);
StrTemp := Data[1];for i :=2to DataLendobeginif ((StrTemp[1]< chr(128))and (Data[i]< chr(128)))or ((StrTemp[1]>= chr(128))and (Data[i]>= chr(128)))thenbegin
StrTemp:= StrTemp+ Data[i];endelsebegin
Memo.Lines.Add(StrTemp);
StrTemp := Data[i];end;end;
Memo.Lines.Add(StrTemp);end;
[/Quote]
要的就是这个结果...多谢...
回复 点赞
mjp1234airen4385 2009年08月22日
现场编写,有误无责。
procedure SetMemoText(Memo: TMemo; Data: string);
var
i, DataLen: integer;
StrTemp: string;
begin
DataLen := Length(Data);
StrTemp := Data[1];
for i := 2 to DataLen do
begin
if ((StrTemp[1] < chr(128)) and (Data[i] < chr(128)))
or ((StrTemp[1] >= chr(128)) and (Data[i] >= chr(128))) then
begin
StrTemp:= StrTemp + Data[i];
end else
begin
Memo.Lines.Add(StrTemp);
StrTemp := Data[i];
end;
end;
Memo.Lines.Add(StrTemp);
end;
回复 点赞
imho888 2009年08月21日
Memo是没用这个功能的
需要自己手动加#13#10
回复 点赞
winstonbonaparte 2009年08月21日
象我们经常有时候在一些提示的时候也会需要加上回车换行,就手工加上#13#10就可以了
回复 点赞
bdmh 2009年08月21日
自己断字,没有一点规律怎么搞
或者把需要断开的地方加上标记,自己处理
或者这样
'中发白'+#10#13+'ABC'+#10#13+'大中小'+#10#13+'DEF',加换行符标记,直接自动就换行了
回复 点赞
发动态
发帖子
Delphi
创建于2007-08-02

1472

社区成员

26.2w+

社区内容

Delphi 开发及应用
社区公告
暂无公告