Skip to main content

Memberikan Background Image Pada Form MDI Di Delphi

Bagaimanakah cara memberikan background image pada form MDI di Delphi, seperti pada gambar?

cara memmasang background image pada form mdi

Bagi Anda yang sedang membutuhkan solusinya, silahkan Anda tulis dan pelajari kodenya. Semoga bermanfaat.

unit UMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, jpeg;

type
  TFrmMDI = class(TForm)
    Image1: TImage;
  private
    { Private declarations }
    FDrawDC: HDC;
    FOldClientProc, FNewClientProc: TFarProc;

    procedure DrawStretched;
    procedure DrawCentered;
    procedure DrawTiled;
    procedure CreateWnd; override;
    procedure ClientWndProc(var Mesg: TMessage);
  public
    { Public declarations }
  end;

var
  FrmMDI: TFrmMDI;

implementation

{$R *.dfm}

procedure TFrmMDI.ClientWndProc(var Mesg: TMessage);
begin
  with Mesg do
    case Msg of
      WM_ERASEBKGND:
        begin
          CallWindowProc(FOldClientProc, ClientHandle, Msg, wParam, lParam);
          FDrawDC := TWMEraseBkgnd(Mesg).DC;
          // anda dapat memilih DrawCentered, DrawTiled, DrawStretched
          // DrawCentered;

          DrawTiled;
          // DrawStretched;
          Result := 1;
        end;
      WM_VSCROLL, WM_HSCROLL:
        begin
          Result := CallWindowProc(FOldClientProc, ClientHandle, Msg, wParam,
            lParam);
          InvalidateRect(ClientHandle, nil, True);
        end;
    else
      Result := CallWindowProc(FOldClientProc, ClientHandle, Msg, wParam,
        lParam);
    end;
end;

procedure TFrmMDI.CreateWnd;
begin
  inherited CreateWnd;
  FNewClientProc:= MakeObjectInstance(ClientWndProc);
  FOldClientProc:= Pointer(GetWindowLong(ClientHandle, GWL_WNDPROC));
  SetWindowLong(ClientHandle, GWL_WNDPROC, LongInt(FNewClientProc));
end;

procedure TFrmMDI.DrawCentered;
var
  CR: TRect;
begin
  GetWindowRect(ClientHandle, CR);
  with Image1 do

    BitBlt(FDrawDC, 50, 50, Picture.Graphic.Width, Picture.Graphic.Height,
      Picture.Bitmap.Canvas.Handle, 0, 0, SRCCOPY);
end;

procedure TFrmMDI.DrawStretched;
var
  CR: TRect;
begin
  GetWindowRect(ClientHandle, CR);
  StretchBlt(FDrawDC, 0, 0, CR.Right, CR.Bottom, Image1.Picture.Bitmap.Canvas.Handle, 0, 0,
    Image1.Picture.Width, Image1.Picture.Height, SRCCOPY);
end;

procedure TFrmMDI.DrawTiled;
var
  Row, Col: Integer;
  CR, IR: TRect;
  NumRows, NumCols: Integer;
begin
  GetWindowRect(ClientHandle, CR);
  IR:= Image1.ClientRect;
  NumRows:= CR.Bottom div IR.Bottom;
  NumCols:= CR.Right div IR.Right;
  with Image1 do
    for Row:= 0 to NumRows + 1 do
      for Col:= 0 to NumCols + 1 do
        BitBlt(FDrawDC, Col * Picture.Width, Row * Picture.Height,
          Picture.Width, Picture.Height, Picture.Bitmap.Canvas.Handle,
          0, 0, SRCCOPY);
end;

end.

Comments

Popular posts from this blog

Pengenalan Dasar Qlik Sense

Dewasa ini konsep penyajian data informasi banyak mengalami perubahan yang menggembirakan. Jika dahulu, konsep penyajian data adalah dalam bentuk larik-larik data berisi teks dan biasanya tidak dinamis dan tidak interaktif. Sekarang, seiring dengan pertumbuhan data informasi yang masif, dibutuhkan sebuah teknik penyajian data yang semakin sederhana namun memuat banyak informasi, tersaji secara dinamis dan interaktif, menjadikan pekerjaan analisis data lebih menyenangkan dari sebelumnya. Di sinilah konsep Business Intelligence berawal. Idenya adalah, saya sajikan kepada Anda begitu banyak informasi yang tentu saja yang Anda butuhkan, dalam format visual yang bersih, informatif, dinamis, dan interaktif dalam layar komputer Anda. Qlik Sense merupakan sebuah Aplikasi Reporting untuk keperluan Bussiness Intelligence. Merupakan pengembangan dari aplikasi BI pendahulunya yaitu QlikView . Qlik Sense pada dasarnya sama dengan QlikView . Hanya saja Qlik Sense lebih menekankan pada ide ...

Cara Membuat Dan Menggunakan Unit Di Delphi

Artikel ini adalah lanjutan dari artikel Bekerja Dengan Unit Di Delphi .  Untuk membuat unit baru, pilih menu File | New | Unit . Listing di bawah ini merupakan suatu contoh unit yang dibuat Delphi. unit Unit2; interface implementation end.

Pengenalan ASP.NET MVC : Buat Aplikasi Web MVC Pertama Anda

Artikel ini merupakan bagian pertama dari rangkaian tema pengenalan ASP.NET MVC 5. Pada bab pertama ini akan menunjukkan pada Anda bagaimana membuat aplikasi web ASP.NET MVC 5 untuk pertama kali. Bagi Anda yang seorang web developer atau mungkin seorang mahasiswa yang mempelajari pemrograman web, jika Anda mengikuti perkembangan framework web, mungkin Anda tidak asing dengan istilah MVC. MVC ( Model View Controller ) bisa dikatakan adalah sebuah metode yang digunakan dalam lingkungan pengembangan yang membedakan antara logika program dan presentasi / tampilan program, sehingga lebih mudah untuk mendelegasikan tugas: bagian yang khusus menangani tampilan dan bagian yang khusus menangani logika aplikasi. Pada artikel ini belum akan membahas lebih dalam tentang konsep MVC ini. Kita akan membahas lebih lanjut tentang konsep MVC pada artikel selanjutnya. Saat ini Anda akan belajar membuat aplikasi web ASP.NET MVC Anda, dan untuk saat ini tanpa mengetikkan sebaris kode pun. Langkah...