的标题我建立的,我想显示一个窗体上按钮的应用程序。我想在两行显示按钮的标题。我曾尝试在窗体的OnCreate事件中使用下面的代码,但它不显示新行。换行符按钮
Button.Caption := 'Hello' + #13#10 + 'world';
任何其他添加新行的方法?
的标题我建立的,我想显示一个窗体上按钮的应用程序。我想在两行显示按钮的标题。我曾尝试在窗体的OnCreate事件中使用下面的代码,但它不显示新行。换行符按钮
Button.Caption := 'Hello' + #13#10 + 'world';
任何其他添加新行的方法?
对于不具有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;
对于你的第一个建议,'TButton.CreateParams'比'TButton.CreateWnd'更自然。我不确定你的第二个建议是否可行。 –
@David同意,这太好了! – NGLN
在System.pas(自动被使用)以下的定义:
const sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF}
{$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF};
所以,如果你想使你的按钮裹,确保自动调整大小设置为true,然后用下面的代码:
button.Caption:= '行一个' + sLineBreak + '两线';
TButton的不具有AutoSize属性。 – JRL
其他人告诉你,你可以在代码中做什么:设置Wordwrap
和使用SLineBreak
。
不过,我想你想编辑在设计的多条线路。这在普通的IDE中是不可能的。有一些第三方工具,允许它,但你也可以简单地使用'|'
的线分开,然后在代码中使用类似
Button1.Caption :=
StringReplace(Button1.Caption, '|', SLineBreak, [rfReplaceAll]);
(这是从内存,因为我没有德尔福在这里,请使用正确的语法)。
我不知道为什么这是downvoted。这是我在我自己的代码中完成它,它工作正常。 –
对于旧版本的Delphi中Tspeedbutton只响应与CRLF手动创建的字符串。不正规的TButton。这是如果你不想像上面最好的回答中所建议的那样破解TButton类。
在德尔福2007年,你可以使用这个:
SpeedButton1.Caption := 'first line' + #13 + 'second line';
这也适用于德尔福5 –
'S /#13#10/sLineBreak /' –