Символ новой строки в заголовке кнопки
Я создаю приложение, в котором я хочу отображать кнопку в форме. Я хочу отобразить надпись кнопки на двух строках. Я попытался использовать следующий код в форме OnCreate, но он не показывает новую строку.
Button.Caption := 'Hello' + #13#10 + 'world';
Любой другой способ добавить новую строку?
Ответы
Ответ 1
Для очень старых версий Delphi, у которых нет свойства WordWrap:
Используйте следующий код до установки надписи:
SetWindowLong(Button1.Handle, GWL_STYLE,
GetWindowLong(Button1.Handle, GWL_STYLE) or BS_MULTILINE);
Но сложная часть состоит в том, что этот код нуждается в выполнении в ряде случаев. Когда кнопка будет воссоздана, ваша многострочная настройка будет потеряна. Вид похож на эту дилемму.
К счастью, 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;
Ответ 2
Установите WordWrap в значение True. Это все.
Ответ 3
В System.pas(который автоматически используется) определяется следующее:
const sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF}
{$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF};
Итак, если вы хотите сделать свой перенос с Button, убедитесь, что для параметра AutoSize установлено значение true, а затем используйте следующий код:
button.Caption: = 'Line one' + sLineBreak + 'Line two';
Ответ 4
Другие сказали вам, что вы можете сделать в коде: set Wordwrap
и используйте SLineBreak
.
Но я думаю, вы хотели бы отредактировать несколько строк в дизайнере. Это невозможно в простой среде IDE. Есть несколько сторонних инструментов, которые позволяют это, но вы также можете просто использовать '|'
для разделения строк, а затем в коде используйте что-то вроде
Button1.Caption :=
StringReplace(Button1.Caption, '|', SLineBreak, [rfReplaceAll]);
(Это из памяти, так как у меня нет Delphi здесь, поэтому, пожалуйста, используйте правильный синтаксис).
Ответ 5
В Delphi 2007 вы можете использовать это:
SpeedButton1.Caption := 'first line' + #13 + 'second line';
Ответ 6
Для более старых версий Delphi Tspeedbutton реагирует только на созданные вручную строки с CRLF. Не регулярный TButton. Это, если вы не хотите взломать класс TButton, как предложено в лучшем ответе выше.