我正在构建一个应用程序,我想在其中显示表单上的按钮。我想在两行上显示按钮的标题。我尝试在表单的OnCreate事件中使用以下代码,但它没有显示新行。
Button.Caption := 'Hello' + #13#10 + 'world';
添加新行的其他任何方法?
答案 0 :(得分:10)
对于非常旧的 Delphi版本,它们没有WordWrap属性:
在设置标题之前使用以下代码:
SetWindowLong(Button1.Handle, GWL_STYLE,
GetWindowLong(Button1.Handle, GWL_STYLE) or BS_MULTILINE);
但棘手的部分是这个代码需要在很多场合执行。重新创建按钮后,您的多线设置将丢失。类似于this dilemma。
幸运的是,VCL提供了一个解决方案,但你必须继承TButton类型,例如:如下:
type
TButton = class(StdCtrls.TButton)
protected
procedure CreateParams(var Params: TCreateParams); override;
end;
TForm1 = class(TForm)
...
procedure TButton.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := Params.Style or BS_MULTILINE;
end;
答案 1 :(得分:8)
将WordWrap设置为True。就是这样。
答案 2 :(得分:4)
其他人已告诉您在代码中可以执行的操作:设置Wordwrap
并使用SLineBreak
。
但我想你想编辑设计师中的多行。这在普通的IDE中是不可能的。有一些第三方工具允许它,但您也可以简单地使用'|'
分隔行,然后在代码中使用类似
Button1.Caption :=
StringReplace(Button1.Caption, '|', SLineBreak, [rfReplaceAll]);
(这是来自内存,因为我这里没有Delphi,所以请使用正确的语法)。
答案 3 :(得分:2)
在System.pas(自动使用)中定义了以下内容:
const sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF}
{$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF};
因此,如果要进行Button换行,请确保将AutoSize设置为true,然后使用以下代码:
button.Caption:='第一行'+ sLineBreak +'第二行';
答案 4 :(得分:1)
在Delphi 2007中,您可以使用:
SpeedButton1.Caption := 'first line' + #13 + 'second line';
答案 5 :(得分:1)
如果要查看IDE中的更改,请在设计时执行以下操作:
'#13#10'
(CRLF)添加到标题的值。 WordWrap
。