델파이

TStringList 와 TStringGrid 사이의 자료 전달

미스터몽키 2018. 4. 20. 01:08

...

스트링그리드가 다음과 같을 때


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;