2013-08-23 6 views
4

enter image description here
누군가 올바른 방향으로 안내 할 수 있습니까? iOS 응용 프로그램 용 Delphi XE4를 사용하여 사용자 지정 ListboxItem을 만들려고합니다. 내 목표 출력은 위 사진의 선을 따라 뭔가가 될 것입니다. 여기서 내가 현재 여기 붙어 있습니다 (아래 이미지).주어진 예제와 fontColor 속성에 문제가있는 특정 사용자 정의 TListBoxItem 만들기

enter image description here

내가에서 동적으로 ListBoxItem의 생성과 TLabel 객체를 삽입 성공적이었다, 그러나, 내가 원하는 색으로 TLabel의 'FONTCOLOR'속성을 변경할 수 없습니다입니다. 나는 코드 할 수있다

TLabel.Fontcolor : = ClaBlue;

하지만 색상이 검은 색으로 바뀝니다. 내가보기에 본보기처럼 보이는 것이 이상적입니다. 삽입 된 TLabel의 글꼴 색상을 변경하고 각 목록 상자 항목에 그라디언트 배경을 추가하는 데 문제가 있습니다. 나는 '스타일 에디터'를 사용해야하는지, 심지어 어떻게 사용해야하는지 모른다. 여기 아래에있는 내 현재 코딩 그리고 그래, 내가 샘플을 살펴 보았다 델파이/RAD 스튜디오에 포함 된 :

while XMLNode<>nil do begin 

HeaderText := 'Part#: ' + XMLNode.ChildNodes['PARTNUM'].Text + Chr(9) + XMLNode.ChildNodes['VENDPARTNUM'].Text; 

DetailText := '$' + XMLNode.ChildNodes['MD1_SELL_PRICE'].Text + ' /' + XMLNode.ChildNodes['UM1_PRICE_NAME'].Text + sLineBreak + 'Min: ' + XMLNode.ChildNodes['md2_from.MD2_MIN_QTY'].text + Chr(9) + 'On Hand: ' + XMLNode.ChildNodes['md2_from.MD2_ON_HAND_QTY'].text + Chr(9) + Label1.text ; 
Form6.ListBox1.Items.Add(DetailText); 
ListBoxItem:=Form6.ListBox1.ListItems[Form6.ListBox1.Items.Count-1]; 
ListBoxItem.StyleLookup:='listboxitembottomdetail'; 
ListBoxItem.WordWrap:=True; 
ListBoxItem.Font.Size:= 8; 
ListBoxItem.Height := 120; 
TestLabel := TLabel.Create(self); 
TestLabel.Text := HeaderText; 
TestLabel.font.size := 20; 
testLabel.FontColor := claBlue; 
TestLabel.Width := form6.ListBox1.ClientWidth; 
i := i +1; 
XMLNode := XMLNode.NextSibling; 
end; 
Form6.ListBox1.EndUpdate; 
Form6.Show; 

답변

1

당신은 가 CustomListBox 샘플을 사용, 스타일 북을 사용해야하는 것과 델파이와 함께 제공 Firemonkey에서 스타일을 올바르게 사용하는 법을 배웁니다.

또한 Customizing FireMonkey Applications with Styles과 같은 공식 Firemonkey 스타일 가이드
에 대한 내용을 읽지 않아도됩니다.

그것은 당신이 원하는 결과를 생산하기 위해 짧은에, 그것이 다음 더 복잡 같습니다

  1. 액세스 구성 요소 구조 창 편집 통해
  2. 의 스타일 디자이너/추가/삭제 및 컨트롤을 수정, 귀하의 경우에는 TText 통제 조합이 Tlayouts으로 구성됩니다.
  3. 당신이 수정 사항을 저장 한 후에는 런타임에 특정 TText 컨트롤의 색상을 변경할 수 있습니다 : Item.StylesData['TestLabel.Color'] := TAlphaColors.Red; (항목 인 TListboxitem)

무엇을 달성하려고하는 것은 어렵지 않다, 처리 내용 연습을 통한 스타일 디자이너, 순수한 시행 착오, 외형만큼 복잡한 것은 아닙니다.

+0

대부분의 경우 당신이 옳습니다. 또한 다른 사람들을 위해 제 질문에 더 자세히 대답하십시오. 나는 Xe4와 함께 선적 된 샘플을 도구로 만들었습니다. 피터 노트와 비교하면 XE4의 구성 요소를 마우스 오른쪽 버튼으로 클릭하여 스타일 디자이너에 액세스하지 않고 원하는 양식에 TStyleBook 구성 요소를 리소스로 드롭 할 수 있습니다. 거기에서 XML 레이아웃 디자인으로 작업합니다. – ThisGuy

+0

또 다른 스피드 범프 **** 실제로 스타일 북을 건너 뛰고 레이블을 사용하여 역동적으로 TText를 삽입했습니다. 이번에는 tText를 사용하여 동적으로 더 잘 배치하고, Ttext.fontcolor를 변경하고 그 색상 스틱을 사용할 수있었습니다. 이제는 원하는 예제에서와 같이 그래디언트 배경을 구현하는 방법을 알아낼 수 없습니다. TcolorBox를 삽입하고 부모, listboxItem 또는 무엇을 채우도록 설정하는 것이 가장 좋을까요? – ThisGuy

+1

@JordanWeb, 런타임에 동적으로 레이블을 삽입하는 경우 기본적으로 예제와 같이 리소스 스타일 책을 만들고 새로운 TLayout을 작성하여 문제를 해결할 수 있습니다. StyleName 속성은 TRectangle을 넣는 itemGradient라고하고 set allClient 및 브러시 종류를 그라데이션으로 채 웁니다. 새 항목을 만들 때 단순히'Item.StyleLookup : = 'ItemGradient';를 추가하면 stylelookup 문자열이 이름과 일치해야한다는 것을 기억하십시오. 매우 민감합니다. – Peter