Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 413

Раздел: Delphi » Прочее
/ вопрос открыт /

Шановне панство,есть некая програмка:значит форма borderstyle=bsNone,с помощью SetWindowRgn придаём ей нужную форму,в onPaint рисуется рамка по краю и вертикальный TitleBar,т.ж на форме лежит ТImage и по таймеру посредством copyrect на его canvas производится отрисовка(+ 3 буферных TImage).Всё работает,но минут (проверено неоднократно) через 5-6 вылетает окно "canvas does not allow drawing",и в левом верхнем углу монитора(!) остаётся белый след от формы,хотя она остаётся на том-же месте где и была (физически её никто не трогал,да и комп тоже), сбрасываем диспетчером задач.всё.При следующем запуске имеем тоже самое.Я понимаю,что сие есть какой-то конфликт по WM_PAINT,но никаких вариантов почему сие имеет место быть.Если закоментировать отрисовку в form.formpaint то всё идёт без срывов.Собственно там у меня всего(1) было.Перенёс и это дело в таймер - эфект тот-же.Сразу скажу что VerticalTitleBar работает в других программах нормально,да и удаление его ничего не меняет,оставлял один RoundRect - всеравно валится...HELP.

Приложение:
  1. 1.============================
  2. Canvas.RoundRect(0,0,EQForm.clientWidth-1,EQForm.clientHeight-1,30,30);
  3. VerticalTitleBar(MY_TITLE_TEXT, 12);
  4.  


Роман Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Роман (статус: 5-ый класс)
Вопрос отправлен: 16 марта 2007, 21:47
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 17 марта 2007, 19:39; участников в обсуждении: 2.
Alex Van Glukhman

Alex Van Glukhman (статус: 7-ой класс), 17 марта 2007, 10:22 [#1]:

А можно код поподробнее
Роман

Роман (статус: 5-ый класс), 17 марта 2007, 19:39 [#2]:

Вcё заработало, как оказалось проблемма была в процедуре перетаскивания окна:
procedure TEQForm.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbLeft) and XYIntoRect(x,y,tmpRect) then
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND, $F012, 0);
end;
end;

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:41
Выполнено за 0.02 сек.