Delphi XE2의 FireMonkey 시작하기(15) - 필터:필터 정보 얻기
3924 단어 Delphi
TObject -> TPersistent -> TFilter -> TShaderFilter -> { }
// FMX.Filter :
procedure FillCategory(AList: TStrings);
procedure FillFiltersInCategory(const Category: string; AList: TStrings);
function FilterByName(const AName: string): TFilter;
function FilterClassByName(const AName: string): TFilterClass;
FillCategory() 방법으로 필터의 분류 목록을 가져올 수 있습니다.
FillCategory(ListBox1.Items);
FillFiltersInCategory() 방법을 사용하면 다음과 같은 범주의 필터 목록을 얻을 수 있습니다.
FillFiltersInCategory(' ', ListBox2.Items);
FilterByName() 방법으로 필터 객체를 가져올 수 있습니다.
var
filter: TFilter;
begin
filter := FilterByName(' '); // ,
end;
TFilter의 FilterAttr() 방법을 사용하여 필터에 대한 정보를 얻을 수 있습니다.
var
filter: TFilter;
filterRec: TFilterRec; // TFilterRec
begin
filter := FilterByName(' ');
filterRec := filter.FilterAttr;
{ FilterAttr class , }
filterRec := FilterClassByName(' ').FilterAttr;
end;
TFilterRec 구조:
TFilterRec = record
Name: string; //
Desc: string; //
Values: TShaderValueRecArray; // , TShaderValueRec
end;
TShaderValueRec 구조:
TShaderValueRec = record
Name: string; //
Desc: string; //
ValueType: TShaderValueType; // : vtFloat, vtPoint, vtColor, vtBitmap( 、 、 、 )
Value: Variant; //
Min, Max, Default: Variant; // 、
end;
테스트: TlistBox 두 개, TMemo 한 개, Oncreate 이벤트와 TlistBox의 Onclick 이벤트가 필요합니다.
uses System.TypInfo; //
procedure TForm1.FormCreate(Sender: TObject);
begin
FillCategory(ListBox1.Items); //
end;
procedure TForm1.ListBox1Click(Sender: TObject);
var
strItem1: string;
begin
strItem1 := ListBox1.Items[ListBox1.ItemIndex];
FillFiltersInCategory(strItem1, ListBox2.Items); //
ListBox2.ItemIndex := 0;
ListBox2.OnClick(nil);
end;
procedure TForm1.ListBox2Click(Sender: TObject);
var
strItem2: string;
filter: TFilter;
filterRec: TFilterRec;
shaderValueRec: TShaderValueRec;
begin
strItem2 := ListBox2.Items[ListBox2.ItemIndex];
filter := FilterByName(strItem2); //
filterRec := filter.FilterAttr; //
// filterRec := FilterClassByName(strItem).FilterAttr; //
Memo1.Text := ' : ' + filter.ToString; //ClassName
Memo1.Lines.Add(' : ' + filterRec.Name);
Memo1.Lines.Add(' : ' + filterRec.Desc);
Memo1.Lines.Add('------------------------------------------------');
for shaderValueRec in filterRec.Values do
begin
Memo1.Lines.Add(' : ' + shaderValueRec.Name);
Memo1.Lines.Add(' : ' + shaderValueRec.Desc);
Memo1.Lines.Add(' : ' + GetEnumName(TypeInfo(TShaderValueType), Integer(shaderValueRec.ValueType)));
if shaderValueRec.ValueType <> TShaderValueType.vtBitmap then
begin
Memo1.Lines.Add(' : ' + string(shaderValueRec.Value));
Memo1.Lines.Add(' : ' + string(shaderValueRec.Min));
Memo1.Lines.Add(' : ' + string(shaderValueRec.Default));
Memo1.Lines.Add(' : ' + string(shaderValueRec.Max));
end;
Memo1.Lines.Add(EmptyStr);
end;
end;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Delphi] TStringBuilder그리고 꼭 사용해야만 할까? 그림처럼 Heap 영역에 "Hello" 공간을 생성하고 포인팅을 한다. "Hello World" 공간을 새로 생성한 후 포인팅을 하게 된다. 결국 "Hello" 라는 String 객체가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.