假设memo1有12行数据,分别为:
A
B
C
D
E
F
G
H
I
J
K
L
现在有一个DBGrid组件,如何将其分别写DBGrid组件里(DBGrid固定为4列,行随上述记录进行增加),效果如下:
DBGrid第1列 DBGrid第2列 DBGrid第3列 DBGrid第4列
A B C D
E F J H
I J K L
A
B
C
D
E
F
G
H
I
J
K
L
现在有一个DBGrid组件,如何将其分别写DBGrid组件里(DBGrid固定为4列,行随上述记录进行增加),效果如下:
DBGrid第1列 DBGrid第2列 DBGrid第3列 DBGrid第4列
A B C D
E F J H
I J K L
直接手寫的,可能有誤,不過算法應該是這樣的。:)for i := 0 to memo1.lines.count -1 do
begin
if i = 0 then dbgrid.datasource.dataset.append; if ((i+1) Mod 4 <> 0) then begin
dbgrid.datasource.dataset.fields[i mod 4].value := memo1.lines.string[i];
end else dbgrid.datasource.dataset.append;
end;
//用这个方子,不行么?
with DBGrid1.DataSource.DataSet do
begin
Append;
FieldByName('').value:= memo1.Lines.Strings[0];
//...
post;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
s: String;
begin
s:= ' Insert into table1(a,b,c,d) values(';
for i:=0 to memo1.Lines.Count-1 do
begin
if (i+1) mod 4=0 then
begin
s := s+memo1.Lines[i]+')';
Memo2.Lines.Add(s);
s:= ' Insert into table1(a,b,c,d) values(';
end else
begin
s := s+memo1.Lines[i]+',';
end;
end;
end;
需要的是这样:
DBGrid第1列 DBGrid第2列 DBGrid第3列 DBGrid第4列
A B C D
E F G H
I J K L
结果是这样:
DBGrid第1列 DBGrid第2列 DBGrid第3列 DBGrid第4列
A C B
E G F
I K J 最后一列没有信息,第2列与第3列整反了!
for i := 0 to memo1.lines.count -1 do
begin
if i = 0 then dbgrid.datasource.dataset.append; if ((i+1) Mod 5 <> 0) then begin
dbgrid.datasource.dataset.fields[i mod 5].value := memo1.lines[i]
end else dbgrid.datasource.dataset.append;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
str : String;
begin
for I := 0 to Memo1.Lines.Count-1 do begin
if (i+1) mod 4 <> 0 then begin
str := str + memo1.Lines[i];
end else begin
str := str + memo1.Lines[i];
Memo2.lines.Append(str) ;
str := '';
end; end;end; 改進下
var
i : integer;
str : String;
begin if i = 0 then DBGrid.Datasource.dataset.append;
for i := 0 to Memo1.lines.count -1 do begin
if (i+1) mod 4 <> 0 then begin
DBgird.dataSource.dataset.fields[i mod 4].value := Memo1.lines[i];
end else begin
DBGrid.datasource.dataset.fields[i mod 4].value := memo1.lines[i];
DBGrid.datasource.dataset.append;
end;
end;
end;
var
i : integer;
str : String;
begin if i = 0 then DBGrid.Datasource.dataset.append;
for i := 0 to Memo1.lines.count -1 do begin
if (i+1) mod 4 <> 0 then begin
DBgird.dataSource.dataset.fields[i mod 4].value := Memo1.lines[i];
end else begin
DBGrid.datasource.dataset.fields[i mod 4].value := memo1.lines[i];
DBGrid.datasource.dataset.append;
end;
end;
end;