스트링 그리드에서 첫번째 셀을 입력하는방식으로 할려고 합니다.
엔터를 치면 바로 밑으로 가게 했습니다.
그래서 두번째와 세번째를 첫번째의 스트링에 맞게 뿌려줄려고 합니다.
그 프로시져가 'select * from pr_bag_find'이것이고요
그런데 계속 첫번째만 나옵니다.
이거 해결할 방법 없을까요?
var
col,row : integer;
value : string;
begin
col := TStringGrid(sender).Col;
row := TStringGrid(sender).row;
if col = 0 then
begin
if key = #13 then
begin
value := sg1.Cells[0,row];
with frm_dm.q1 do
begin
close;
sql.clear;
sql.add('select * from pr_bag_find');
sql.add('(:n01)');
ParamByName('n01').asString := value;
open;
sg1.cells[1,row] := frm_dm.q1.Fields[1].AsString;
sg1.cells[2,row] := frm_dm.q1.Fields[2].AsString;
frm_dm.q1.next;
end;
if (row = sg1.RowCount-1) then
sg1.RowCount := sg1.RowCount + 1;
if (row <> sg1.RowCount-1) then
TStringGrid(sender).row := TStringGrid(sender).row+1;
end
end;
end;
찍히겠죠?
수정해보면..
.
.
close;
sql.clear;
sql.add('select * from pr_bag_find');
sql.add('(:n01)');
ParamByName('n01').asString := value;
open;
first;
while not Eof do
begin
sg1.cells[1,row] := frm_dm.q1.Fields[1].AsString;
sg1.cells[2,row] := frm_dm.q1.Fields[2].AsString;
next;
inc(sg1.RowCount);
end;
이러한 방법으로..