关于memo和richedit的菜鸟级问题。。。(50分)

扳手

Unregistered / Unconfirmed
GUEST, unregistred user!
1。请问memo和richedit有什么区别?
2。我现在想在这两个控件中的任何一个做如下显示信息:
姓名:xxxx 性别:x
姓名和性别之间的距离是固定的,比如50个字符的位置,因此需要定位‘性别’的位置,
比如象 0行 50列这样定位,怎么实现???
急。。。在线等待。。。
 
补充说明一下:
memo1.lines.add('姓名'+'xxxx');
然后怎么才能在同一行的第50个字符的位置追加 '性别'+'x'
 

1、memo相对于richedit,功能单一
2、试试下面程序
type
TRec = record
name: string[50];
sex: string[50];
end;
var
rec: TRec;
strTmp: string;
len: integer;
begin
rec.name := '姓名:xxxxxx';
rec.sex := '姓别:xxx';
len := 50-Length(rec.name);
strTmp := StringOfChar(' ',len);
memo1.Lines.Add(rec.name+strTmp+rec.sex);
end;
 
定义一个变量str,xm_str(代表姓名的具体内容)
str:=xm_str+' '; // 后面是50个空格

str:=copy(str,1,50) ; // 切齐

同样的方式得到性别 str2
最后
memo1.lines.add(str+str2 ) ;
 
1.memo的表现形式比较单一,RichEdit表现形式比较丰富, 就是说RichEdit可以为
单个的字符设置颜色、大小等属性

2.中间插入Tab字符吧
Tab 为 #09 (好像是09,不太清楚了)
StringOfChar(#09,5)
 
to:影子 这种想法我有试过,不是很理想:一。下面还有很多类似的内容,这样使用
非常不方便。 二。一个汉字用两个byte表示,但并不是恰好占用两个字符
的位置,会造成下面的内容对不齐:
姓名:xxxx 性别:x
学历:yy 学位:yyyy
就是这样,因此才想能不能定位 ‘性别’和‘学位’的位置。

to:zhbj nstar 你们的方法好像和上面这位兄弟的类似,所以也存在上面的问题

还有更好的解决办法吗?等待。。。
 
要知道,学会用 Format 函数,对处理字符串格式是很有用的:)

const
Indent = 50;
var
str: string;
begin
str := Format('姓名:%-*s性别:%s', [Indent, 'beta', '男']);
Memo1.Lines.Add(str);
str := Format('姓名:%-*s性别:%s', [Indent, 'mophy', '男']);
Memo1.Lines.Add(str);
end;

效果:
姓名:beta 性别:男
姓名:mophy 性别:男
 

字体的问题,使用Courier New字体看看
 
插入Tab字符一定可以,关键是你要在插入Tab字符前进行设计tab的字符长度!
 
我用 tab 字符可以了.
procedure TForm1.Button2Click(Sender: TObject);
var
Name, Sex: string;
begin
Name := 'abc';
Sex := '男';
Memo1.Lines.Add('姓名:' + Name + #9#9#9 + '性别:' + Sex);
Name := 'abcdfdfdfg';
Memo1.Lines.Add('姓名:' + Name + #9#9#9 + '性别:' + Sex);
Name := 'affffbd';
Memo1.Lines.Add('姓名:' + Name + #9#9#9 + '性别:' + Sex);
Name := 'abc';
Memo1.Lines.Add('姓名:' + Name + #9#9#9 + '性别:' + Sex);
end;

//输出结果:
姓名:abc 性别:男
姓名:abcdfdfdfg 性别:男
姓名:affffbd 性别:男
姓名:abc 性别:男
 
扳手大哥,我有个问题想请教你,不知道怎么联系你,就贴在这儿了,请别介意:)
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=1217657
我的问题是关于chart画曲线图和上面这个帖子的差不多
能否给我一个相关的例程参考一下
谢谢
 
多人接受答案了。
 
顶部