var i: Integer; AAreas: TCatalogAreas; AArea: TCatalogArea; ACatItem: TCatalogItem; AProp: TCatalogItemProp; AHtml: TTntStringList; ASl: TTntStringList; begin AAreas := TCatalogAreas.Create(TCatalogArea, ''); PublicCatalog.EnumAllAreasWithFeatures(AAreas); AAreas.Disconnect; ASl := TTntStringList.Create; try // remove areas that are not "confirmed" for i := AAreas.Count - 1 downto 0 do begin AArea := AAreas.Items[i]; if (not AArea.HasFaceFeatures) or (AArea.PropGUID = '') then AArea.Free; ACatItem := TCatalogItem.Create(nil); AProp := TCatalogItemProp.Create(nil); if PublicCatalog.FindItemCombinedByGUID(AArea.ItemGUID, ACatItem) then begin AArea.Name := ACatItem.FileName; if PublicCatalog.EnumProp(AArea.PropGUID, AProp, False) then ASl.AddObject(AProp.PropName + '.' + ACatItem.FileName, AArea); end; AProp.Free; ACatItem.Free; end; // sort the areas ASl.Sort; for i := 0 to ASl.Count - 1 do begin AArea := ASl.Objects[i]; AArea.Index := i; end; finally ASl.Free; end; AHtml := TTntStringList.Create; AHtml.Add(''); AHtml.Add(''); AHtml.Add(''); AHtml.Add(''); AHtml.Add(''); AHtml.Add('

Confirmed Faces

'); AHtml.Add(''); AHtml.Add(''); AHtml.Add(''); AHtml.Add(''); AHtml.Add(''); AHtml.Add(''); for i := 0 to AAreas.Count - 1 do begin AArea := AAreas.Items[i]; AHtml.Add(''); AHtml.Add(''); AHtml.Add(''); AHtml.Add(''); AHtml.Add(''); end; AHtml.Add('
'); AHtml.Add('Image'); AHtml.Add(''); AHtml.Add('Name'); AHtml.Add(''); AHtml.Add('File Name'); AHtml.Add('
'); AHtml.Add(''); AHtml.Add(''); AHtml.Add(AArea.Caption); AHtml.Add(''); AHtml.Add(AArea.Name); AHtml.Add('
'); AHtml.Add(''); AHtml.Add(''); AHtml.SaveToFile(WindowsTempDir + 'confirmed.htm'); ShellDoExecute(0, WindowsTempDir + 'confirmed.htm'); AHtml.Free; AAreas.Free; end;