Q&A

  • 리스트뷰와 트리뷰에서 정렬하는 방법은...?
안녕하세요!

델피언을 꿈꾸는 학생입니다...



질문의 내용은 다름이 아니오라 리스트뷰와 트리뷰의 입력된 내용을 어떻게

정렬하는지...(합합합 넘 쉽나...? ^^;)

에 그러니깐 탐색기에서 처럼 트리뷰의 임으로 입력된 내용을 가나다.. 순으로 정렬하는 방법과 리스트뷰에서 임으로 입력된 내용을 가나다순으로 하는방법과 컬럼 버튼을 누르면 그 컬럼의 내용의 순대로 정렬하는방법은 없나요..



추신.'SortType'프로퍼티를 쓰면 될껏 같은데 사용법을 잘모르겠서엽...

3  COMMENTS
  • Profile
    김영대 1999.05.20 20:23
    김희영 wrote:

    > 안녕하세요!

    > 델피언을 꿈꾸는 학생입니다...

    >

    > 질문의 내용은 다름이 아니오라 리스트뷰와 트리뷰의 입력된 내용을 어떻게

    > 정렬하는지...(합합합 넘 쉽나...? ^^;)

    > 에 그러니깐 탐색기에서 처럼 트리뷰의 임으로 입력된 내용을 가나다.. 순으로 정렬하는 방법과 리스트뷰에서 임으로 입력된 내용을 가나다순으로 하는방법과 컬럼 버튼을 누르면 그 컬럼의 내용의 순대로 정렬하는방법은 없나요..

    >

    > 추신.'SortType'프로퍼티를 쓰면 될껏 같은데 사용법을 잘모르겠서엽...



    안녕하세요 김영대입니다

    TTreeView의 AlphaSort 메소스를 이용해보세요



  • Profile
    김영대 1999.05.20 20:20
    김희영 wrote:

    > 안녕하세요!

    > 델피언을 꿈꾸는 학생입니다...

    >

    > 질문의 내용은 다름이 아니오라 리스트뷰와 트리뷰의 입력된 내용을 어떻게

    > 정렬하는지...(합합합 넘 쉽나...? ^^;)

    > 에 그러니깐 탐색기에서 처럼 트리뷰의 임으로 입력된 내용을 가나다.. 순으로 정렬하는 방법과 리스트뷰에서 임으로 입력된 내용을 가나다순으로 하는방법과 컬럼 버튼을 누르면 그 컬럼의 내용의 순대로 정렬하는방법은 없나요..

    >

    > 추신.'SortType'프로퍼티를 쓰면 될껏 같은데 사용법을 잘모르겠서엽...



    안녕하세요 김영대입니다

    아래 예제는 ListView 의 컬럼별로 Sort (내림차순 포함) 하는 소스입니다

    예제에서는 칼럼이 3개로 설정되어 있습니다



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

    Dialogs, ComCtrls;



    type

    TForm1 = class(TForm)

    ListView1: TListView;

    procedure ListView1ColumnClick(Sender: TObject; Column: TListColumn);

    procedure FormCreate(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;

    // ListView의 Reverse sort를 결정하는 boolean 배열

    ReverseOrder: array[0..2] of boolean; // 컬럼이 3개일경우(0..2)



    implementation

    {$R *.DFM}



    // ListView 를 컬럼별로 sort하는 standalone 함수입니다

    function ListViewSortProc(Item1, Item2: TListItem; ColumnNo: Integer): Integer; stdcall;

    var

    S1, S2: string;

    i: integer;

    begin

    if ColumnNo = 0 then

    begin

    S1 := Item1.Caption;

    S2 := Item2.Caption;

    end

    else

    begin

    S1 := Item1.SubItems[ColumnNo - 1];

    S2 := Item2.SubItems[ColumnNo - 1];

    end;



    i := CompareText(S1, S2); // C의 strcmp() 함수와 동일한 기능



    if Unit1.ReverseOrder[ColumnNo] then // Reverse이면 역순으로 sort

    i := - i;

    Result := i;

    end;



    procedure TForm1.FormCreate(Sender: TObject);

    var

    i: Integer;

    begin

    {ListView 의 Reverse sort 여부 지정}

    for i := Low(ReverseOrder) to High(ReverseOrder) do

    ReverseOrder[i] := False; // False: 오름차순, True: 내림차순

    end;



    procedure TForm1.ListView1ColumnClick(Sender: TObject;

    Column: TListColumn);

    begin

    ListView1.CustomSort(@ListViewSortProc, Column.index);

    // Reverse sort는 컴럼을 한번 클릭했을때는 오름차순이지만

    // 또 한번 누르면 내림차순으로 sort 됩니다

    // 오름, 내림차순은 아래의 ReverseOrder 에서 결정됩니다

    ReverseOrder[Column.Index] := not ReverseOrder[Column.Index];

    end;



    end.



  • Profile
    안치봉 1999.05.20 09:49
    김희영 wrote:

    > 안녕하세요!

    > 델피언을 꿈꾸는 학생입니다...

    >

    > 질문의 내용은 다름이 아니오라 리스트뷰와 트리뷰의 입력된 내용을 어떻게

    > 정렬하는지...(합합합 넘 쉽나...? ^^;)

    > 에 그러니깐 탐색기에서 처럼 트리뷰의 임으로 입력된 내용을 가나다.. 순으로 정렬하는 방법과 리스트뷰에서 임으로 입력된 내용을 가나다순으로 하는방법과 컬럼 버튼을 누르면 그 컬럼의 내용의 순대로 정렬하는방법은 없나요..

    >

    > 추신.'SortType'프로퍼티를 쓰면 될껏 같은데 사용법을 잘모르겠서엽...



    안녕하세요.



    아래문서를 참고하시죠.



    OnCompare occurs to when two items need to be compared during a sort of the list.



    type TLVCompareEvent = procedure(Sender: TObject; Item1, Item2: TListItem

    ; Data: Integer; var Compare: Integer) of object;

    property OnCompare: TLVCompareEvent;



    Description



    Write an OnCompare event handler to implement a sort order for the list. An OnCompare event handler is called when the SortType property is stData or stBoth, when the AlphaSort method is called, or when the CustomSort method is called without a SortProc parameter.

    The OnCompare event handler compares the list items passed as the Item1 and Item2 parameters. If Item1 is the same as Item2 in the sort order, set the Compare parameter to 0. If Item1 is less than Item2, set the Compare parameter to a value less than 0. If Item1 is greater than Item2, set the Compare parameter to a value greater than 0. The Data parameter is 0 when the event handler is called to maintain the sort order of a list view with a SortType of stData or stBoth. Similarly, when OnCompare occurs in response to the AlphaSort method, the Data parameter is 0. When OnCompare occurs in response to the CustomSort method, the Data parameter is the value of the LParam parameter of CustomSort.



    //========================================================================



    The following code orders a list view in reverse alphabetical order on the click of a button. The callback function CustomSortProc calls the Windows API function lstrcmp and negates its return value.



    function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;

    begin

    Result := -lstrcmp(PChar(TListItem(Item1).Caption),

    PChar(TListItem(Item2).Caption));

    end;

    procedure TForm1.Button1Click(Sender: TObject);

    begin

    ListView1.CustomSort(@CustomSortProc, 0);

    end;



    • 조영욱
    • 1999.05.20 17:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.20 19:34
      dbiSaveChanges(Table1.Handle)을 하시면 Table1이 저장됩니다. 정의는 아래와 같이 되어있구요.. functi...
    • 김명희
    • 1999.05.20 08:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • powerman
      1999.05.21 10:04
      김명희 wrote: > 안여하세요. > 또 다시 같은 질문합니다. > 디테일 갯수 설정 어떻게합니까? > 예> A4...
    • 이재민
    • 1999.05.20 07:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.20 08:20
      1. 같은방법으로 사용합니다. 단, 변수형은 각 언어에 맞게 고쳐주셔야 합니다. 2. Win32 API Bible이 있...
    • 김희영
    • 1999.05.20 06:26
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.05.20 20:23
      김희영 wrote: > 안녕하세요! > 델피언을 꿈꾸는 학생입니다... > > 질문의 내용은 다름이 아니오라 ...
    • 김영대
      1999.05.20 20:20
      김희영 wrote: > 안녕하세요! > 델피언을 꿈꾸는 학생입니다... > > 질문의 내용은 다름이 아니오라 ...
    • 안치봉
      1999.05.20 09:49
      김희영 wrote: > 안녕하세요! > 델피언을 꿈꾸는 학생입니다... > > 질문의 내용은 다름이 아니오라 ...
    • 한상훈
    • 1999.05.20 05:39
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 정주영
      1999.05.20 19:34
      한상훈 wrote: > 질문한가지 더 올리겠습니다. > report 작성시 각 field의 길이를 고정시키고 > 더 긴...
    • 안치봉
      1999.05.20 04:41
      초보운전 wrote: > > 실행파일을 만들어 설치할경우 그 디렉토리위치는 > 주인 마음대로 일경우가 많습...
    • 최석기
      1999.05.20 04:05
      초보운전 wrote: > > 실행파일을 만들어 설치할경우 그 디렉토리위치는 > 주인 마음대로 일경우가 많습...
    • 한고은
    • 1999.05.20 03:22
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 소병각
      1999.06.09 20:32
      한고은 께서 말씀하시기를... > CREATE PROCEDURE test2 @tbname char(20) AS > create table dbo.hgkim...
    • 이영일
    • 1999.05.20 02:58
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.05.20 20:32
      이영일 wrote: > Sun server에 있는 ISAM형식의 화일을 PC로 불러오고 싶습니다. > PC의 OS는 NT이구 >...
    • 박천문
    • 1999.05.20 01:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.20 19:27
      안녕하세요? 초기화보다는...제가 DB는 잘 모르지만 그 필드의 MinValue와 MaxValue를 정의해 놓으면 될것...
    • 마성수
    • 1999.05.20 00:57
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 송기원
      1999.05.20 04:20
      Tquery.CommitUpdate의 용도를 잘못 이해하고 계신듯 한데... 아님 제가 잘못 알고 있거나...허허... C...
    • 남윤혁
    • 1999.05.20 00:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 유수
      1999.05.20 00:53
      안녕하세요. 물론 가능합니다. 아주 일반적으로 쓰고 있는 방식이기도 하구요. 특정셀을 선택하는 순간...
    • 안치봉
      1999.05.20 00:08
      김선경 wrote: > 2개의 프로그램에서 교신을 하기 위해 사용자 정의 메세지를 이용할려구 해요 > > a라...
    • 김선경
      1999.05.20 04:10
      호호.... 치봉님의 글 자~~알 읽었어요.... 한가지만 더 여쭤 봐도 실례가 아닌지... exe 프로그램( MD...
    • 안치봉
      1999.05.20 04:51
      김선경 wrote: > 호호.... 치봉님의 글 자~~알 읽었어요.... > 한가지만 더 여쭤 봐도 실례가 아닌지... ...
    • chbang
    • 1999.05.19 23:14
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 유수
      1999.05.20 00:33
      안녕하세요. 유수입니다. DBGrid는 기본적으로 다중 선택을 지원합니다. Ctrl 키를 누른 상태로, 마...
    • 박종길
    • 1999.05.19 22:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.05.19 22:27
      박종길 wrote: > 델파이로 만든 프로그램에서 > 시스템에 설정되어 있는 드라이브에 대하여 > 지정된 화...
    • 이정욱
      1999.05.19 22:33
      한델(http://www.delphi.co.kr)의 강의실에 가보세요. 인쇄에 대한 강좌가 있습니다. 그것을 참고하세요. ...
    • 이현정
    • 1999.05.19 20:00
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.19 22:32
      DB콘트롤을 사용하기보다 일반 TEdit을 사용하시면 간단히 해결되지 않을까요? TEdit을 사용하셔서 입력이...