如何在屏幕上动态地生成多行?(50分)

  • 主题发起人 主题发起人 xiuxiu
  • 开始时间 开始时间
X

xiuxiu

Unregistered / Unconfirmed
GUEST, unregistred user!
要在屏幕上输出"日期"和"地点",但分两行输出,请问如何实现?
 
???:
'日期'#$D#$A'地点'
 
问题说的也不详细啊.
Croco应该是差不多吧.
'日期'+#$D#$A+'地点'.
 
分两行放两个label控件
将它们的caption清空
然后在程序中控制输入
label1.caption:='日期';
label2.caption:='地点';
不知你是不是这个意思你最好说详细一点
 
对Croco:
谢谢你的回答,我原先也是按这个思想,代码如下:
canvas.textout(10,10,'日期'#13'地点');
但屏幕上显示出:
日期|地点
按您的建议实验后,结果如下:
日期||地点
并未如期换行,请进一步赐教,不胜感激!
 
用TS:TStringList。
先TS.TexT:=S;//(你的'日期'#13#10'地点')
然后,for I:=0 to TS.Count-1
do canvas.textout(10,10+10*I,TS.Strings);
 
一定要用canvas.textout(...)吗?

测试用。

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Label1.Left:=10;
Label1.Top:=10;
Label1.Caption :='日期'+#13+'地点' ;
end;


 
用 DrawText 可以折行。
var
S: String;
ARect: TRect;
begin
S := 'ddd'#$D#$A'fff';
ARect := Rect(10, 10, 110, 110);
DrawText(Canvas.Handle, PChar(S), Length(S), ARect,
DT_EXPANDTABS or DT_WORDBREAK or DT_LEFT);
end;
 
接受答案了.
 
后退
顶部