行。自己输出:Printer.Canvas.TextOut( x, y, DBGrid1.Fields[i].DisplayText ); 自己计算x, y
解决方案 »
- 调用Delphi生成的DLL,退出程序后出现内存不能read!
- 这个DLL有错吗?(不好意思,没分了. 但请帮帮小弟)
- 怎样从AstaClientDataSet中读取一个类型为Text的字段并存放在memo组件中
- 怎样将oracle中long raw字段的图片,读出并保存为jpg格式图片?
- 如何将 edit 中的内容赋值给一个数组
- 怎样在字符串中引用符号'
- 100分求助,怎样在通过程序自定义设置系统区域和默认语言。急..........
- delphi会否没末落(读程序员第九期Borland天才的损失有感)
- 问一下得到当前用户登陆的域,和用户名,的API是那个啊?
- 各位大哥,关于abc601控件包的问题?
- 请问一下如何得到EDIT控件中插入符的位置(在哪个字符的后面)
- 有无表达类似回路图结构(多节点间有连通)的控件?
如果可以,那么怎么写,尤其是那个表格框怎么控制呢??我可用分比较多,但参与分不多,所以能给的分数不多,如果那位帮我解决了,我另外开几个帖子,给他300分。
Printer.Canvas.TextOut
就象画图一样。只是比较复杂,繁琐而已。
再画列
在一个循环(行)填写数据
用的是
printer.canvas.moveto( , )
printer.canvas.lineto( , )
printer.textout( , , )
回不正常,用ix;=getdevicecaps(.. )
iy:=getdevicecaps(.. )
x:=ix/10 OR X:=ix/20
y:=iy/10 or y:=iy/20
x,y 就是你定位时用的度量单位
建议这么做
Rename you QuickRep to GridRep. Then make a Preview that receives a DBGrid as parameter, just like this: procedure TGridReport.Preview(Grid: TDBGrid);
var
i, CurrentLeft, CurrentTop : integer;
BMark: TBook;
begin
GridRep.Dataset:=Grid.DataSource.DataSet; if not GridRep.Bands.HasColumnHeader then
GridRep.Bands.HasColumnHeader:=true; if not GridRep.Bands.HasDetail then
GridRep.Bands.HasDetail:=true; GridRep.Bands.ColumnHeaderBand.Height:=Abs(Grid.TitleFont.Height) + 10;
GridRep.Bands.DetailBand.Height:=Abs(Grid.Font.Height) + 10;
CurrentLeft := 12;
CurrentTop := 6; {Record where the user stopped in the DBGrid}
BMark:=Grid.DataSource.DataSet.GetBook;
{Don't let the grid flicker while the report is running}
Grid.DataSource.DataSet.DisableControls;
try
for i:=0 to Grid.FieldCount - 1 do
begin
if (CurrentLeft + Canvas.TextWidth(Grid.Columns[i].Title.Caption)) >
(GridRep.Bands.ColumnHeaderBand.Width) then
begin
CurrentLeft := 12;
CurrentTop := CurrentTop + Canvas.TextHeight('A') + 6;
GridRep.Bands.ColumnHeaderBand.Height := GridRep.Bands.ColumnHeaderBand.Height +
(Canvas.TextHeight('A') + 10);
GridRep.Bands.DetailBand.Height := GridRep.Bands.DetailBand.Height +
(Canvas.TextHeight('A') + 10);
end;
{Create Header with QRLabels}
with TQRLabel.Create(GridRep.Bands.ColumnHeaderBand) do
begin
Parent := GridRep.Bands.ColumnHeaderBand;
Color := GridRep.Bands.ColumnHeaderBand.Color;
Left := CurrentLeft;
Top := CurrentTop;
Caption:=Grid.Columns[i].Title.Caption;
end;
{Create Detail with QRDBText}
with TQRDbText.Create(GridRep.Bands.DetailBand) do
begin
Parent := GridRep.Bands.DetailBand;
Color := GridRep.Bands.DetailBand.Color;
Left := CurrentLeft;
Top := CurrentTop;
Alignment:=Grid.Columns[i].Alignment;
AutoSize:=false;
AutoStretch:=true;
Width:=Grid.Columns[i].Width;
Dataset:=GridRep.Dataset;
DataField:=Grid.Fields[i].FieldName;
CurrentLeft:=CurrentLeft + (Grid.Columns[i].Width) + 15;
end;
end; lblPage.Left := bdTitle.Width - lblPage.Width - 10;
lblDate.Left := bdTitle.Width - lblDate.Width - 10; {After all, call the QuickRep preview method}
GridRep.PreviewModal; {or Preview if you prefer} finally
with Grid.DataSource.DataSet do
begin
GotoBook(BMark);
FreeBook(BMark);
EnableControls;
end;
end;
end;