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
[72617] 자답입니다.
사탄 [kdhs] 3760 읽음    2015-05-06 20:30
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=1161
내용으로 대체합니다.

KDHS 님이 쓰신 글 :
: 본 코드는 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     자답입니다. 사탄 3760 2015/05/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.