Q&A

  • 스트링그리드에서 특정셀 데이터를 이용한 정렬
스트링 그리드에서 특정셀의 정수값을 비교하여  

[특정셀]
   1               aaa
   3               bbb
   2               ccc
   5               ddd
   4               eee

   1          aaa
   2          ccc
   3          bbb
   4          eee
   5          ddd


해당셀이 포함된 Row 전부를 오름차순 또는 내림차순으로 정렬시켜주려할때 가장 좋은 방법좀 알려주십시요.



1  COMMENTS
  • Profile
    거리 2003.03.11 21:49
    저또한 초보라서 잘 모르는걸 감안해 주세요.^^
    스트링그리드는 디비그리드와는 달리 그냥 텍스트 박스라고 생각하셔도
    될듯 합니다. 즉, 글씨를 쓰고 지우는 단순한 텍스트 박스 형식의 그리드라는
    말이죠.
    위의 예에서 첫번째 형식으로 특정셀을 선택하면 그쪽에 관한 정렬이
    문제인것 같은데 스트링 그리드에서(DrawCell)에서 하는것은 좀 무리가
    있을것 같습니다. 단순한 조건에 의한 표시를 한다는것이 아니니까요.
    디비 그리드가 성격에 맞는것 같지만 스트링그리드를 고집 하신다면
    기존 해당 필드를 선택할때 선택된 필드로 order by한 걸 다시 뿌리던지.
    아니면 DrawCell에서 구현한다면  난잡한(?) 코딩이 필요한건 아닌지.

    스트링 그리드에서 표현했을때 뿌리는 프로시저, 쿼리해오는 프로시저, 등등을
    명확하게 구분했을때 가능은 하겠죠.. ..
    디비 그리드를 썼을때의 위의 사항 표현방법입니다.
    스트링 그리드 또한 이와 비슷하게 응용하시면 가능할듯.

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      DBGrid1.Options := [dgTitles,dgIndicator,dgColLines,
        dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit];
    end;

    procedure TForm1.DBGrid1TitleClick(Column: TColumn);
    begin
      Query1.SQL[1] := Column.FieldName;
      Query1.Close;
      Query1.Open;
    end;

    procedure TForm1.FormShow(Sender: TObject);
    begin
      with Query1 do begin
        Close;
        SQL.Clear;
        SQL.Add('SELECT * FROM CUSTOMER ORDER BY ');
        SQL.Add('CUSTNO');
        Open;
      end;
    end;