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.
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
Post a Comment