2017-04-25 9 views
3

각 버튼에 숫자와 문자가 모두있는 가상 키패드를 만들려고합니다. 예를 들어 숫자 2의 텍스트 옆에 ABC이라는 작은 글꼴 크기가 표시되고 3 숫자 옆에 DEF이 표시됩니다.두 개의 텍스트가있는 Firemonkey TButton 스타일

이 단추의 사용자 지정 스타일을 하나씩 성공적으로 편집 할 수 있습니다. 하나의 버튼, 나는 사용자 정의, 하나 나는이 일을해야 할, 그러나 ...

Designing button style

을하는 TText 스타일 요소를 삭제 각각의 정렬 및 텍스트 설정을 변경하고 그것을 잘 작동 할 수 있습니다 각 버튼 자체의 스타일. 이 스타일을 다시 사용하려고 시도하면 추가 문자 ABC이 모든 키에서 동일하게됩니다. 그러나 나는 그들 각각이 달라야한다.

Sample of keypad in runtime

어떻게 또한 나 각 버튼에 서브 텍스트를 다양한 사용할 수 있도록 할 수있는 단일 재사용 가능한 스타일을 만들 수 있습니까? 또는 각 버튼에 대해 고유 한 스타일을 만들어야합니까?

+0

나는 비슷한 것을해야했고, 결국 나는 각각을위한 커스텀 스타일을 만들었다. 가장 좋은 생각은 아니지만 효과가있었습니다. –

답변

6

해결 방법을 사용하여 ABC ​​레이블의 텍스트 StyleName을 텍스트로 설정하고 Number Label의 StyleName을 Number로 설정할 수 있습니다.

단추 클래스를 재정의하는 클래스를 만듭니다.

TButton = class(FMX.StdCtrls.TButton) 
protected 
    procedure ApplyStyle; override; 
end; 

procedure TButton.ApplyStyle; 
    var NumberLabel : TLabel; 
begin 
    //That method will find for a label with stylename number and set the tag of component in it. 
    inherited; 
    if FindStyleResource<TLabel>('Number', NumberLabel) then 
    NumberLabel.Text := IntToStr(Tag); 
end; 

이제 모든 버튼의 스타일을 설정하십시오. 텍스트 속성은 텍스트 영숫자 텍스트를 설정하고 태그는 숫자를 설정합니다. 런타임에만 작동합니다.