На главную
Подписка
Новости


Рейтинг@Mail.ru











Главная / DELPHI / Часто задаваемые вопросы и ответы на них / Пользовательский интерфейс / Как сделать родительское окно с фоновым рисунком в клиентской области? Сделать домашней страницей Добавить в избранное Написать писмо

Как сделать родительское окно с фоновым рисунком в клиентской области?


Для того чтобы сделать это выполните следующие шаги:
      Срздайте новый проект.
Установите FormStyle формы в fsMDIForm
Разместите Image на форме и загрузите в него картинку.
Найдите { Private Declarations } в обьявлении формы и
добаьте следующие строки:

  FClientInstance : TFarProc;
  FPrevClientProc : TFarProc;
  procedure ClientWndProc(var Message: TMessage);

Добаьте следующие строки в разделе implementation:

procedure TMainForm.ClientWndProc(var Message: TMessage);
var
  Dc : hDC;
  Row : Integer;
  Col : Integer;
begin
  with Message do
    case Msg of
      WM_ERASEBKGND:
      begin
        Dc := TWMEraseBkGnd(Message).Dc;
        for Row := 0 to ClientHeight div Image1.Picture.Height do
          for Col := 0 to ClientWidth div Image1.Picture.Width do
            BitBlt(Dc,
               Col * Image1.Picture.Width,
               Row * Image1.Picture.Height,
               Image1.Picture.Width,
               Image1.Picture.Height,
               Image1.Picture.Bitmap.Canvas.Handle,
               0,
               0,
               SRCCOPY);
          Result := 1;
      end;
      else
        Result := CallWindowProc(FPrevClientProc,
                                 ClientHandle,
                                 Msg,
                                 wParam,
                                 lParam);
  end;
end;

В методе формы OnCreate добавьте:

   FClientInstance := MakeObjectInstance(ClientWndProc);
   FPrevClientProc := Pointer(GetWindowLong(ClientHandle,
                              GWL_WNDPROC));
   SetWindowLong(ClientHandle,
                 GWL_WNDPROC, LongInt(FClientInstance));

Добавьте к проекту новую форму и установите ее свойство FormStyle в
fsMDIChild.

У Вас получился  MDI-проект с "обоями" в клиентской области MDI формы.


Источник: Дельфи. Вокруг да около.

Комментари от proton (avtograd) (NilSoft)
Такое делаетмя одной строкой.
 brush.bitmap := image1.picture.bitmap;
повесить это надо на onCreate.
и все, больше ни каких изврашений! :)

Copyright ©   "Мастера DELPHI"   E-mail:   delphi@mastak.com  http://www.delphimaster.ru
Источник получения информации: http://www.delphimaster.ru
Hosted by uCoz