A폼과 B폼이 있다고 가정할 때, A폼의 버튼을 누르면 B폼이 호출되어
B폼에서 DBGRID의 MultiSelect 속성을 이용하여 A폼의 각각의 에디트
에 값을 전달하고자 합니다.
아래에 있는 프로시저는 B폼에서 A폼으로 값을 전달하는 과정인데,
값이 전달이 되지 않아서 질문을 드려봅니다...
참고로 A폼에는 Edit가 40개, CurrencyEdit가 30개가 있습니다.
각 필드는 Edit 1, 11, 21, 31, CurrencyEdit 1, 11, 21이 하나의 필드인데
이런식으로 2, 12, 22, 32, CurrencyEdit 2, 12, 22 ...
10, 20, 30, 40, CurrencyEdit10, 20, 30
으로 위에서 아래까지 각각 10개씩 있습니다....
procedure TftSearchBox.BitBtnClick(Sender: TObject);
var
i : Integer;
StrEdit0, StrEdit1, StrEdit2, StrEdit3 : string;
StrCurrency0, StrCurrency1, StrCurrency2 : string;
begin
if (DBGrid1.SelectedRows.Count > 10) then
begin
ShowMessage('최대 10개의 레코드만을 선택할 수 있습니다.');
exit;
end;
if (Sender as TBitBtn).Tag = 1 then
begin
with DBGrid1 do
begin
for i := 0 to SelectedRows.Count -1 do
begin
// FA는 폼이름
StrEdit0 := 'FA.Edit' + IntToStr(i+1) + '.Text';
StrEdit1 := 'FA.Edit' + IntToStr(i+11) + '.Text';
StrEdit2 := 'FA.Edit' + IntToStr(i+21) + '.Text';
StrEdit3 := 'FA.Edit' + IntToStr(i+31) + '.Text';
StrCurrency0 := 'FA.CurrencyEdit' + IntToStr(i+1) + '.Text';
StrCurrency1 := 'FA.CurrencyEdit' + IntToStr(i+11) + '.Text';
StrCurrency2 := 'FA.CurrencyEdit' + IntToStr(i+21) + '.Text';
MainQuery.BookMark := SelectedRows[i];
StrEdit0 := MainQuery.FieldByName('A').AsString;
StrEdit1 := MainQuery.FieldByName('B').AsString;
StrEdit2 := MainQuery.FieldByName('C').AsString;
StrEdit3 := MainQuery.FieldByName('D').AsString;
StrCurrency0 := MainQuery.FieldByName('E').AsString;
StrCurrency1 := MainQuery.FieldByName('F').AsString;
StrCurrency2 := MainQuery.FieldByName('G').AsString;
end;
end;
end
else
exit;
Close;
end;