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

델파이 Q&A
Delphi Programming Q&A
[15496] Re:cxGrid 정렬 문제 조언좀 부탁드립니다.
탐욕 [avarice1575] 2500 읽음    2015-04-22 16:10
탐욕 님이 쓰신 글 :
: cxGrid 에서 입력된 내용들을 버튼을 눌러서 오름 차순으로 정렬 및 내림차순으로 정렬 할려고 합니다.
:
: procedure TfrmMain.cxBtn_UpSortClick(Sender: TObject);
: var
: loop1,loop2 : integer;
: Imsi : TcxGridColumn;
:
: begin
:   for loop1 := 0 to cxGrid_View.DataController.RecordCount - 2 do
:     begin
:       for loop2 := 1 to cxGrid_View.DataController.RecordCount - 1 do
:         begin
:           if cxGrid_View.DataController.Values[loop1,cxGrid_Sum] <
:           cxGrid_View.DataController.Values[loop2,cxGrid_Sum]  then
:             begin
:               Imsi := cxGrid_View.DataController.Values[loop1,cxGrid_Sum];
:
:               cxGrid_View.DataController.Values[loop1,cxGrid_Sum] :=
:               cxGrid_View.DataController.Values[loop2,cxGrid_Sum];
:
:               cxGrid_View.DataController.Values[loop2,cxGrid_Sum] := Imsi;
:             end; // if
:         end; //for loop2
:     end;  //for loop1
: end;
:
: 굳이 함수를 만들지 않고 그냥 버튼 클릭 이벤트에서 처리를 할려고 했습니다.
:
: 저런 식으로 for문 2개를 돌리면서 비교하면서 할려구 하는데.. 잘 안되네요.
:
: 제가 잘못된 방향으로 나가고 있는지 어떤 부분을 놓치고 있는건지 잘 모르겠습니다.
:
: 그래서 선배님들에게 조언을 구할려구 합니다.
:
:


혼자서 해결했습니다. ㅎㅎ 

cxGrid의 구조를 자세히 몰라서 빙빙돌다가 삽질 했습니다.

지금은 문제점 파악해서 정상 작동하는거 확인했습니다. 애초에 for문의 loop를 잘못 돌리고 있었네요 ㅠ_ㅠ/

- 고친 문장

procedure TfrmMain.cxBtn_UpSortClick(Sender: TObject);
var
loop1,loop2 : integer;
cx_Product, cx_Number : String;
cx_Amount,cx_Price,cx_Sum : double;
begin
  for loop1 := 0 to cxGrid_View.DataController.RecordCount - 1 do
    begin
      for loop2 := loop1 + 1  to cxGrid_View.DataController.RecordCount - 1 do
        begin
          if (cxGrid_View.DataController.Values[loop1,cxGrid_Sum.Index] <
              cxGrid_View.DataController.Values[loop2,cxGrid_Sum.Index]) then
            begin
              cx_Product := cxGrid_View.DataController.Values[loop1,cxGrid_Product.Index];
              cx_Number := cxGrid_View.DataController.Values[loop1,cxGrid_Number.Index];
              cx_Amount := cxGrid_View.DataController.Values[loop1,cxGrid_Amount.Index];
              cx_Price := cxGrid_View.DataController.Values[loop1,cxGrid_Price.Index];
              cx_Sum := cxGrid_View.DataController.Values[loop1,cxGrid_Sum.Index];

              cxGrid_View.DataController.Values[loop1,cxGrid_Product.Index] :=
              cxGrid_View.DataController.Values[loop2,cxGrid_Product.Index];
              cxGrid_View.DataController.Values[loop1,cxGrid_Number.Index] :=
              cxGrid_View.DataController.Values[loop2,cxGrid_Number.Index];
              cxGrid_View.DataController.Values[loop1,cxGrid_Amount.Index] :=
              cxGrid_View.DataController.Values[loop2,cxGrid_Amount.Index];
              cxGrid_View.DataController.Values[loop1,cxGrid_Price.Index] :=
              cxGrid_View.DataController.Values[loop2,cxGrid_Price.Index];
              cxGrid_View.DataController.Values[loop1,cxGrid_Sum.Index] :=
              cxGrid_View.DataController.Values[loop2,cxGrid_Sum.Index];

              cxGrid_View.DataController.Values[loop2,cxGrid_Product.Index] := cx_Product;
              cxGrid_View.DataController.Values[loop2,cxGrid_Number.Index] := cx_Number;
              cxGrid_View.DataController.Values[loop2,cxGrid_Amount.Index] := cx_Amount;
              cxGrid_View.DataController.Values[loop2,cxGrid_Price.Index] := cx_Price;
              cxGrid_View.DataController.Values[loop2,cxGrid_Sum.Index] := cx_Sum;
            end;  //if
        end;  //for loop2
    end;  //for loop3
end;

입니다. String그리드는 하나하나 지정해야 한다는군요.
참고하세요...



+ -

관련 글 리스트
15494 cxGrid 정렬 문제 조언좀 부탁드립니다. 탐욕 2172 2015/04/22
15496     Re:cxGrid 정렬 문제 조언좀 부탁드립니다. 탐욕 2500 2015/04/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.