Forum Replies Created
-
AuthorPosts
-
Bat1Participant
Чаще всего это бывает после того как винда пишет “Программа не отвечает” в заголовке (напр. можно поставить Sleep(10000), а после этого показать какое-нибудь окно в ShowModal).
Bat1ParticipantВ 8.10 все осталось по прежнему 🙁
Bat1ParticipantНавряд ли это норма, т.к. при OwnerData = false + Drag&Drop отрисовка идет нормально (по крайней мере в этом случае), но тогда компонент в целом жутко тормозит.
Но намечена еще другая глюка:
ViewStyle = vsReport
RowSelect = false
Selected строки скинируются не полностью, конкретнее сам элемент скинируется, а вывод текста затирает фон (см. скриншот п.1). При RowSelect = true все ровно отображается.
PS: кто подскажет, как отключить показ hint-а, если ширина колонки недостаточна (см. скриншот п.2)?
[attachment=5840:Untitled-1.jpg]
Bat1ParticipantПодтверждаю для AC 7.69 + глюка №2 проще показать, чем описать: http://youtu.be/4ypHfsz5QK4 (перетаскиваю 1 элемент)
[attachment=5836:Clipboard01.jpg]
Bat1ParticipantДа, не просто медленной, а очень медленной. Один кадр в секунду, так сказать…
Bat1ParticipantДемка 7.67 также глючит.
На всякий случай вот свойства того компа
[attachment=5782:Untitled-1.jpg]
Bat1ParticipantДополнение. ExtendedBorders тут не причем. Проблема в анимации Minimizing. Причем если ее отключить, то начинает колбасить перерисовку на Win7 (сначала форма заграшивается черным, потом на ней уже рисуются контролы).
Bat1ParticipantВ догонку еще одна глюка.
Сворачивание окна на WinXP SP2 (на SP3 не проверял) происходит очень-очень медленно, примерно 1 шаг анимации в секунду. Тема стоит классическая (как в 2000). На Win7 все Ok.
Bat1ParticipantМда. Большая ж… Попробую тогда вынести долгие операции в отдельный поток, уж тогда точно не сглючит 😮
Bat1ParticipantДа, это работает.
Тогда предлагаю сделать в функции sMessageDlgPosHelp такие изменения:
Code:…
FillChar(mParams, SizeOf(mParams), 0);
mParams.cbSize := SizeOf(mParams);
mParams.dwContextHelpId := HelpCtx;
mParams.dwStyle := Flags;
mParams.lpszCaption := PacChar(Caption);
mParams.lpszText := PacChar(Msg);
{==>> Изменить хендл <<==}
mParams.hwndOwner := Application.ActiveFormHandle;//Application.Handle;
{$T-}
mParams.lpfnMsgBoxCallback := @MsgBoxCallback;
{$T+}{==>> Добавить <<==}
WindowList := DisableTaskWindows(0);{$IFDEF TNTUNICODE}
Result := integer(MessageBoxIndirectW(mParams));
{$ELSE}
Result := integer(MessageBoxIndirect(mParams));
{$ENDIF}{==>> Добавить <<==}
EnableTaskWindows(WindowList);…
Замена хендла для Owner с Application на активное окно позволяет решить проблему с переключением по Alt-Tab на другое приложение и последующий возврат опять к окну сообщению. Так переисовываются все окна программы, а не только MessageBox.
Bat1ParticipantА что за сообщение? Попробую отловить и послать все же перерисовку, вдруг прокатит?
Bat1Participant'Support' wrote:Не получится, это не проблема перерисовки, а проблема в том, что Windows всегда сама зарисовывает потом эту часть.
Но ведь рамка окна скинирована. Значит вызывается какая-то функция пакета для отрисовки. А это значит из нее можно послать invalidate окну, у которого перерисовывается рамка. Мне так кажется…
Или ограничить перересовку рамки регионами (хотя это наверное как раз и не получится, но как идея…).
Bat1ParticipantСпасибо.
А можно ссылочку на заплатку?
Bat1Participant'Support' wrote:1. Под Win7 не удается корректно запретить отрисовку этого элемента системой. Возможно раньше скинилось из-за того, что система была другая.
Может есть какая-то возможность определять, что рамка перерисовывается, и соответственно послать invalidate всему окну целиком?
'Support' wrote:2. Попробую сделать тестовое приложение, но если у вас оно уже есть, то будет быстрее )Попробую вырезать из этого приложения все лишнее и съэмулировать “полезную” работу.
Bat1ParticipantСпасибо, ждем для XE…
Bat1ParticipantНу в общем-то в прикрепленной демке видно отличие стандартных Dialogs от sDialogs…
Bat1Participant'Feg16' wrote:Хм, а я всегда списывал этот баг на винду :/
А кто-нибудь знает почему это происходит? Проявляется ведь не всегда…
Bat1ParticipantОбычная главная форма, параметры стандартные (не менялись), на нее положены 5 штук TDBLookpComboboxEh и TLabel и один TDBGrid.
Сделана была исключительно для тестов базы данных. Но вот такой глюк.
Кроме того уже в нормальном приложении замечено, что если модальная форма вызывает sMessageDlg, то это окно с сообщением иногда показывается за всеми окнами, увидеть его можно только переключившись сначала куда-нибудь Alt+Tab, а потом обратно на приложение…
Bat1ParticipantЧто ж, теперь попробую. Вроде ничего сложного на первый взгляд.
Как только мальца времени появится – займусь.
Bat1Participant'alex000' wrote:Если есть желающие – могу выдать исходники, но вряд ли кто-то за это возьмется.
Поделитесь, хоть посмотрим.
Я, к стати, вообще не нашел где эти кнопки рисуется 🙁 Можно было бы хотя бы попробовать переделать компонент под себя. А то получается, что аналога даже и нету, стандартный переделывать лень даже начинать, а вдруг здесь удастся отрисовку заменить…
-
AuthorPosts