的標題我建立的,我想顯示一個窗體上按鈕的應用程序。我想在兩行顯示按鈕的標題。我曾嘗試在窗體的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 /' –