★Label上的文字如何换行?(50分)

  • 主题发起人 主题发起人 volcanosh
  • 开始时间 开始时间
关注,我也很想知道!
 
Caption :='abcd'+
Char(10)+char(13)+
'abcd'+
Char(10)+char(13)+
'abcd'+
Char(10)+char(13)+
'abcd'+
Char(10)+char(13);
 
用#13连接两行文字,在设计阶段时输入无效即可。
 
Caption :='abcd'+
Chr(10)+chr(13)+
'abcd'+
Chr(10)+chr(13)+
'abcd'+
Chr(10)+chr(13)+
'abcd'+
Chr(10)+chr(13);
也可.

 
caption:='abc'+#13+#10
+'efg'+#13+#10;
 
控件上点击鼠标右键,选择"XXXX text"(好像是,忘了),在其中选择到控件的caption.
在需要提行的地方输入‘#13#10’即可。(也就是Chr(10)和Chr(13)).
Caption :='abcd'+#13#10+'abcd';
 
上面各們說是的動態的賦值換行﹐
如果要有IDE中設置換行﹐首先要將wordwrap設成True.
此外在caption中在要換行的地方打一個空格就可以了﹐位置要選好。
good luck ^_^
 
说到这儿,我倒是有个莫名奇妙的事情要跟大伙说说.

在我重装这次系统之前,我的DELPHI的label可以直接使用多行,在LABEL的caption旁边有个省
略号,点击它可以编辑多行文本,而且在我的Glahy那儿还有个图版路径....

这次一重装系统+DELPHI之后,我的label就不同了,只能编一行的caption

不知你们碰到过没有....
 
coolzew为正解
 
安装LMD控件后就会出现del520所说的现象,可以直接在编辑态使label换行。
 
装RX控件后,Label即可换行!
 
思想:一行字符+换行符就可以了!
 
autosize:=false;
wordwrap:=true;
 
del520:注册了新的属性编辑器;
ml.guo:为什么不写成:Caption :='abcd'#13#10'abcd'#13#10'abcd''abcd'#13#10;
 
没必要那么复杂吧 用下面的方法
1。设置Label的 AutoSize 为 False,调整为要显示的宽度 width,以及Height
2。设置Label的 WordWrap 为 True
3。填写Label的 Caption ,在要换行的地方空一个格,
 
Caption :='abcd'+#13+'abcd';
 
换行的Label控件源码,将caption属性作为Tstrings来编辑
unit LabelRustle;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TLabelRustle = class(TCustomLabel)
private
function GetText : TStrings;
procedure SetText(const Value: TStrings);
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
published
property Align;
property Alignment;
property Anchors;
property AutoSize;
property BiDiMode;
property Color;
property Constraints;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property FocusControl;
property Font;
property ParentBiDiMode;
property ParentColor;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowAccelChar;
property ShowHint;
property Transparent;
property Layout;
property Visible;
property WordWrap;
property OnClick;
property OnContextPopup;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDock;
property OnStartDrag;
property Caption: TStrings read GetText write SetText;
{ Published declarations }
end;

procedure Register;

implementation

function TLabelRustle.GetText:TStrings;
var
Len: Integer;
Temp : TCaption;
begin
Len := GetTextLen;
SetString(Temp, PChar(nil), Len);
if Len <> 0 then GetTextBuf(Pointer(Temp), Len + 1);

Result := TStringList.Create();

Result.SetText(PChar(Temp));
end;

procedure TLabelRustle.SetText(const Value: TStrings);
var
Temp: TCaption;
begin
Temp:=Value.Text;
if GetText <> Value then SetTextBuf(PChar(Temp));
end;


procedure Register;
begin
RegisterComponents('MyComponent', [TLabelRustle]);
end;

end.

 
这么简单的问题怎么讨论的这么复杂
 
后退
顶部