|
ListView의 Items가 String 배열과 비슷한 타입이라면 각 Item에 딸려있는 SubItem들도 String 배열로 속해 있습니다. 그래서, Items 를 먼저 쭉 돌리고.. 돌릴때마다 다시 그 아이템의 SubItem도 배열로 쭉 검색을 하셔야 합니다.
아래 예제는 ListView 아이템을 한줄로 뽑아와서, Memo에 차근차근 추가시키는 예제입니다.
폼에, ListView, Memo, Button을 하나씩 놓으시구 사용하시면 됩니다. 아래 Format 명령에서 %-10s 는 10칸으로 칸을 맞춘다는 건데.. 만약 아이템의 길이가 쫌 길다면.. %-30s 등으로 크게 맞춰주세요..
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int itCount, itSubCount;
String stLine, stSubItem;
for(itCount = 0; itCount < ListView1->Items->Count; itCount ++) {
stLine = Format("%-10s", ARRAYOFCONST(((String)ListView1->Items->Item[itCount]->Caption)));
for(itSubCount = 0; itSubCount < ListView1->Columns->Count - 1; itSubCount ++) {
if(itSubCount < ListView1->Items->Item[itCount]->SubItems->Count)
stSubItem = ListView1->Items->Item[itCount]->SubItems->Strings[itSubCount];
else
stSubItem = "";
stLine = stLine + Format("%-10s", ARRAYOFCONST(((String)stSubItem)));
}
Memo1->Lines->Add(stLine);
}
}
//---------------------------------------------------------------------------
접니다.... 님이 쓰신 글 :
:
: 항상 도움을 많이 주시는 영인님의 답변이 오늘도
: 계속되는 군요. 감사합니다.
: 그런데 제가 초보라 잘 몰라서 그러거든요.
: 메모는 위에 올린 글대로
: 하면 되던데 리스트뷰는 말씀하신대로 메모에서의
: Lines대신 Items라는 프로퍼티가 있는 건 대강
: 알겠거든요, 근데
: 그 뒤에 어떻게 처리 해야 될지를
: 모르겠습니다. 참고로 리스트뷰의 스타일은 vsReport형식이구요
: Columns가 6개 정도 됩니다.
: 메모는 한라인을 한번에 찍는 것이 기본이지만
: 리스트뷰는 어떻게 되는 것인지 각 Column마다
: 하나씩 프린트해야 하는지
: 잘 모르겠군요. 그럼 다시 한번 의견 부탁드립니다.
:
|