2013-07-17 3 views
1

스타일 북으로 디자인 된 Firemonkey 사용자 지정 ListBox Item을 만들었습니다. ListBox 항목을 삽입하려고하면 ListBox 항목의 그림을 변경하는 것 외에는 모든 것이 올바르게 작동합니다 (텍스트 삽입 등).Firemonkey ListBox 이미지가있는 항목

이 자습서는 http://www.experts-exchange.com에 따라 왔습니다.

procedure TForm2.Button1Click(Sender: TObject); 
var 
    i   : Integer; 
    LBItem : TListBoxItem; 
    ItemImage : Timage; 
begin 
    ListBox1.BeginUpdate; 
    ListBox1.Items.Clear; 
    try 
     for i := 0 to 9 do begin 

      LBItem := TListBoxItem.Create(nil); 
      LBItem.Parent := ListBox1; 
      LBItem.StyleLookup := 'rowLayout'; 
      LBItem.StylesData['textName'] := 'Some text...'; 
      LBItem.StylesData['textFormat'] := 'Some more text...'; 

      ItemImage := LBItem.FindStyleResource('picture') as TImage; 
      if Assigned(ItemImage) then 
       LBItem.ItemData.Bitmap.LoadFromFile('D:\MyTestPicture.jpg'); 
     end; 
    finally 
     ListBox1.EndUpdate; 
    end; 
end; 

는 "rowLayout"는 stylebook 내 레이아웃, 나는이 목록 상자 항목을 위해 만든 :

여기 내 코드입니다. "textName"및 "textFormat"은 일부 TText이며 ListBox Item에 배치됩니다. "picture"는 ListBox Item의 TImage입니다.

내 코드에 어떤 문제가 있습니까? 저는 Delphi XE4에서 작업하고 있습니다. 당신의 도움 및 안부, 홀거에 대한

감사

답변

3

사진 때문에 코드에서 당신은 단지 하나의 이미지를로드 변경되지 않습니다. 또한 반복적으로 이미지를 루프에로드하는 큰 실수를 범했습니다. 양식을 만들 때 이미지를 한 번만로드 한 다음 올바른 비트 맵을 참조해야합니다.

if Odd(I) then 
    Item.ItemData.Bitmap := Image1.Bitmap   
    else 
    Item.ItemData.Bitmap := Image2.Bitmap; 

아이러니는 대부분의 사람들이 가장 일반적으로 C:\Users\Public\Documents\RAD Studio\XX.0\Samples\FireMonkey에있는 샘플 폴더를 확인하는 것을 잊지 것입니다.

CustomListBox 샘플을 자세히 살펴보아야합니다.

다른 튜토리얼을 따르는 데는 아무런 문제가 없지만 Firemonkey가 얼마나 빨리 각 버전과 튜토리얼을 변경했는지 알려 주면 이미 포함 된 Delphi 예제로 되돌아 갈 것을 제안합니다. 이해하고 기본적으로 정확하게 당신이 찾고있는 것을 않습니다.

+2

안녕하세요. 피터, 답변 해 주셔서 감사합니다. 데모 폴더를 깊이 훑어 보았습니다.하지만 프로그램에서 구현하려고 시도했을 때 이미지와 함께 작동합니다. 하지만 이제는 "스타일 이름"으로 약간 연주했습니다. 그리고 나는 스타일 이름을 사용할 때 "아이콘"을 찾으면 다음 코드가 완벽하게 작동합니다. LBItem.ItemData.Bitmap.LoadFromFile (folder + '\'+ TJSONPair (item) .JsonValue.Value); 스타일 이름을 이미지에서 다른 것으로 변경하면 작업량이 늘어납니다. 감사합니다. 홀거 – HolgerH

+0

@HolgerH "스타일 이름"이 정확히 무엇을 나타 냅니까? ListBox의 StyleName 속성입니까? 아니면 LBItem.FindStyleResource ('icon') '솔루션입니까? – Machado