C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[72613] Pas 코드를 CPP코드로 변환 질문
KDHS [] 3853 읽음    2015-05-05 02:09
본 코드는 ListView SubItem 영역에 버튼을 생성 후 삭제 하는 코드입니다.

델파이 코드를 씨빌더 코드로 변환중인데 잘 안되는 부분이 있네요...

델파이 문법이 헷갈리는게 좀 있어서 ...

아이템 삭제 시에 델파이로는 아이템 라인 전체가 삭제 되는데

씨빌더에서는 현재 해당 아이템만 삭제되고 서브아이템은 살아 있네요...

잘못된 점 좀 알려주실분.....계시나요??



procedure TfmMain.do_MoveListViewControls(IdxOfDeleted: Integer);
var
  Control: TControl;
  i: Integer;
begin
  for i := IdxOfDeleted to ListView.Items.Count - 1 do
  begin
    Control := TControl(ListView.Items.Item[i].Data);
    Control.Top := Control.Top -
      (Control.BoundsRect.Bottom - Control.BoundsRect.Top);
  end;
end;

procedure TfmMain.ButtonDeleteClick(Sender: TObject);
var
  i: Integer;
begin
  if ListView.Selected = nil then
    Exit;

  ListView.Items.BeginUpdate;
  try
    for i := ListView.Items.Count - 1 downto 0 do
    begin
      if not ListView.Items[i].Selected then
        Continue;

      TControl(ListView.Items[i].Data).Free;
      ListView.Items[i].Delete;
      do_MoveListViewControls(i);
    end;
  finally
    ListView.Items.EndUpdate;
  end;
end;



void __fastcall TForm2::do_MoveListViewControls(int IdxOfDeleted) {
		TControl *Control;
	for (int i = IdxOfDeleted; i < ListView->Items->Count; i++) {
		// Control = TControl(ListView->Items->Item[i]->Data);
		ListView->Items->Item[i]->Data = Control;
		Control->Top = Control->Top - (Control->BoundsRect.Bottom - Control->BoundsRect.Top);
	}
}

void __fastcall TForm2::ButtonDeleteClick(TObject *Sender) {
	TControl *Control;
	if (ListView->Selected == NULL) {
		 exit;
	}
   //	ListView->Items->BeginUpdate();

	try {
		for (int i = 0; i < ListView->Items->Count; i++) {
			if (ListView->Items->Item[i]->Selected) {
				ListView->Items->Item[i]->Data = Control;
				ListView->Items->Item[i]->Delete();
				do_MoveListViewControls(i);
			}
		}
	}

	catch (...) {
		ListView->Items->EndUpdate();
	}
}




+ -

관련 글 리스트
72613 Pas 코드를 CPP코드로 변환 질문 KDHS 3853 2015/05/05
72617     자답입니다. 사탄 3761 2015/05/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.