GydruS

Forum Replies Created

Viewing 16 posts - 21 through 36 (of 36 total)
  • Author
    Posts
  • in reply to: Утечка памяти в AlphaImageList #44106
    GydruS
    Participant

    А я сегодня наткнулся на другую неприятность sImagesList – динамически добавляю в него иконки, выдираемые из exe-фалов, и вот это дело постоянно обрывается сообщениями типа “Out of system resources”, “Canvas does not allow drawing”, “The handle is invalid”, “The parametr is incorrect”, “Error creating windows device context”… Сообщения сыплются, если нажимать кнопку “продолжить” в дебагинге.

    Если сделать Run without debugging, то после этого бага прога “повисает”, а в процесс-експлорере видно, как она начинает без остановки увеличиваться в оперативной памяти…

    Заметил закономерность – ошибка вылетает при достижении количества итемов ImageList'а в 80 штук! Пожалуйста, подскажите, как бороться с этой напастью?

    А иногда при тех же условиях вылетает AccessViolation, и дебаггер просит файл acAlphaImageList.pas…

    З.Ы. Вот таким кодом добавляю в лист:

    Code:
    // Добавляем иконку приложения в лист иконок и задаем ее индекс эл-ту визуального списка
    HICON hIcon;
    hIcon = ExtractIcon(GetModuleHandle(0), NodeData.Path.w_str(), 0);
    if ((hIcon != NULL) && ((DWORD)hIcon != 1))
    {
    TIcon *Icon = new Graphics::TIcon;
    Icon->Handle = hIcon;
    int IntIconIndex = ProgramsIconsList->AddIcon(Icon);
    if (IntIconIndex>-1) PNodeData->IntIconIndex = IntIconIndex;
    // подчищаем временно сожранный моск компьютера
    DestroyIcon(hIcon);
    delete Icon;
    }

    З.З.Ы. Только что протестил то же самое на 7.25 – увы…

    in reply to: Лишние отступы в границе окна #44077
    GydruS
    Participant
    'Torbins' wrote:

    В Win7 бордюры по умолчанию как раз и имеют размер 5 пикселей.

    А не 7?

    Просто у меня такая же проблема была и только когда задал в скине область для бордюров в 7 пикселей – все стало гут.

    in reply to: Extended borders – проблемы #43885
    GydruS
    Participant
    'GydruS' wrote:

    + Инода:

    1) кнопка закрытия приложения перестает работать.

    2) Если перетащить окно за его Title, то Title+Borders остаются на месте, а вот внутренность формы перемещается по экрану…

    В 7.24 эта проблема все еще есть!

    Пока не могу точно определить, при каких именно условиях она проявляется, но имею подоздрения на ее связь с AutoSize = true у формы – один раз баг вылез при попытке изменить размеры окна такой (главной) фомы…

    in reply to: Extended borders – проблемы #44001
    GydruS
    Participant
    'Support' wrote:

    Для анимации Time должно быть больше нуля ( в миллисекундах).

    Спасибо, помогло!

    Но опять проявился баг, о котором я писал – скрин на этот раз сделал.

    Это версия 7.22. Сейчас обновлюсь, и по результатам доложу.

    in reply to: Extended borders – проблемы #43995
    GydruS
    Participant

    Скин прицепил.

    Добавление SkinProvider действительно помогает избежать эффекта ранней отрисовки ExtendedBorders, но при этом эффекта анимации просто нет… =(

    GydruS
    Participant

    В 7.22 проблема исчезла!

    Так же как и еще одна, позже замеченная – когда сначала рисовались границы формы – а только потом происходила анимация появления ее содержимого, что смотрелось жутко. Теперь с этим все ок!

    Спасибо Вам большое!!!

    GydruS
    Participant
    'Support' wrote:

    Это хорошо, можно тогда посмотреть этот простой проект?

    Of course! =)

    Проект на Builder XE.

    GydruS
    Participant
    'Support' wrote:

    А как на Вашей машине ведет себя ASkinDemo.exe?

    Делаю простой проект – на нем ничего, кроме sSkinManager'а, в котором задан скин – проблема та же – форма мигает…

    А вот скин-демо с тем же самым скином ведет себя прекрасно – ничего не мерцает…

    GydruS
    Participant
    'Support' wrote:

    Спасибо за картинку, но по ней не понятно в чем проблемма, может еще пару слов комментария? 😉

    Суть в том, что синенькие вспомогательные полоски разбиения выбора границ делят 1 пиксель, а пиксель неделим.

    Но я с этим всем тоже уже разобрался!!!

    Оказывается, такое происходит, когда выбраная область меньше минимально допустимой ширины*StatesCount. Вот я и размечал границы тогда по незнанию для одно состояния, а в настройках их было 3… Отсюда и не сросты и программа делила 1 пиксель на StatesCount.

    А еще по поводу неотрисовывавшихся верних углов границы формы разобрался – их надо было просто нарисовать в BMP-шке в квадратах “7” и “9” (если секторы цифровой клавиатуры перенести на области разбиения спрайта бордера). А у меня они просто были не нарисованы, как визард сделал, и я думал, что это так надо.. Но нет – научный тык не забудешь!

    GydruS
    Participant
    'Support' wrote:

    Нужно еще узнать как все организовано. Это дочерняя форма? На ней лежит картинка?

    Нет, это основная форма. На ней лежит картинка.

    Но я уже решил проблему так: в скин-эдиторе задал бордеры толщиной не в 5 пикселей, как у меня было, а перерисовал на 7 пикселей – пустое место исчезло.

    GydruS
    Participant

    Если компонента не оконная (например, TLabel (TsLabel)), то Invalidate надо вызывать у ее родителя.

    Т.е.

    Form1->sLabel1->Invalidate();

    не сработает!

    Сработает Form1->Invalidate();

    GydruS
    Participant

    Вот еще… В том же диалоге. =((( Так хочется пользоваться этим редактором, но с подобными проявлениями это просто не раельно. Как не кликай по этим контролам, они ведут себя жутко непонятно и крайне не предсказуемо.. =(

    И еще вопрос – есть какие-то ограничения на размер битмапа?

    in reply to: Вопросы по созданию скинов #43652
    GydruS
    Participant

    Спасибо за ответы!!!

    'Support' wrote:

    Трудно сказать не глядя, можно посмотреть сам скин?

    Скин в аттаче!

    GydruS
    Participant
    'Support' wrote:

    Есть возможность добавить такой рисунок в углу для многих контролов-контейнеров. Это можно сделать в редакторе, вкладка “Corner images” у нужной секции.

    Пример можно увидеть в скине WLM

    О! Точно! Классный трик!!! Спасибо большое!!! =)))

    in reply to: Фон для TreeView в скине #43467
    GydruS
    Participant

    Ок! Спасибо за ответ!

    Тогда буду искать обходные пути.

    А когда такая возможность появится – будет вообще отлично!

    З.Ы. И еще – ваши скин-контролы СУПЕР!!!

    GydruS
    Participant

    Отлично!

    Я тут, кстати, обнаружил, что этот баг проявляется только под Win7. В XP, например, все корректно. А под 2008R2 эффекта обвода кнопки просто нет.

Viewing 16 posts - 21 through 36 (of 36 total)