procedure TForm1.FormCreate(Sender: TObject); var i:integer; begin with Table1 do begin Active:=true; while RecNo<30 do begin TLabel(Form1.FindComponent('Label'+inttostr(RecNo))).Caption:=FieldValues['a']; next; end; end; end;
修正一下:procedure TForm1.FormCreate(Sender: TObject); var i:integer; begin with Table1 do begin Active:=true; while RecNo<=30 do begin TLabel(Form1.FindComponent('Label'+inttostr(RecNo))).Caption:=FieldValues['a']; next; end; end; end;
不好意思,刚才一试以上代码发现有问题,以下可以全部显示正确了:procedure TForm1.FormCreate(Sender: TObject); var i:integer; begin with adoquery1 do begin Active:=true; i:=0; next; while i<=RecordCount do begin TLabel(Form1.FindComponent('Label'+inttostr(i))).Caption:=FieldValues['x_a']; inc(i); next; end; end; end;
with adoquery1 do begin {这里要换成with Table1 do begin}
给你个动态的:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormShow(Sender: TObject); private { Private declarations } lb: array[0..29] of TLabel; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); var i: byte; begin Table1.Active:=true; for i:=0 to 29 do lb[i].Free; end;procedure TForm1.FormShow(Sender: TObject); var i: byte; begin Table1.Active:=true; for i:=0 to 29 do begin lb[i]:= TLabel.Create(nil); lb[i].Parent:= Form1; lb[i].Top:= 19+13*i; lb[i].Left:= 80; lb[i].Caption:= Table1.FieldValues['a']; Table1.Next; end; end;end.
6楼的可以Lbl1----Lbl30procedure TForm1.FormCreate(Sender: TObject); var i:integer; begin with Table1 do begin Active:=true; First; i:=1; while i<=RecordCount-1 do begin TLabel(Form1.FindComponent('Lbl'+inttostr(i))).Caption:=FieldValues['FieldName']; inc(i); // if i=31 then // exit // else next; end; end; end;
procedure TForm1.FormCreate(Sender: TObject); var i:integer; begin with adoquery1 do begin Active:=true; i:=0; next; for i:=0 toRecordCount do begin TLabel(Form1.FindComponent('Label'+inttostr(i))).Caption:=FieldValues['x_a']; next; end; end; end;
我现在想在Form1一打开的时候就把表的table1和a字段刚好30行字符自动加载到Label1-Label30中去.
你的意思是要把表table1的a字段刚好30行记录自动加载到Label1-Label30中去吧,不知道意思理解错没
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
with Table1 do begin
Active:=true;
while RecNo<30 do begin
TLabel(Form1.FindComponent('Label'+inttostr(RecNo))).Caption:=FieldValues['a'];
next;
end; end;
end;
var
i:integer;
begin
with Table1 do begin
Active:=true;
while RecNo<=30 do begin
TLabel(Form1.FindComponent('Label'+inttostr(RecNo))).Caption:=FieldValues['a'];
next;
end; end;
end;
var
i:integer;
begin
with adoquery1 do begin
Active:=true;
i:=0;
next;
while i<=RecordCount do begin
TLabel(Form1.FindComponent('Label'+inttostr(i))).Caption:=FieldValues['x_a'];
inc(i);
next;
end;
end;
end;
with adoquery1 do begin {这里要换成with Table1 do begin}
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
lb: array[0..29] of TLabel;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
i: byte;
begin
Table1.Active:=true;
for i:=0 to 29 do
lb[i].Free;
end;procedure TForm1.FormShow(Sender: TObject);
var
i: byte;
begin
Table1.Active:=true;
for i:=0 to 29 do
begin
lb[i]:= TLabel.Create(nil);
lb[i].Parent:= Form1;
lb[i].Top:= 19+13*i;
lb[i].Left:= 80;
lb[i].Caption:= Table1.FieldValues['a'];
Table1.Next;
end;
end;end.
var
i:integer;
begin
with Table1 do
begin
Active:=true;
First;
i:=1;
while i<=RecordCount-1 do
begin
TLabel(Form1.FindComponent('Lbl'+inttostr(i))).Caption:=FieldValues['FieldName'];
inc(i);
// if i=31 then
// exit
// else
next;
end;
end;
end;
var
i:integer;
begin
with adoquery1 do begin
Active:=true;
i:=0;
next;
for i:=0 toRecordCount do begin
TLabel(Form1.FindComponent('Label'+inttostr(i))).Caption:=FieldValues['x_a'];
next;
end;
end;
end;