Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.04;
Скачать: CL | DM;

Вниз

перерисовка MainForm   Найти похожие ветки 

 
koks ©   (2002-03-22 09:30) [0]

Уважаемые мастера - подскажите пожалуйста...
Главная форма - MDIForm. Использую "обои" для главной формы в виде bmp-картинки. Метод - из местного FAQ"а.
В программе вызываю модальный диалог, где можно менять картинку обоев.
После закрытия оного диалога по mrOk перерисовывается только та часть клиентской области главной формы, над которой висел диалог... Вся форма перерисовываться не хочет.
Пробовал:
fmMain.Update;

fmMain.Refresh;

fmMain.Repain;

begin
fmMain.Visible := false;
fmMain.Visible := true;
end;

Результат - тот же.

Подскажите, как принудительно перерисовать ВСЮ MDI - форму.

Заранее спасибо.


 
Alx2 ©   (2002-03-22 09:47) [1]

Попробуй UpdateWindow(MainForm.ClientHandle);
или Invalidate


 
Andrey007   (2002-03-22 10:25) [2]

А Вы рисуете на fmMain.Canvas или на каком-то другом холсте? Если на fmMain.Canvas, то повесив перерисовку на fmMain.OnPaint Вы решите все проблемы. Но при этом OnPaint будет вызываться при перемещении окон и при изменении размеров окон, перекрывающих картинку. Чтобы этого избежать, надо картинку рисовать на TImage. Она будет перерисовываться только при закрытии окна, загораживающего картинку. TImage, естественно, надо развернуть на всю форму.


 
koks ©   (2002-03-22 11:32) [3]

Я рисую вот как:

procedure TfmMain.ClientWndProc(var Message: TMessage);
var
Dc: hDC;
Row: integer;
Col: integer;
begin
with Message do
if UsePictureAtBackground and (Msg = WM_ERASEBKGND) then
begin
Dc := TWMEraseBkGnd(Message).Dc;
for Row := 0 to ClientHeight div imBackground.Picture.Height do
for Col := 0 to ClientWidth div imBackground.Picture.Width do
BitBlt(Dc, Col * imBackground.Picture.Width,
Row * imBackground.Picture.Height,
imBackground.Picture.Width,
imBackground.Picture.Height,
imBackground.Picture.Bitmap.Canvas.Handle, 0, 0, SRCCOPY);
Result := 1;
end
else
Result := CallWindowProc(FPrevClientProc, ClientHandle, Msg, wParam, lParam);
end;


 
koks ©   (2002-03-22 11:46) [4]

В догонку- UpdateWindow то же не помогло....
Они все друг-друга вызывают, поэтому и результат одинаковый.
Здесь какой-то другой путь... Подскажите пожалуйста !


 
reonid ©   (2002-03-22 12:14) [5]

var R: TRect;
R := MainForm.ClientRect;
InvalidateRect(MainForm.ClientHandle, @R, True);


 
koks ©   (2002-03-22 14:47) [6]

2 reonid С П А С И Б А !!!!



Страницы: 1 вся ветка

Текущий архив: 2002.04.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
1-9477
Serd_hhc
2002-03-25 11:50
2002.04.04
Как проиграть MP3 - файл ?


1-9474
Varg
2002-03-25 17:07
2002.04.04
Как передать значения параметров в др. процедуру?


1-9579
andreyDAN
2002-03-23 11:03
2002.04.04
Работа с autuCAD через Delphi6


1-9437
bobr12
2002-03-22 16:19
2002.04.04
Создание help-файла


1-9452
Андрей Сенченко
2002-03-25 13:13
2002.04.04
StringGrid ... достал уже если честно своей простотой..