Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
질문 : Listbox 정렬.
listbox 에 데이타가 표시되는데 시간별로 정렬하고자 하는데 쉬운 것 같으면서 잘 안되네요.
예를 들어 리스트박스에
고객명, 고객번호, 구입물건, 구입시간, 으로 표시될 때 구입시간 순서대로 정렬하려면 어떻게 해야하는지 부탁드립니다.
2
COMMENTS
최용일
•
2001.12.03 21:00
안녕하세요. 최용일입니다.
아래와 같이 해보세요...
type
TMySortCompare = function (Items: TStrings; Index1, Index2: Integer): Integer;
type
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
protected
procedure Sort;
procedure QuickSort(Items: TStrings; L, R: Integer; Compare: TMySortCompare);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
Sort;
end;
procedure TForm1.QuickSort(Items: TStrings; L, R: Integer; Compare: TMySortCompare);
var
I, J, P: Integer;
begin
repeat
I := L;
J := R;
P := (L + R) shr 1;
repeat
while Compare(Items, I, P) < 0 do Inc(I);
while Compare(Items, J, P) > 0 do Dec(J);
if I <= J then
begin
Items.Exchange(I, J);
if P = I then
P := J
else if P = J then
P := I;
Inc(I);
Dec(J);
end;
until I > J;
if L < J then QuickSort(Items, L, J, Compare);
L := I;
until I >= R;
end;
function CompareProc(Items: TStrings; Index1, Index2: Integer): Integer;
begin
// 여기에서 구입시간을 파싱해서 적절히 비교하시면됩니다...
// Index1의 구입시간 > Index2의 구입시간 >>> Result = 1
// Index1의 구입시간 = Index2의 구입시간 >>> Result = 0
// Index1의 구입시간 < Index2의 구입시간 >>> Result = -1
Result := CompareText(Items[Index1], Items[Index2]);
end;
procedure TForm1.Sort;
begin
if (ListBox1.Items.Count > 0) then
QuickSort(ListBox1.Items, 0, ListBox1.Items.Count - 1, CompareProc);
end;
end.
^^ 항상 즐코하세요...
prosit wrote:
> listbox 에 데이타가 표시되는데 시간별로 정렬하고자 하는데 쉬운 것 같으면서 잘 안되네요.
> 예를 들어 리스트박스에
>
> 고객명, 고객번호, 구입물건, 구입시간, 으로 표시될 때 구입시간 순서대로 정렬하려면 어떻게 해야하는지 부탁드립니다.
0
0
삭제
수정
댓글
prosit
•
2001.12.03 22:02
전에도 몇 번 도움을 주시더니, 오늘도 도와주시는 군요.
최 용일님께 도움을 받는 분들이 많은 것으로 알고 있는데....
진심으로 감사드립니다.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
소나무
2001.12.03 21:22
0
COMMENTS
/
0
LIKES
흑흑,, 업데이트 할때 순번을 자동으로 부여하려고 하는데...
사발우성™
•
2001.12.03 21:21
1
COMMENTS
/
0
LIKES
흑흑~ ole컨테이너에서 엑셀 실행후 엑셀 죽이기 ㅠㅠ
사발우성™
•
2001.12.03 21:54
사발우성™ wrote: > 하이 고수님들.. > ole컨테이너에서 엑셀을 불러들였는데엽... close시 excel proces...
궁금이
2001.12.03 21:20
0
COMMENTS
/
0
LIKES
Windows XP에서 delphi 5.0 의 TEdit 박스에 한글이 입력않되는점
초보초보
2001.12.03 21:18
0
COMMENTS
/
0
LIKES
급합니다. 컴포넌트 모양이 똑같은 모양으로 바뀌었어여...ㅜ.ㅜ
초보
•
2001.12.03 20:13
1
COMMENTS
/
0
LIKES
DBGrid 내용을 지우려면....
사발우성™
•
2001.12.04 04:44
^^ 허접 사발임돠... DataSource1.DataSet := nil; 이렇게 하면 내용이 지워짐당..^^ ^^ 그럼 즐프엽 ...
하눌이
•
2001.12.03 20:05
1
COMMENTS
/
0
LIKES
Truetype글꼴등록이 ...?
하눌이
•
2001.12.04 06:34
하눌이 wrote: > 팁에서 찾아서 Truetype글꼴을 등록하는것을 적용했으나, 설치완료후에 > 제어판의 글...
prosit
•
2001.12.03 18:41
2
COMMENTS
/
0
LIKES
질문 : Listbox 정렬.
listbox 에 데이타가 표시되는데 시간별로 정렬하고자 하는데 쉬운 것 같으면서 잘 안되네요. 예를 들어 리스트박스에 고객명, 고객번호, 구입물건, 구입시간, 으로 표시될 때 구입시간 순서대로 정렬하려면 어떻게 해야하는지 부탁드립니다.
최용일
•
2001.12.03 21:00
안녕하세요. 최용일입니다. 아래와 같이 해보세요... type TMySortCompare = function (Items: TS...
prosit
•
2001.12.03 22:02
전에도 몇 번 도움을 주시더니, 오늘도 도와주시는 군요. 최 용일님께 도움을 받는 분들이 많은 것으로 ...
김장호
•
2001.12.03 14:09
1
COMMENTS
/
0
LIKES
TScreen 에 대하여
홍성락
•
2001.12.03 19:38
김장호 wrote: > > 델파이 헬프를 보니깐 TScreen에서는 스크린의 해상도와 크기를 알수 있다고 했는데 ...
이경문
2001.12.03 11:42
0
COMMENTS
/
0
LIKES
Re: 모달 폼에서 다른 폼으로 변수 전달
왕초보
•
2001.12.03 10:53
3
COMMENTS
/
0
LIKES
이미지를 버턴 처럼 쓸려는데......
이경문
•
2001.12.03 11:39
자료실 ImageButton으로 검색해 보세요. CM_MOUSEENTER, CM_MOUSELEAVE message를 사용한 겁니다. 왕초...
왕초보
•
2001.12.03 12:25
답변 감사합니다만 전 기본적인 언어지식만 있거든여 어떻게 돌아가는지 이해는 가는데여 델파이는 할줄...
이경문
•
2001.12.03 12:35
걍 컴포넌트 쓰세요. 그게 가장 쉽자나요. 왕초보 wrote: > 답변 감사합니다만 전 기본적인 언어지식만 ...
이경문
•
2001.12.03 10:26
2
COMMENTS
/
0
LIKES
C의 preprocessor(#define)기능을 어떻게 구현할까요?
최용일
•
2001.12.03 19:33
안녕하세요. 최용일입니다. 델파이에도 같은것들이 있습니다... {$ifdef ...} codes...... {$e...
이경문
•
2001.12.03 23:04
감사합니다. ^^ 최용일 wrote: > 안녕하세요. 최용일입니다. > > 델파이에도 같은것들이 있습니다.....
대헌욱
•
2001.12.03 05:47
2
COMMENTS
/
0
LIKES
stringgrid에서 정렬하는예좀 알려주십시요..제발
씨나락
•
2001.12.03 06:58
다음과 같이 하면 될것 같네요 인터넷에서 찾은 팁입니다.. 어딘지 북마크 해놓을걸 쩝.... ^.^; ...
대헌욱
•
2001.12.03 21:59
정말 고맙습니다. 씨나락님^^ 정말 많은 도움이 됐습니다.. 이은혜 어떻게 보답해야될지..^^; 그럼 앞으...
김대웅
•
2001.12.03 01:51
4
COMMENTS
/
0
LIKES
쓰레드와 타이머 사용시 타이머 동작하지 않는 경우[무지급함]
srookie
•
2001.12.03 04:57
김대웅 wrote: > 안녕하세요. > > 제가 쓰레드와 타이머를 사용해서 db에 ado로 연결하는 동안 연결 시...
동급최강바보
•
2001.12.03 20:02
우선 하나씩 얘기를 할께여. 쓰레드를 생성할때(Create)에서 마지막에 Resume을 했는데 타이머 이벤트에서...
srookie
•
2001.12.04 08:16
제가 지난번에 Timer에서 Thread를 Resume한다는 것을 못보고서 답변을 드려서 허접한 답변이 나오고 말았...
김대웅
•
2001.12.05 02:40
님 알려주신데로 했는데요.. 그래도 먹통이 되네요. 서버 쪽에 컴퓨터가 꺼져 있으면요 8초정도 프로...
클마스
2001.12.02 22:00
0
COMMENTS
/
0
LIKES
퀵 리포트 : 똑같은 내용을 2copy 씩 찍으려고 하는데요....
안영진
•
2001.12.02 06:15
1
COMMENTS
/
0
LIKES
use 절에 대한 질문입니다.
치버
•
2001.12.02 08:21
자신이 쓸려고 하는 클래스를 델파이 에디터에서 씁니다. 가령 TTreeView 라고.. 그리고 그 글자에 커서...
DB2초보
2001.12.02 05:02
0
COMMENTS
/
0
LIKES
DB2 CA400 : Transaction 사용시 에러
aminay
•
2001.12.02 00:06
1
COMMENTS
/
0
LIKES
폴더를 휴지통에 버리지않고 바로 제거해 버리는 방법..
최용일
•
2001.12.03 20:09
안녕하세요. 최용일입니다. 휴지통으로 파일을 삭제하는거 보니까 SHFileOperation함수를 사용하시는 거...
남호진
2001.12.01 23:59
0
COMMENTS
/
0
LIKES
Sybase 5.0과 델파이를 BDE를 통하여 바로 연결하려면 어떤 세팅이 필요한가
보라
2001.12.01 23:30
0
COMMENTS
/
0
LIKES
ActiveX에서 퀵레포트를 사용하는데......출력이..
궁금이
2001.12.01 22:30
0
COMMENTS
/
0
LIKES
Symbol '<AllocateHWnd>' is deprecated
prosit
2001/12/03 18:41
Views
404
Likes
0
Comments
2
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
아래와 같이 해보세요...
type
TMySortCompare = function (Items: TStrings; Index1, Index2: Integer): Integer;
type
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
protected
procedure Sort;
procedure QuickSort(Items: TStrings; L, R: Integer; Compare: TMySortCompare);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
Sort;
end;
procedure TForm1.QuickSort(Items: TStrings; L, R: Integer; Compare: TMySortCompare);
var
I, J, P: Integer;
begin
repeat
I := L;
J := R;
P := (L + R) shr 1;
repeat
while Compare(Items, I, P) < 0 do Inc(I);
while Compare(Items, J, P) > 0 do Dec(J);
if I <= J then
begin
Items.Exchange(I, J);
if P = I then
P := J
else if P = J then
P := I;
Inc(I);
Dec(J);
end;
until I > J;
if L < J then QuickSort(Items, L, J, Compare);
L := I;
until I >= R;
end;
function CompareProc(Items: TStrings; Index1, Index2: Integer): Integer;
begin
// 여기에서 구입시간을 파싱해서 적절히 비교하시면됩니다...
// Index1의 구입시간 > Index2의 구입시간 >>> Result = 1
// Index1의 구입시간 = Index2의 구입시간 >>> Result = 0
// Index1의 구입시간 < Index2의 구입시간 >>> Result = -1
Result := CompareText(Items[Index1], Items[Index2]);
end;
procedure TForm1.Sort;
begin
if (ListBox1.Items.Count > 0) then
QuickSort(ListBox1.Items, 0, ListBox1.Items.Count - 1, CompareProc);
end;
end.
^^ 항상 즐코하세요...
prosit wrote:
> listbox 에 데이타가 표시되는데 시간별로 정렬하고자 하는데 쉬운 것 같으면서 잘 안되네요.
> 예를 들어 리스트박스에
>
> 고객명, 고객번호, 구입물건, 구입시간, 으로 표시될 때 구입시간 순서대로 정렬하려면 어떻게 해야하는지 부탁드립니다.