有关动态创建QREPORT列的问题(200分)

  • 主题发起人 主题发起人 jean2lee
  • 开始时间 开始时间
J

jean2lee

Unregistered / Unconfirmed
GUEST, unregistred user!
1、小弟我写的报表列数是不确定的,所以需要把TQRDBText动态创建,我知道该用
QRDBText1.CREATE,但是不知道如果要创建多个该怎么做?
2、如何实现象DELPHI设计器里面那样,在控件栏里面选择一个控件之后,用鼠标在
FORM上点击一下,该控件就出现在鼠标所点击的位置上?
请各位大侠赐教,如果觉得分数不够的话小弟我还可以再加,谢谢大家``
 
用ehlib来做吧。而且还支持多表头。
 
为什么不能用QREPORT?
 
用QREPORT也可以,不过我觉得用QREPORT很麻烦。而且现在有很多报表控件要比它好。
如,fastreport,reportmachine.
 
我用的是DELPHI 6,装这些控件弄得我头都大了
能给我说仔细点吗?
 
fastreport和reportmachine有报表设计器。确实很不错,而且他们的demo写的挺好的。
 
BCB6中Fastreport2.4经常出错,搞的我头都痛,我正想把她删了。
 
procedure TForm12.CreateReport;
var
QRLalist:Array of TQRLabel;
QRTeList:Array of TQRDBText;
Count:Integer;
i,k:Integer;
begin
Count:=Pur_DM1.Pur_ADS2.FieldCount;
SetLength(QRLaList,Count);
SetLength(QRTeList,Count);
for i:=0 to high(QRTeList)do
begin
k:=0;
QRLaList:=TQRLabel.Create(self);
if i=0 then
QRLaList.Left:=38
else
QRLaList.Left:=QRLaList[i-1].Left+QRLaList[i-1].Width+12;
QRLaList.Parent:=QuickRep1;
QRLaList.AutoSize:=False;
Pur_DM1.Pur_ADS2.First;
while not Pur_DM1.Pur_ADS2.Eofdo
begin
if Pur_DM1.Pur_ADS2.Fields.DataSize>k then
k:=Pur_DM1.Pur_ADS2.Fields.DataSize;
Pur_DM1.Pur_ADS2.Next;
end;
QRLaList.Caption:=Pur_DM1.Pur_ADS2.Recordset.Fields.Name;
QRLaList.Top:=130;
if Pur_DM1.Pur_ADS2.FieldCount>12 then
begin
QRLaList.Font.Size:=7;
QRLaList.Width:=K*2+20;
end
else
begin
QRLaList.Font.Size:=8;
QRLaList.Width:=K*3+20;
end;
QRTeList:=TQRDBText.Create(self);
QRTeList.Parent:=DetailBand1;
QRTeList.DataSet:=Pur_DM1.Pur_ADS2;
QRTeList.DataField:=Pur_DM1.Pur_ADS2.Recordset.Fields.Name;
QRTeList.AutoSize:=True;
QRTeList.Font.Size:=QRLaList.Font.Size;
QRTeList.Top:=10;
QRTeList.Left:=QRLaList.Left-38;
end;
if Pur_DM1.Pur_ADS2.RecordCount/24<>Pur_DM1.Pur_ADS2.RecordCount div 24 then
QRExpr1.Expression:='''Page ''+'+'PAGENUMBER'+'+'' of ''+'+''''+FloatToStr(Pur_DM1.Pur_ADS2.RecordCount/24-(Pur_DM1.Pur_ADS2.RecordCount / 24-Pur_DM1.Pur_ADS2.RecordCount div 24)+1)+''''
else
QRExpr1.Expression:='''Page ''+'+'PAGENUMBER'+'+'' of ''+'+''''+IntToStr(Pur_DM1.Pur_ADS2.RecordCount div 24)+'''';
QuickRep1.Preview;
end;

可以给你参照一下。
 
第一个问题解决了
各位大侠,第二个问题能提示一下吗?
sword_liu,回头就给你分
 
多人接受答案了。
 
后退
顶部