PDA

View Full Version : چطور DBGrid را Transparent کنیم



mahdy.asia
دوشنبه 10 آذر 1393, 05:59 صبح
من نیاز دارم دی بی گریدی در فرم استفاده کنم که تصویر زیری آن دیده بشه (Transparent) چطور می تونم این کار رو انجام بدم

دلفــي
دوشنبه 10 آذر 1393, 07:30 صبح
unit fTransparentGrid;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, Db, Grids, DBGrids, ADODB, ExtCtrls;

type
TForm1 = class(TForm)
ADOTable1: TADOTable;
DataSource1: TDataSource;
Image1: TImage;
Panel1: TPanel;
DBGrid1: TDBGrid;
procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var
Text: string;
Rct: TRect;
begin
Text := Field.AsString;
Rct:= Rect;

BitBlt(DBGrid1.Canvas.handle,
Rct.left,
Rct.top,
Rct.right - Rct.left,
Rct.bottom - Rct.top,
Image1.Canvas.Handle,
Rct.left + DBGrid1.Left + Panel1.Left,
Rct.Top + DBGrid1.Top + Panel1.Top,
SRCCOPY);

SetBkModE(DBGrid1.Canvas.Handle, TRANSPARENT);
DBGrid1.Canvas.Font.Style := [fsBold];
DrawtextEx(DBGrid1.Canvas.Handle,
PChar(Text),
Length(Text),
Rct,
DT_WORDBREAK,
nil);

end;

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Panel1.Perform(WM_SYSCOMMAND, $F012, SC_MOVE);
Application.ProcessMessages ;

BitBlt(GetDc(Panel1.Handle),
0,
0,
Panel1.Width,
Panel1.Height,
Image1.Canvas.Handle ,
Panel1.Left, Panel1.Top,
SRCAND);

DBGrid1.refresh;
end;

end.

mahdy.asia
پنج شنبه 20 آذر 1393, 16:31 عصر
من این کد را در دلفی xe7 استفاده کردم DBGrid را Transparent نمی کند

hadisalahi2
پنج شنبه 20 آذر 1393, 18:52 عصر
بهتره از گریدهایی مثل ehlib استفاده کنی که امکانات زیادی دارن

mahdy.asia
چهارشنبه 10 دی 1393, 09:34 صبح
من امکانات زیاد نمی خوام فقط می خوام تصویر زیر DbGrid دیده بشه