Skip to main content

Cara Membuat Efek Disabled Bitmap Di Delphi

Saat Anda mengisi property Glyph pada TBitBtn, misalnya, dengan suatu bitmap dan mendisable TBitBtn tersebut, maka bitmap yang tampil pada TBitBtn akan berwarna abu-abu. Itulah yang disebut disabled bitmap.

efek disabled bitmap di delphi

Jika Anda ingin membuat suatu disabled bitmap pada suatu TImage, Anda dapat menggunakan prosedur CreateDisabledBitmap.

procedure CreateDisabledBitmap(Source, Destination: TBitmap);

Prosedur CreateDisabledBitmap mempunyai dua parameter. Parameter pertama merupakan bitmap asal (gambar asli sebagai acuan gambar untuk diterapkan efek disabled) sedangkan parameter kedua merupakan bitmap tujuan yang akan digunakan untuk menampilkan disabled bitmap.

Agar lebih mudah memahami, mari kita mencobanya secara langsung. Buatlah sebuah proyek baru dan tambahkan dua buah komponen TImage. Pada TImage pertama, isi property Picture dengan sebuah bitmap (*.bmp). Tambahkan komponen TButton untuk meletakkan kode untuk memanggil prosedur yang akan menerapkan efek disabled.

Kode selengkapnya untuk membuat disabled bitmap adalah sebagai berikut:

unit UMain;

interface

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

type
  TFrmDisableBitmap = class(TForm)
    Image1: TImage;
    Image2: TImage;
    BitBtn1: TBitBtn;
    Label1: TLabel;
    Label2: TLabel;
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
    procedure CreateDisabledBitmap(Source, Destination: TBitmap);
  public
    { Public declarations }
  end;

var
  FrmDisableBitmap: TFrmDisableBitmap;

implementation

{$R *.dfm}

procedure TFrmDisableBitmap.BitBtn1Click(Sender: TObject);
var
  Destination: TBitmap;
begin
  Destination:= TBitmap.Create;
  try
    CreateDisabledBitmap(Image1.Picture.Bitmap, Destination);
    Image2.Picture.Bitmap.Assign(Destination);
  finally
    Destination.Free;
  end;
end;

procedure TFrmDisableBitmap.CreateDisabledBitmap(Source, Destination: TBitmap);
const
  ROP_DSPDxax = $00E20746;
var
  DDB, MonoBmp: TBitmap;
  IWidth, IHeight: Integer;
  IRect: TRect;
begin
  IWidth:= Source.Width;
  IHeight:= Source.Height;
  Destination.Width:= IWidth;
  Destination.Height:= IHeight;
  IRect:= Rect(0, 0, IWidth, IHeight);
  Destination.Canvas.Brush.Color:= clBtnFace;
  Destination.Palette:= CopyPalette(Source.Palette);
  MonoBmp:= Nil;
  DDB:= Nil;

  try
    MonoBmp:= TBitmap.Create;
    DDB:= TBitmap.Create;
    DDB.Assign(Source);
    DDB.HandleType:= bmDDB;

    with MonoBmp do
    begin
      Assign(Source);
      HandleType:= bmDDB;
      Canvas.Brush.Color:= clBlack;
      Width:= IWidth;
      if Monochrome then
      begin
        Canvas.Font.Color:= clWhite;
        Monochrome:= False;
        Canvas.Brush.Color:= clWhite;
      end;
      Monochrome:= True;
    end;
    with Destination.Canvas do
    begin
      Brush.Color:= clBtnFace;
      FillRect(IRect);
      Brush.Color:= clBtnHighlight;
      SetTextColor(Handle, clBlack);
      SetBkColor(Handle, clWhite);
      BitBlt(Handle, 1, 1, IWidth, IHeight, MonoBmp.Canvas.Handle, 0, 0, ROP_DSPDxax);
      Brush.Color:= clBtnShadow;
      SetTextColor(Handle, clBlack);
      SetBkColor(Handle, clWhite);
      BitBlt(Handle, 0, 0, IWidth, IHeight, MonoBmp.Canvas.Handle, 0, 0, ROP_DSPDxax);
    end;
  finally
    DDB.Free;
    MonoBmp.Free;
  end;
  Source.Dormant;
end;

end.

Anda bebas menyalin kode di atas serta mengembangkannya untuk keperluan Anda. Semoga bermanfaat. Salam.

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 Aplikasi Di Qlik Sense

Salah satu kelebihan Qlik Sense dari software BI lainnya terletak pada penggunaannya yang begitu intuitif sehingga memberikan pengalaman pengguna yang mudah, menyenangkan, dan yang paling penting, fitur-fitur dalam Qlik Sense tersebut mudah dipelajari sehingga Anda akan relatif cepat menguasainya dan Anda dapat lebih fokus pada apa yang ingin Anda buat daripada memikirkan bagaimana cara membuatnya. Seperti yang telah saya jelaskan pada artikel sebelumnya, aplikasi Qlik Sense merupakan sebuah file yang berekstensi qvf . Di dalam aplikasi Qlik Sense terdiri dari sejumlah Sheet atau lembar kerja, di mana dalam sheet tersebut Anda membuat visualisasi data Anda. Anda dapat membuat lebih dari satu sheet dalam sebuah aplikasi Qlik Sense Anda, dan antar sheet akan saling terhubung satu sama lain. Membuat aplikasi di Qlik Sense begitu mudah dan intuitif. berikut langkah-langkahnya: Jalankan Qlik Sense. Setiap Qlik Sense dijalankan pertama kali akan menampilkan popup window selamat da

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.