又是很容易拿到的100分!!请问这种效果如何实现?!(100分)

  • 主题发起人 主题发起人 crazyD
  • 开始时间 开始时间
C

crazyD

Unregistered / Unconfirmed
GUEST, unregistred user!
点DBGRID格里面的某一条记录,然后点击“打印按钮”,这时候这条记录的所在的格
变化了颜色,并打印出报表。但是我不让报表预览的窗体出现。怎么实现的功能呢?!
还有 如的达到双击DBGRID格的某条记录也直接实现打印!
 
这还得看你用什么报表控件了...推荐用FR,不难的...
 
同意,转楼下同志阅
 
应该很容易的吧~~你是用什么做打印的~~要打印的格式是怎么样的,你都没说清楚
 
不让预览窗口出现就直接用QuickRep1.Print就可以,双击某条记录打印直接在DBGrid的双击事件里写代码就可以了。
 
请问FR哪里有啊我没用过的?
 
不要太依靠什么控件了,我已写好单击一个打印按钮而DBGrid的当前行变色的功能。你再配上打印程序就可以了。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids;
type
TForm1 = class(TForm)
dbgrdOne: TDBGrid;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
DataSource1: TDataSource;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure dbgrdOneDrawColumnCell(Sender: TObject;
const Rect: TRect;
DataCol: Integer;
Column: TColumn;
State: TGridDrawState);
procedure FormCreate(Sender: TObject);
procedure ADOTable1AfterScroll(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
G_i: integer;
G_IsPrint: boolean;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
G_IsPrint := true;
dbgrdOne.Repaint;
end;

procedure TForm1.dbgrdOneDrawColumnCell(Sender: TObject;
const Rect: TRect;
DataCol: Integer;
Column: TColumn;
State: TGridDrawState);
begin
if (G_i = dbgrdOne.DataSource.DataSet.RecNo) and
G_IsPrint then
begin
dbgrdOne.Canvas.Brush.Color := clBlue;
//G_IsPrint := false;
dbgrdOne.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end
else
dbgrdOne.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
G_IsPrint := false;
end;

procedure TForm1.ADOTable1AfterScroll(DataSet: TDataSet);
begin
G_i := ADOTable1.RecNo;
end;

end.
 
FR就是FastReport,其实这东西只是相对好而已不知道中国的开发行业的人怎么这么一呼拢,以前用FR的很少最近几乎都用它了,说到底用QuickReport就可完成。
 
后退
顶部