HiAsm - Конструктор программ

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Main Form

Сообщений 1 страница 5 из 5

1

Доброго всем! Второй день маюсь, поэтому сразу к делу:

Есть hiMainForm. Сборка «AltBuild», но по-сути MainForm и на b186 такая же.
Есть Win10 Version 10.0.19042.1110 (вывод через CMD).

ПРАКТИЧЕСКАЯ ЧАСТЬ

1. Запускаем нулёвое приложение на любом компиляторе.
2. Сворачиваем главную форму в ТаскБар стандартным методом «Свернуть» в заголовке справа сверху (можно через меню по правой клавиши мыши, подача одна и та же).
3. Наводим мышь на ТаскБбар и ждём, чтобы всплыла небольшая рамка отображения окна приложения. Видим, что контроллы окна деактивированы («Свернуть», «Развернуть» и «Закрыть»), надпись на окне также неактивна, а вот сама рамка окнаАктивна (осталась тем же цветом).

И вроде бы: — Ну и что что она активна? Приложение свёрнуто. Форму не видно. Какие проблемы?
А такие, что если с этого свёрнутого положения нажать правой мыши на «Закрыть окно» по ТаскБару — MainForm сперва появляется перед носом, а уж потом закрывается. Никогда не замечали эдакий «Эффект Мерцания» при закрытии форм? Вот это оно и есть.

И обратный момент: если нажать не на «Свернуть» в заголовке формы, а кликнуть по ТаскБару, чтобы окно свернулось, наблюдаем совершенно иную картину:
1. Окно полностью деактивировано (вместе с заголовком).
2. Закрытие через ТаскБар происходит как надо (форма не появляется перед закрытием).

Поведение можно сравнить с другими прогами, сделанными не в Хайке → при сворачивании как стандартными методами (Свернуть в заголовке), так и по клику на ТаскБаре ← рамка окна всегда неактивна и нет никаких «Мерцаний» при закрытии.

ТЕХНИЧЕСКАЯ ЧАСТЬ

Пробовал сравнить со старыми (другими) версиями Хайки — идентично.
Пробовал на Облегчённой форме — то же самое.
Пробовал с разными компиляторами (Delphi4, FPC, FPC32/64 от Netspirit) — без изменений.

Основной метод сворачивания окна: PostMessage( Applet.Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0); — и он, судя по сёрфингу инета, правильный. Хотя и перепробовал другие старые методы, которые либо не работают, либо сворачивают окно в мини-рамку.

Начал копать в сторону KOL'a, но не совсем уверен, что проблема в нём (т.к. у FPC2 Kol'ы иных версий).
На данный момент терраризирую Мессаджы в hiMainForm с попыткой добавить деактивацию или изменить поведение свёртывания, что пока безуспешно.

У кого какие мысли по этому поводу? Кто сталкивался/не сталкивался? Есть ли возможность протестировать на 7, такое же поведение? Или хрен с ним, с этим мерцанием?
С мерцанием то может и ладно, да только вот из-за этого самого неправильного сворачивания формы хвостом идут как минимум пара багов; в частности, на данный момент почти уже доделал сохранение формы через Win API с возможностью восстановления как Максимизированной, так и Минимизированной формы, и вот здесь то собака зарылась: минимизированная форма не сохраняется. И чёрт его знает что там потом ещё может всплыть.

P.S. Эндрю, создай раздел что-то вроде HiAsm Тех-вопросы/ Баги компонентов, для постинга подобных тем.

Теги: HiAsm,Delphi

Отредактировано Vanchila (2021-09-13 21:31:52)

0

2

Vanchila
У меня такой эффект не проявляется. Я обновлениями не пользуюсь. Но Win.pas у меня потерпел изрядные изменения. (может быть из за этого)
Попробуй обновится с SVN, вероятность что что-то поправили всё же остаётся.

Vanchila написал(а):

P.S. Эндрю, создай раздел что-то вроде HiAsm Тех-вопросы/ Баги компонентов, для постинга подобных тем.

Да это можно.

Попробуй так:

Код:
procedure THIMainForm._work_doMinimize;
begin
  _prop_SavePosition(true);
  Applet.WindowState := wsMinimized;
end;

Мерцание в твоём случае может и не исчезнет но позиция должна сохранятся.

0

3

andrestudio написал(а):

У меня такой эффект не проявляется. Я обновлениями не пользуюсь. Но Win.pas у меня потерпел изрядные изменения. (может быть из за этого)

Какая ось стоит? Если про обновления винды, то я тоже не пользуюсь, но и они здесь не причём, т.к. другие сторонние приложения ведут себя нормально. По поводу твоего Win.pas — можешь проверить поведение на стандартной или нулёвой Alt сборке?

andrestudio написал(а):

Попробуй обновится с SVN, вероятность что что-то поправили всё же остаётся.

И обновлялся и не обновлялся, и AltBuild и не AltBuild - всё то же самое.

andrestudio написал(а):

Попробуй так:

Там API сохранение, оно идёт автоматически, безо всяких дополнительных вызовов. Позже выкладу, посмотришь.

***

Что примечательно, если просто кликнуть в любое другое окно, при запущенной (не свёрнутой) форме — оно всё также верно деактивируется (как если кликнуть по ТаскБару), только вот при закрытии всё то же мерцание происходит (всё та же активация перед закрытием). Только что установил для проверки нулёвую 4.05b186 — без изменений.

P.S. Чем видео пишешь, когда в гифки загоняешь? Запишу, покажу, мб ты не так понял, в чём проблема.

***

Записал гифку. Первый запуск — окно активно → баг; второй запуск — окно неактивно → норм): https://gifyu.com/image/Jt2D

Отредактировано Vanchila (2021-09-15 02:10:50)

0

4

Проверил на пакете CNET — минимизация работает правильно (и, соответственно, закрытие не мерцает), как у других приложений, сделанных не в Хайке. Получается, проблема в KOL'е?  :confused:

Отредактировано Vanchila (2021-09-15 04:11:57)

0

5

Vanchila
Так и не удалось повторить твой баг. Win7 x32,64 (10 нет)
По идеи при развертывании окна форма получает WS_SHOW, копай туда.

Vanchila написал(а):

P.S. Чем видео пишешь, когда в гифки загоняешь?

oCam

0



Рейтинг форумов | Создать форум бесплатно