Forum Replies Created
-
AuthorPosts
-
Bat1
ParticipantЧаще всего это бывает после того как винда пишет “Программа не отвечает” в заголовке (напр. можно поставить Sleep(10000), а после этого показать какое-нибудь окно в ShowModal).
Bat1
ParticipantВ 8.10 все осталось по прежнему 🙁
Bat1
ParticipantНавряд ли это норма, т.к. при OwnerData = false + Drag&Drop отрисовка идет нормально (по крайней мере в этом случае), но тогда компонент в целом жутко тормозит.
Но намечена еще другая глюка:
ViewStyle = vsReport
RowSelect = false
Selected строки скинируются не полностью, конкретнее сам элемент скинируется, а вывод текста затирает фон (см. скриншот п.1). При RowSelect = true все ровно отображается.
PS: кто подскажет, как отключить показ hint-а, если ширина колонки недостаточна (см. скриншот п.2)?
[attachment=5840:Untitled-1.jpg]
Bat1
ParticipantПодтверждаю для AC 7.69 + глюка №2 проще показать, чем описать: http://youtu.be/4ypHfsz5QK4 (перетаскиваю 1 элемент)
[attachment=5836:Clipboard01.jpg]
Bat1
ParticipantДа, не просто медленной, а очень медленной. Один кадр в секунду, так сказать…
Bat1
ParticipantДемка 7.67 также глючит.
На всякий случай вот свойства того компа
[attachment=5782:Untitled-1.jpg]
Bat1
ParticipantДополнение. ExtendedBorders тут не причем. Проблема в анимации Minimizing. Причем если ее отключить, то начинает колбасить перерисовку на Win7 (сначала форма заграшивается черным, потом на ней уже рисуются контролы).
Bat1
ParticipantВ догонку еще одна глюка.
Сворачивание окна на WinXP SP2 (на SP3 не проверял) происходит очень-очень медленно, примерно 1 шаг анимации в секунду. Тема стоит классическая (как в 2000). На Win7 все Ok.
Bat1
ParticipantМда. Большая ж… Попробую тогда вынести долгие операции в отдельный поток, уж тогда точно не сглючит 😮
Bat1
ParticipantДа, это работает.
Тогда предлагаю сделать в функции 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.
Bat1
ParticipantА что за сообщение? Попробую отловить и послать все же перерисовку, вдруг прокатит?
Bat1
Participant'Support' wrote:Не получится, это не проблема перерисовки, а проблема в том, что Windows всегда сама зарисовывает потом эту часть.
Но ведь рамка окна скинирована. Значит вызывается какая-то функция пакета для отрисовки. А это значит из нее можно послать invalidate окну, у которого перерисовывается рамка. Мне так кажется…
Или ограничить перересовку рамки регионами (хотя это наверное как раз и не получится, но как идея…).
Bat1
ParticipantСпасибо.
А можно ссылочку на заплатку?
Bat1
Participant'Support' wrote:1. Под Win7 не удается корректно запретить отрисовку этого элемента системой. Возможно раньше скинилось из-за того, что система была другая.
Может есть какая-то возможность определять, что рамка перерисовывается, и соответственно послать invalidate всему окну целиком?
'Support' wrote:2. Попробую сделать тестовое приложение, но если у вас оно уже есть, то будет быстрее )Попробую вырезать из этого приложения все лишнее и съэмулировать “полезную” работу.
Bat1
ParticipantСпасибо, ждем для XE…
Bat1
ParticipantНу в общем-то в прикрепленной демке видно отличие стандартных Dialogs от sDialogs…
Bat1
Participant'Feg16' wrote:Хм, а я всегда списывал этот баг на винду :/
А кто-нибудь знает почему это происходит? Проявляется ведь не всегда…
Bat1
ParticipantОбычная главная форма, параметры стандартные (не менялись), на нее положены 5 штук TDBLookpComboboxEh и TLabel и один TDBGrid.
Сделана была исключительно для тестов базы данных. Но вот такой глюк.
Кроме того уже в нормальном приложении замечено, что если модальная форма вызывает sMessageDlg, то это окно с сообщением иногда показывается за всеми окнами, увидеть его можно только переключившись сначала куда-нибудь Alt+Tab, а потом обратно на приложение…
Bat1
ParticipantЧто ж, теперь попробую. Вроде ничего сложного на первый взгляд.
Как только мальца времени появится – займусь.
Bat1
Participant'alex000' wrote:Если есть желающие – могу выдать исходники, но вряд ли кто-то за это возьмется.
Поделитесь, хоть посмотрим.
Я, к стати, вообще не нашел где эти кнопки рисуется 🙁 Можно было бы хотя бы попробовать переделать компонент под себя. А то получается, что аналога даже и нету, стандартный переделывать лень даже начинать, а вдруг здесь удастся отрисовку заменить…
-
AuthorPosts