C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Проблемы с OnPaint()
BEERZONE
Отправлено: 20.10.2006, 19:56


Ученик-кочегар

Группа: Участник
Сообщений: 21



Суть проблемы в следующем: в обработчике FormPaint() рисую что-нибудь простыми MoveTo(), LineTo(). В результате, если над формой своего приложения "водить" другим приложением, то все нормально. Но если не "водить", а просто сделать Activate() другое приложение, потом свое,соответственно, Activate(). В результате, никакого OnPaint().
Прошелся пошагово, понял, что сначала выполняется OnPaint() "внизу", потом форма выскакивает наверх уже с пустым Canvasом. Загнал все ето хозяйство в таймер, чтобы задержка была по времени пока форма наверх выскакивает, работает. Только коряво все ето, хочется по-нормальному сделать. Подскажите пожалуйста как?
Admin
Отправлено: 20.10.2006, 20:51


Владимир

Группа: Администратор
Сообщений: 1190



А каким образом делаете Activate() другого приложения,
а потом своего ?

Может в FormActivate вставить вызов: FormPaint(Sender);
BEERZONE
Отправлено: 20.10.2006, 21:21


Ученик-кочегар

Группа: Участник
Сообщений: 21



Просто мышью кликаю. Формы каскадом расположены. В FormActivate пробовал до ApplicationActivate. Эффекта никакого. Сначала OnPaint() выполняется (внизу), потом форма выпрыгивает наверх уже пустая
Admin
Отправлено: 20.10.2006, 21:26


Владимир

Группа: Администратор
Сообщений: 1190



Странно, у меня работает нормально.

CODE

//---------------------------------------------------------------------------

void __fastcall TForm1::FormPaint(TObject *Sender)
{
Canvas->FillRect(ClientRect);
Canvas->MoveTo(0, 0);
Canvas->LineTo(100, 100);

}
//---------------------------------------------------------------------------


может рисуете не на Canvas формы ?
BEERZONE
Отправлено: 20.10.2006, 22:03


Ученик-кочегар

Группа: Участник
Сообщений: 21



Рисую на Label->Canvas
BEERZONE
Отправлено: 21.10.2006, 00:26


Ученик-кочегар

Группа: Участник
Сообщений: 21



Вопрос снимается с повестки дня. Нашел решение с PaintBox.

Вернуться в Вопросы программирования в C++Builder