如何自动换行按钮文字?

时间:2010-06-25 04:00:44

标签: delphi button delphi-7

我创建了动态按钮,代码如下,按钮标题太长,所以我必须更改标题的大小以适应按钮宽度,但wordwrap看起来根本不起作用。

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 个答案:

答案 0 :(得分:2)

在标题中使用#13可以将标题字符串拆分为下一行。 例如。图片说明:='股票ID:面包'+#13 +'价格:RM1.00';

答案 1 :(得分:1)

通过三个lstSubKey条目的简单示例为我工作:

  • '短'
  • '中等长度'
  • '停止'

但是,如果我删除“中”和“长度”之间的空格,并制作第二项:

  • '中等长度'

然后它不会换行,但这是可以预料到的,因为在字符串中没有单词中断,字符串可以被打破以便被包装。

相关问题