Показать сообщение отдельно
Старый 31.01.2006, 18:24   #1  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
ImageListAppl, который работает с AOT/Resources
Под впечатлением вот этого обсуждения: http://forum.mazzy.ru/index.php?show...=0&#entry20371 хотел бы поделиться элементарным классом на основе ImageListAppl, который способен работать с именованными ресурсами/картинками, сохраненными в AOT (работает, естественно, только в 3.0).

Задача модифицированного класса - выдавать порядковый номер ресурса не по номеру, а по имени. Сначала объявляем map
PHP код:
    imageNameConvert = new Map(Types::StringTypes::INTEGER); 
Затем реализовываем метод, который может вызываться из build()
PHP код:
public void addNamedResource(IdentifierName _ressName)
{
    
int             imageNum;
    
Image           image;
    
ResourceNode    resourceNode;
    try
    {
        if (
_ressName)
        {
            
Image = new Image();
            
resourceNode SysResource::getResourceNode(_ressName);
            
resourceNode.AOTload();
            
image.setData(SysResource::getResourceNodeData(resourceNode));

            
imageNum imagelist.add(image);
            
imageNameConvert.insert(_ressNameimageNum);
        }
    }
    catch
    {
        
warning(strfmt("@SYS70565"_ressName));
    }

После этого аналогом метода image() будет следующий:
PHP код:
public int imageName(IdentifierName _ressName)
{
    if (
imageNameConvert.exists(_ressName))
        return 
imageNameConvert.lookup(_ressName);
   ...

Преимещества по сравнению с картинками, которые хранятся на диске и которые надо каждый раз копировать на новую инсталляцию, очевидны.
За это сообщение автора поблагодарили: belugin (3), Kabardian (3), sashanka (1), YoungPadawan (1).