Q&A

  • dbgrid에서 title 클릭했을때...
dbgrid에서 title 클릭했을때...

한번은 asc, 그다음은 desc 로 정렬을 만들었습니다...

근데 하고싶은건..

정렬방식에 따라  해당 title 의 캡션을 바꾸어서 정렬방법을 표시 해주고 싶은데...

부탁드립니다.....
2  COMMENTS
  • Profile
    홍성락 2002.07.17 20:44
    hsr//////////////////////////////////////////////////////////////
    좀 무식한 방법일지 모르겠습니다.
    더 좋은 방법이 있을겁니다...아래것은 전역변수사용을 해보았습니다.

    1.전역변수 선언
      sort_col : integer;
    2.폼 생성시 초기값 0 (나중에 sort모드가 아무것도 없을때도 마찬가지임)
    procedure TForm1.FormShow(Sender: TObject);
    begin
        sort_col := 0;
    end;
    3.타이틀 클릭시
    Column.Index보다  sort_col이 1값더 많은것은 0일때를 고려함.
    즉 sort_col는 0컬럼이 1값부터라 생각하심 됩니다.
    또, 음,양수로 만든것은 한번 클릭시는 오름차순으로되고
    같은 컬럼 또 클릭시 음수가 되어 내림차순으로됨
    procedure TForm1.DBGrid1TitleClick(Column: TColumn);
    begin
        if (Column.Index = ABS(sort_col)-1) then
           sort_col := sort_col * -1
        else
           sort_col := Column.Index+1;
        DBGrid1.Refresh; //또는 sort 루틴실행
    end;
    4.컬럼을 그릴때 OnDrawColumnCell이벤트 사용시
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
       if (sort_col<>0) and (DataCol= ABS(sort_col)-1) then begin
            Column.Title.Color := clYellow;
            if sort_col > 0 then //오름차순일때
               Column.Title.Caption := Column.FieldName + '↑'
            else                //내림차순일때
               Column.Title.Caption := Column.FieldName + '↓'
        end
        else begin
            Column.Title.Color := clBtnFace;
            Column.Title.Caption := Column.FieldName;
        end;
    end;
  • Profile
    나옹이 2002.07.18 00:32
    크헉...

    일케 하니깐 정말 잘되네요..

    감사합니다.