TStringList 와 TStringGrid 사이의 자료 전달
...
스트링그리드가 다음과 같을 때
0 | 김길동 |
1 | 이길동 |
2 | 박길동 |
3 | 마길동 |
StringList1.Assign(StringGrid1.Cols[1]); //스트링리스트에 그리드의 특정열 할당
-> 결과
김길동
이길동
박길동
마길동
//소트와 중복제거 후 콤보박스, 리스트박스에 할당
procedure TForm1.Button14Click(Sender: TObject);
var c: integer;
sList: TStringList;
begin
sList := TStringList.Create;
try
sList.Sorted := True;
sList.Duplicates := dupIgnore;
sList.Assign(sGrid3.Cols[1]);
ComboBox1.Items := sList;
ListBox1.Items := sList; // ListBox1.Items.Assign(sList);
finally
sList.Free;
end;
end;
-> 결과
김길동
마길동
박길동
이길동
...
StringList1.Add(StringGrid1.Rows[1].Text); //스트링리스트에 그리드의 특정 행을 추가
-> 결과 (TStringList)
1 이길동
여기서 주의할 것은 1 뒤에 개행문자 있음, 하지만 개행 문자 있는 상태로 스트링리스트에 한 줄로 추가됨
만약 스트링리스트에 추가하지 않고 일반 스트링으로 출력하면 줄바꿈 되어 출력됨
Memo1.Lines.Add(StringGrid1.Rows[1].Text)
-> 결과 (TMemo)
1
이길동
for r := 0 to StringGrid1.RowCount -1 do //스트링리스트에 그리드의 모든 행을 추가
begin
StringList1.Add(StringGrid1.Rows[r].Text);
end;
-> 결과 (TStringList) 컬럼값 사이 (0 김길동 사이) 에 개행문자 있음
0 김길동
1 이길동
2 박길동
3 마길동
...
StringGrid1.Rows[2].Assign(StringGrid1.Rows[5]); //그리드 2행에 그리드 5행을 할당
다음과 동일
StringGrid1.Rows[2] := StringGrid1.Rows[5];
...
for r := 0 to StringList1.Count -1 do //그리드에 스트링리스트 모든 값 할당
begin
StringGrid1.Rows[r].Text := StringList1.Strings[r];
end;