Solved

TDbCtrlGrid: how to draw a transparent image?

Posted on 2008-10-20
4
1,870 Views
Last Modified: 2013-11-23
Hi,
I've a TDBGrid-component and want to draw images on it depending from an integer-value in the database. It'works well, but I can't make the images transparent. There are simple images, I put the images-background to color clBtnFace and draw i.e a green rectangle. On the CtrlGrid the background of the image is always white. I tried to set the "TransparentColor" but without success. The images are 24Bit. Her's my code:

procedure TForm1.DBCtrlGrid1PaintPanel(DBCtrlGrid: TDBCtrlGrid;
  Index: Integer);
var
  bitmap : TBitmap;
  fixRect : TRect;
  vTyp : integer;
begin
    vTyp :=  DBCtrlGrid.DataSource.DataSet.FieldByName('Typ').AsInteger;
    if vTyp < ImageList1.Count then
    begin
      bitmap := TBitmap.Create;
      try
        ImageList1.GetBitmap(vTyp,bitmap);
        fixRect.Top := 0;
        fixRect.Bottom := fixRect.Top+32;
        fixRect.Left := E_Typ.Left+ E_Typ.Width + 3;
        fixRect.Right := fixRect.Left+32;
        DBCtrlGrid.Canvas.StretchDraw(fixRect,bitmap);
      finally
        FreeAndNil(bitmap);  
      end;
    end;
end;

Thanks for your help, Peter
0
Comment
Question by:formi
  • 2
4 Comments
 
LVL 10

Accepted Solution

by:
atul_parmar earned 250 total points
ID: 22783546
Hi, add the following line before you draw the image. I've attached the resultant snippet also.

DBCtrlGrid.Canvas.CopyMode := cmMergeCopy;

Atul
procedure TForm1.DBCtrlGrid1PaintPanel(DBCtrlGrid: TDBCtrlGrid;

  Index: Integer);

var

  bitmap : TBitmap;

  fixRect : TRect;

  vTyp : integer;

begin

    vTyp :=  DBCtrlGrid.DataSource.DataSet.FieldByName('Typ').AsInteger;

    if vTyp < ImageList1.Count then

    begin

      bitmap := TBitmap.Create;

      try

        ImageList1.GetBitmap(vTyp,bitmap);

        fixRect.Top := 0;

        fixRect.Bottom := fixRect.Top+32;

        fixRect.Left := E_Typ.Left+ E_Typ.Width + 3;

        fixRect.Right := fixRect.Left+32;

        DBCtrlGrid.Canvas.CopyMode := cmMergeCopy;

        DBCtrlGrid.Canvas.StretchDraw(fixRect,bitmap);

      finally

        FreeAndNil(bitmap);  

      end;

    end;

end;

Open in new window

0
 

Author Comment

by:formi
ID: 22783677
Great, it works. Thank a lot!
0
 

Author Closing Comment

by:formi
ID: 31507785
Yes, it works! Great and thanks a lot! (I'm new in experts-exchange and so I didn't saw the button to accept the solution and to send comments to you, so I added a small comment). Peter
0
 
LVL 16

Expert Comment

by:CodedK
ID: 22784020
Hi formi,

Give it a show with icons.
TICon.Create  etc...

Alternative solution is to use TMS components.
http://www.tmssoftware.com/site/gridpack.asp
They have very good components (but expensive).

Another solution is to try with Bergsoft
http://www.bergsoft.net/
Overview : http://www.bergsoft.net/component/next-dbgrid/overview.htm
you can download a demo to see for yourself...

Hope this helps :)
0

Featured Post

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
has77  challenge 9 68
tripleUp challenge 7 67
Change to event 1 73
t-sql sp_addlinkedserver possible risks 3 9
If you haven’t already, I encourage you to read the first article (http://www.experts-exchange.com/articles/18680/An-Introduction-to-R-Programming-and-R-Studio.html) in my series to gain a basic foundation of R and R Studio.  You will also find the …
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now