|
민인학 님이 쓰신 글 :
: TListView에 아이템들이 있는데..
: 선택된 영역의 아이템들을 반전시키는 방법과
: 선택된 영역의 아이템들을 위로 한칸 이동시키는 방법에
: 대해서 아시는 분 계신가요?
: 제가 지금 짜보고는 있습니다만..
: 좀 오래 걸릴것 같아 이렇게 질문에 올립니다.
: 예전에 짜 보신분이 계시면.. 답변좀 부탁드립니다.
:
: 2003년 새해 복 많이 받으세요.
: 감사합니다.
자답입니다.
// 선택된 영역을 한칸 위로 옮김
void __fastcall TIproveSelectProbingPortTree::UpButtonClick(TObject *Sender)
{
AnsiString InstanceName;
AnsiString Hierachy;
AnsiString PortName;
AnsiString PortPosition;
stack< int , vector<int> > SelectRows;
for(int i = 0; i<AddListView->Items->Count; i++) {
if(AddListView->Items->Item[i]->Selected == true) {
if(i==0) return;
InstanceName = AddListView->Items->Item[i-1]->Caption;
Hierachy = AddListView->Items->Item[i-1]->SubItems->Strings[0];
PortName = AddListView->Items->Item[i-1]->SubItems->Strings[1];
PortPosition = AddListView->Items->Item[i-1]->SubItems->Strings[2];
AddListView->Items->Item[i-1]->Caption = AddListView->Items->Item[i]->Caption;
AddListView->Items->Item[i-1]->SubItems->Strings[0] = AddListView->Items->Item[i]->SubItems->Strings[0];
AddListView->Items->Item[i-1]->SubItems->Strings[1] = AddListView->Items->Item[i]->SubItems->Strings[1];
AddListView->Items->Item[i-1]->SubItems->Strings[2] = AddListView->Items->Item[i]->SubItems->Strings[2];
AddListView->Items->Item[i]->Caption = InstanceName;
AddListView->Items->Item[i]->SubItems->Strings[0] = Hierachy;
AddListView->Items->Item[i]->SubItems->Strings[1] = PortName;
AddListView->Items->Item[i]->SubItems->Strings[2] = PortPosition;
SelectRows.push(i);
}
}
AddListView->Items->BeginUpdate();
AddListView->ClearSelection();
while (!SelectRows.empty()) {
if(SelectRows.top()-1 >= 0) {
AddListView->Items->Item[SelectRows.top()-1]->Selected = true;
}
SelectRows.pop();
}
AddListView->Items->EndUpdate();
}
// 선택된 영역을 한칸 아래로 내림
void __fastcall TIproveSelectProbingPortTree::DownButtonClick(
TObject *Sender)
{
AnsiString InstanceName;
AnsiString Hierachy;
AnsiString PortName;
AnsiString PortPosition;
stack< int , vector<int> > SelectRows;
for(int i = AddListView->Items->Count-1; i >= 0; i--) {
if(AddListView->Items->Item[i]->Selected == true) {
if(i==AddListView->Items->Count-1) return;
InstanceName = AddListView->Items->Item[i+1]->Caption;
Hierachy = AddListView->Items->Item[i+1]->SubItems->Strings[0];
PortName = AddListView->Items->Item[i+1]->SubItems->Strings[1];
PortPosition = AddListView->Items->Item[i+1]->SubItems->Strings[2];
AddListView->Items->Item[i+1]->Caption = AddListView->Items->Item[i]->Caption;
AddListView->Items->Item[i+1]->SubItems->Strings[0] = AddListView->Items->Item[i]->SubItems->Strings[0];
AddListView->Items->Item[i+1]->SubItems->Strings[1] = AddListView->Items->Item[i]->SubItems->Strings[1];
AddListView->Items->Item[i+1]->SubItems->Strings[2] = AddListView->Items->Item[i]->SubItems->Strings[2];
AddListView->Items->Item[i]->Caption = InstanceName;
AddListView->Items->Item[i]->SubItems->Strings[0] = Hierachy;
AddListView->Items->Item[i]->SubItems->Strings[1] = PortName;
AddListView->Items->Item[i]->SubItems->Strings[2] = PortPosition;
SelectRows.push(i);
}
}
AddListView->Items->BeginUpdate();
AddListView->ClearSelection();
while (!SelectRows.empty()) {
if(SelectRows.top()+1 <= AddListView->Items->Count-1) {
AddListView->Items->Item[SelectRows.top()+1]->Selected = true;
}
SelectRows.pop();
}
AddListView->Items->EndUpdate();
}
// 선택된 영역을 반전시킴
void __fastcall TIproveSelectProbingPortTree::ReverseButtonClick(
TObject *Sender)
{
int Count = 0;
stack< int , vector<int> > SelectRows;
stack< AnsiString , vector<AnsiString> > InstanceNames;
stack< AnsiString , vector<AnsiString> > Hierachys;
stack< AnsiString , vector<AnsiString> > PortNames;
stack< AnsiString , vector<AnsiString> > PortPositions;
for(int i = 0; i<AddListView->Items->Count; i++) {
if(AddListView->Items->Item[i]->Selected == true) {
Count++;
}
}
if(Count<2) return;
for(int i = 0; i<AddListView->Items->Count; i++) {
if(AddListView->Items->Item[i]->Selected == true) {
InstanceNames.push(AddListView->Items->Item[i]->Caption);
Hierachys.push(AddListView->Items->Item[i]->SubItems->Strings[0]);
PortNames.push(AddListView->Items->Item[i]->SubItems->Strings[1]);
PortPositions.push(AddListView->Items->Item[i]->SubItems->Strings[2]);
}
}
for(int i = AddListView->Items->Count-1; i >= 0; i--) {
if(AddListView->Items->Item[i]->Selected == true) {
SelectRows.push(i);
}
}
AddListView->Items->BeginUpdate();
AddListView->ClearSelection();
while (!SelectRows.empty()) {
AddListView->Items->Item[SelectRows.top()]->Caption = InstanceNames.top();
AddListView->Items->Item[SelectRows.top()]->SubItems->Strings[0] = Hierachys.top();
AddListView->Items->Item[SelectRows.top()]->SubItems->Strings[1] = PortNames.top();
AddListView->Items->Item[SelectRows.top()]->SubItems->Strings[2] = PortPositions.top();
AddListView->Items->Item[SelectRows.top()]->Selected = true;
InstanceNames.pop();
Hierachys.pop();
PortNames.pop();
PortPositions.pop();
SelectRows.pop();
}
AddListView->Items->EndUpdate();
}
|