как обернуть текст кнопки? - PullRequest
0 голосов
/ 25 июня 2010

Я создал динамическую кнопку с приведенным ниже кодом, заголовок кнопки слишком длинный, поэтому мне нужно изменить размер заголовка, чтобы он соответствовал ширине кнопки, но видимость слов не работает вообще.

var
  Reg: TRegistry;
  lstKey, lstSubKey : TStringList;
  sKeyName, sSubKeyName : string;
  i, j, iSize, iSize2, iTop, iSpace, iComp : integer;    
begin
  lstKey     := TStringList.Create;
  lstSubKey  := TStringList.Create;
  lstBtnName := TStringList.Create;
  Reg        := TRegIniFile.Create;
try
  Reg.OpenKeyReadOnly('registryPath'); 
  Reg.GetKeyNames(lstSubKey);    // get registry key
  Reg.CloseKey;  

  iSize := 5;
  iSize2 := 5;
  iTop := 5;
  iSpace := 5;

  if ScrollBox1.ControlCount > 0 then begin
     for j := ScrollBox1.ControlCount - 1 downto 0 do begin
        with ScrollBox1.Controls[j] AS TBitBtn do begin
          Free;
        end;
     end;
  end;

  for i := 0 to lstSubKey.Count - 1 do begin
      with TBitBtn.Create(self) do begin    // create dynamic buttons
        Parent := ScrollBox1;
        Height := 50;
        Width  := 50;

        if iSize > ((Width + iSpace) * 3) then begin  //2nd row, 3 btns in 1 row 
           Left := iSize2;
           iSize2 := iSize2 + Width + iSpace;
           Top := iTop + Height + iSpace;
        end else begin    //1st row
           Left := iSize;
           iSize := iSize + Width + iSpace;
           Top := iTop;
        end;
        Caption := lstSubKey.Strings[i];
        WordWrap := TRUE;
      end;
  end;
  finally
  lstKey.Free;
  lstSubKey.Free;
  Reg.Free;
  end;
end;

Ответы [ 2 ]

2 голосов
/ 05 августа 2010

Использование # 13 в заголовке может разделить строку заголовка на следующую строку.например.Надпись: = 'ID акции: хлеб' + # 13 + 'Цена: RM1.00';

1 голос
/ 25 июня 2010

Работает для меня на простом примере из трех записей lstSubKey:

  • 'Short'
  • «Средняя длина»
  • Longer '

Однако, если я уберу пробел между "Medium" и "Length" и сделаю 2-й элемент:

  • 'MediumLength'

Тогда оно не переносится, но этого следует ожидать, поскольку в строке нет переноса слов, по которым строка может быть разбита для переноса.

...