다음의 예문을 보아 주십시요
-> procedure TFMainForm.FileListColumnClick(Sender: TObject;
Column: TListColumn);
var
OldSortKeyIdx: Integer;
begin
OldSortKeyIdx := SortKeyIdx;
case Column.Index of
0,1,5 : // 이름, 크기, path
SortKeyIdx := Column.Index - 1;
2 : // 라인수
SortKeyIdx := 6; // 보이지 않는 column
3 : // 종류
SortKeyIdx := 5;
4 : // 날짜
SortKeyIdx := 7;
end;
<예2 -> if OldSortKeyIdx = SortKeyIdx then
DesSort := not DesSort
else
DesSort := False; >
질문드릴 것은 예2 번입니다.(참고로 DesSort는 Boolean 값입니다.)
-> 위의 예문은 어떻게 이해하는 것이 옳은 것인가요? 답변 부탁드립니다.
* 바쁘신 중에도 질문에 답해 주시는 여러분께 항상 감사드립니다.*
윈도 탐색기 같은 곳에서 칼럼 눌렀을때 해당 칼럼에 따라
소트를 하는 소스 같네요...
질문하신 예2번에 있는 DesSort는 소트를 역순(Desc)으로 할 것인지를
결정하는 것으로
if OldSortKeyIdx = SortKeyIdx then 은 방금 전까지의 소트되어져 있던
인덱스(칼럼)을 또 클릭했다는 의미가 되겠죠....
그럴 경우엔.. DesSort := not DesSort 하라고 했는데...
이건 현재 소트 상태가 Asc 이면 Desc로 Desc이면 Asc로 바꾸라는
얘기입니다.
글구 그 아래줄 Else 다음에 있는 것은...
OldSortKeyIdx 와 SortKeyIdx 가 틀리면 무조건 Asc 으로 하라는 얘기입니다.
이해가 잘 안되시면.... 윈도우 탐색기를 열어서 한번 칼럼들을 눌러보세요...
아마도 쉽게 이해가 되리라 생각합니다.
도움이 되었으면 좋겠네요...
근데 한가지...아래 문장이 전부 하나의 프로시져라면...
제가 보기엔 조금 틀렸다고 생각되네요...
하나의 문장이라면...
처음 begin 다음에 시작되는
OldSortKeyIdx := SortKeyIdx; <= 이 코드는 맨 아래로 옮겨야 할 것 같네요....
=================================================================================
delpo wrote:
> 다음의 예문을 보아 주십시요
>
> -> procedure TFMainForm.FileListColumnClick(Sender: TObject;
> Column: TListColumn);
> var
> OldSortKeyIdx: Integer;
> begin
> OldSortKeyIdx := SortKeyIdx;
>
> case Column.Index of
> 0,1,5 : // 이름, 크기, path
> SortKeyIdx := Column.Index - 1;
> 2 : // 라인수
> SortKeyIdx := 6; // 보이지 않는 column
> 3 : // 종류
> SortKeyIdx := 5;
> 4 : // 날짜
> SortKeyIdx := 7;
> end;
>
> <예2 -> if OldSortKeyIdx = SortKeyIdx then
> DesSort := not DesSort
> else
> DesSort := False; >
>
> 질문드릴 것은 예2 번입니다.(참고로 DesSort는 Boolean 값입니다.)
> -> 위의 예문은 어떻게 이해하는 것이 옳은 것인가요? 답변 부탁드립니다.
> * 바쁘신 중에도 질문에 답해 주시는 여러분께 항상 감사드립니다.*
>