请教这个根据用户在CHEAKLISTBOX里选择的数据字段后,再输出到报表里,请是我下面的程序为何只能在LISTBOX里可以实现,但在CHECKLISTBOX里就不行,而且运行起来每重新选择一次字段后,报表显示出来的字段格式会贴在一起,请教如何解决这两个问题啊 procedure TForm1.CHecklistbox2Click(Sender: TObject);
var
i,j:integer;
myQRDBText:array[0..10] of TQRDBText;//假设你的数据库只有10个字段! begin
j:=0;
for i:=0 to CHecklistbox2.Count -1 do
if CHecklistbox2.Selected[i] then
Begin
myQRDBText[j]:=TQRDBText.Create(qrlistform.QRBand1);
myQRDBText[j].Parent:=qrlistform.DetailBand1;
myQRDBText[j].Left:=j*100;
myQRDBText[j].Top:=16;
myQRDBText[j].Width:=180;
myQRDBText[j].Height:=60;
myQRDBText[j].dataset:=Form1.ADOQuery1;
myQRDBText[j].DataField:=form1.Box1.items[i];
INc(j); End;
end; --
var
i,j:integer;
myQRDBText:array[0..10] of TQRDBText;//假设你的数据库只有10个字段! begin
j:=0;
for i:=0 to CHecklistbox2.Count -1 do
if CHecklistbox2.Selected[i] then
Begin
myQRDBText[j]:=TQRDBText.Create(qrlistform.QRBand1);
myQRDBText[j].Parent:=qrlistform.DetailBand1;
myQRDBText[j].Left:=j*100;
myQRDBText[j].Top:=16;
myQRDBText[j].Width:=180;
myQRDBText[j].Height:=60;
myQRDBText[j].dataset:=Form1.ADOQuery1;
myQRDBText[j].DataField:=form1.Box1.items[i];
INc(j); End;
end; --
而且我想在CHECKLISTBOX里显示,请教我那里出错了.
是要INC(j)
myQRDBText[j].DataField:=Form1.ADOQuery1.fieldbyname(form1.Box1.items[i]);这样看看,应该可以了
var i,j:integer;
begin
with adoquery1 do begin
For j:=0 to Fields.Count -1 do Begin
checklistbox1.Items.Add(Fields[j].FullName );
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i,j:integer;
begin
with adoquery1 do begin
For j:=0 to Fields.Count -1 do Begin
checklistbox1.Items.Add(Fields[j].FieldName ); //这个地方的改动
end;
end;
end;
然后动态打印的时候
procedure TForm1.CHecklistbox2Click(Sender: TObject);
var
i,j:integer;
myQRDBText:array[0..10] of TQRDBText;//假设你的数据库只有10个字段! begin
j:=0;
for i:=0 to CHecklistbox2.Count -1 do
if CHecklistbox2.Selected[i] then
Begin
myQRDBText[j]:=TQRDBText.Create(qrlistform.QRBand1);
myQRDBText[j].Parent:=qrlistform.DetailBand1;
myQRDBText[j].Left:=j*100;
myQRDBText[j].Top:=16;
myQRDBText[j].Width:=180;
myQRDBText[j].Height:=60;
myQRDBText[j].dataset:=Form1.ADOQuery1;
myQRDBText[j].DataField:=myQRDBText[j].DataField:=Form1.ADOQuery1.fieldbyname(form1.Box1.items[i]);
INc(j); End;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i,j:integer;
begin
with adoquery1 do begin
For j:=0 to Fields.Count -1 do Begin
CHECKLISTbox1.Items.Add(Fields[j].FullName );
end;
end;
end;procedure TForm1.CHECKLISTbox1Click(Sender: TObject);
var
i,j:integer;
myQRDBText:array[0..10] of TQRDBText;//假设你的数据库只有10个字段!begin
j:=0;
for i:=0 to CHECKLISTbox1.Count -1 do
if box1.Selected[i] then
Begin
myQRDBText[j]:=TQRDBText.Create(qrlistform.QRBand1);
myQRDBText[j].Parent:=qrlistform.DetailBand1;
myQRDBText[j].Left:=j*100;
myQRDBText[j].Top:=16;
myQRDBText[j].Width:=180;
myQRDBText[j].Height:=60;
myQRDBText[j].dataset:=Form1.ADOQuery1;
myQRDBText[j].DataField:=myQRDBText[j].DataField:=Form1.ADOQuery1.fieldbyname(form1.Box1.items[i]);
INc(j);
//上面这条语句出现了性质类型相反了.
End;
end;
var i,j:integer;
begin
with adoquery1 do begin
For j:=0 to Fields.Count -1 do Begin
//不这样写 CHECKLISTbox1.Items. add(Fields[j].FullName );
CHECKLISTbox1.Items.Add(Fields[j].FieldName ); //这样写 注意是fieldName而不是fullname
end;
end;
end;
var
i,j:integer;
myQRDBText:array[0..10] of TQRDBText;//假设你的数据库只有10个字段!begin
j:=0;
for i:=0 to CHECKLISTbox1.Count -1 do
if box1.Selected[i] then
Begin
myQRDBText[j]:=TQRDBText.Create(qrlistform.QRBand1);
myQRDBText[j].Parent:=qrlistform.DetailBand1;
myQRDBText[j].Left:=j*100;
myQRDBText[j].Top:=16;
myQRDBText[j].Width:=180;
myQRDBText[j].Height:=60;
myQRDBText[j].dataset:=Form1.ADOQuery1;
myQRDBText[j].DataField:=myQRDBText[j].DataField:=Form1.ADOQuery1.fieldbyname(form1.Box1.items[i]);
INc(j);
//上面这条语句出现了性质类型相反了.
End;
end;
把你的程序发过来,我帮你改好给你发过去
[email protected]