2010-06-25 8 views
0

아래 코드로 동적 단추를 만들었습니다. 단추 캡션이 너무 길어 캡션의 크기를 단추 너비에 맞게 변경해야하지만 단어 랩은 전혀 ​​작동하지 않는 것으로 보입니다.어떻게 단추 텍스트를 단어 줄 바꿈?

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; 
+1

"작동하지 않음"방법? 줄 바꿈이 예상되는 문자열과 실제로 얻은 결과에 대한 설명이 도움이 될 것입니다. 게시 된 코드의 대부분은 명시된 문제와 직접적으로 관련이 없습니다 (WordWrap = TRUE 인 TBitBtn의 캡션에 '일부 문자열'캡션을 설정하면 줄 바꿈을해야합니다. ,하지만 그렇지 않습니다). 나는 그 단순성 수준으로 당신의 모범을 줄이는 것이 좋습니다. 그렇게함으로써 당신은 다른 간단한 실수를 범할 수도 있습니다. – Deltics

답변

1

캡션에서 # 13을 사용하면 캡션 문자열을 다음 행으로 분할 할 수 있습니다. 예. 캡션 : = '주식 ID : 빵'+ # 13 + '가격 : RM1.00';

1

세 lstSubKey 항목의 간단한 예와 나를위한 작품 :

그러나 '짧은'

  • '중간 길이' '긴'
  • , 경우 "Medium"과 "Length"사이의 공백을 제거하고 두 번째 항목을 만듭니다.

    • 'MediumLength'

    그 다음 줄 바꿈하지 않지만,이 문자열이 래핑하기 위해 나눌 수있는 문자열에 어떤 단어도 휴식이 없기 때문에 예상 할 수있다.