자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Firemonkey ListView 의 스크롤 방법을 알고싶습니다.
2015.12.15 09:59
늘 수고하여주심에 감사드립니다.
ListView 를 손가락으로 눌러 위로 이동했을 때에 제일 아래 아이템이 나오면 다음 페이지가 나타나게 하고 싶습니다.
그런데 이를 구현하려면 (1) 제일 아래 아이템이 나와야 한다는 것 (2) 스크롤이 진행 중이어야 한다는 조건이 전제되어야 한다고 봅니다. (제가 초보자라서 올바로 생각하는지 모르겠습니다)
이 두가지 조건을 ListView 의 MouseMove 이벤트에 구성해야 될 것 같은데(?) 문장을 어떻게 구성해야 하는지 도무지 모르겠습니다. 단 다음 페이지로 이동하는 로직은 이미 구성해놓았으므로 설명 안주셔도 됩니다.
리스트뷰가 스크롤 중일 때 제일 아래 아이템이 나타났을 때를 어떻게 코드로 구성해야 하는지 모르는 것이지요.
procedure TForm1.ListView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Single);
begin
if 위로 스크롤 중에 제일 아래 아이템이 나타나면
... 어쩌고
end;
제일 아래 아이템이 나타났다고 무조건 다음 페이지가 나타나면 안되겠지요. 제일 아래 아이템까지만 보기를 원할 경우가 있으니까요.
위와 같이 생각하는 것이 맞는 것인지요? 실력이 깡통이라서 확신이 없습니다. 이럴 때는 어떻게 해야 하는지 부디 가르침을 주시기 바랍니다.
댓글 2
-
silkroad99
2015.12.16 11:03
-
거북이
2015.12.16 13:45
아, 고맙습니다. 일단은 나름대로 해결했습니다. 베풀어주신 코드로 예제를 만들어 보고 배우겠습니다 ^^
Firemonkey ListView 의 스크롤 방법을 알고싶습니다.
2015.12.15 09:59
늘 수고하여주심에 감사드립니다.
ListView 를 손가락으로 눌러 위로 이동했을 때에 제일 아래 아이템이 나오면 다음 페이지가 나타나게 하고 싶습니다.
그런데 이를 구현하려면 (1) 제일 아래 아이템이 나와야 한다는 것 (2) 스크롤이 진행 중이어야 한다는 조건이 전제되어야 한다고 봅니다. (제가 초보자라서 올바로 생각하는지 모르겠습니다)
이 두가지 조건을 ListView 의 MouseMove 이벤트에 구성해야 될 것 같은데(?) 문장을 어떻게 구성해야 하는지 도무지 모르겠습니다. 단 다음 페이지로 이동하는 로직은 이미 구성해놓았으므로 설명 안주셔도 됩니다.
리스트뷰가 스크롤 중일 때 제일 아래 아이템이 나타났을 때를 어떻게 코드로 구성해야 하는지 모르는 것이지요.
procedure TForm1.ListView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Single);
begin
if 위로 스크롤 중에 제일 아래 아이템이 나타나면
... 어쩌고
end;
제일 아래 아이템이 나타났다고 무조건 다음 페이지가 나타나면 안되겠지요. 제일 아래 아이템까지만 보기를 원할 경우가 있으니까요.
위와 같이 생각하는 것이 맞는 것인지요? 실력이 깡통이라서 확신이 없습니다. 이럴 때는 어떻게 해야 하는지 부디 가르침을 주시기 바랍니다.
댓글 2
-
silkroad99
2015.12.16 11:03
-
거북이
2015.12.16 13:45
아, 고맙습니다. 일단은 나름대로 해결했습니다. 베풀어주신 코드로 예제를 만들어 보고 배우겠습니다 ^^
이전 제가 사용해본 코드인데 좀 지저분한거 뺴고 적용해 보세요
저도 이곳에서 도움을 많이 받아서 어플을 만들어서 작은도움이라도 드리고싶네요
예)
Case EventInfo.GestureID of
sgiUp:
begin
if (qr_mdlsch_2_last_modl_code = 'BEFO') and
(qr_mdlsch_2_last_modl_code = 'BEFO') then qr_mdlsch_2_last_modl_code := 'LAST';
if ((qr_mdlsch_2_befo_modl_code <> qr_mdlsch_2_last_modl_code)) and
((wwControlGrid_GOOD_02.VScrollBar.ValueRange.Value+wwControlGrid_GOOD_02.RowCount) >= wwControlGrid_GOOD_02.VScrollBar.ValueRange.Max) then
begin
Application.ProcessMessages;
{ Fetching }
l_qr_mdlsch_2_cunt := l_qr_mdlsch_2_cunt+1;
qr_mdlsch_2_search(self);
if qr_mdlsch_2.RecordCount = 0 then
begin
l_qr_mdlsch_2_cunt := l_qr_mdlsch_2_cunt - 60;
qr_mdlsch_2_search(self);
Message_Yes('모든 자료를 조회했습니다');
qr_mdlsch_2_befo_modl_code := 'LAST';
qr_mdlsch_2_last_modl_code := 'LAST';
Exit;
end;
Subimage_indicator.Visible := False;
end;
end;
sgiDown:
begin
if (qr_mdlsch_2_befo_modl_code = 'LAST') and
(qr_mdlsch_2_last_modl_code = 'LAST') then qr_mdlsch_2_befo_modl_code := 'BEFO';
if ((qr_mdlsch_2_befo_modl_code <> qr_mdlsch_2_last_modl_code)) and
((wwControlGrid_GOOD_02.VScrollBar.ValueRange.Value <= 0 )) then
begin
Application.ProcessMessages;
{ Fetching }
l_qr_mdlsch_2_cunt := l_qr_mdlsch_2_cunt - 60;
qr_mdlsch_2_search(self);
if qr_mdlsch_2.RecordCount = 0 then
begin
l_qr_mdlsch_2_cunt := 1;
qr_mdlsch_2_search(self);
Message_Yes('처음 자료입니다');
qr_mdlsch_2_befo_modl_code := 'BEFO';
qr_mdlsch_2_last_modl_code := 'BEFO';
Exit;
end;
Subimage_indicator.Visible := False;
end;
end;
end;