그림에서 볼 수 있듯이 각 항목의 버튼, 항목 왼쪽 아래의 버튼 하나 및 오른쪽 아래의 버튼으로 목록을 작성해야합니다.델파이의 각 항목에있는 버튼으로 목록을 만드는 방법
나는 ListBox
제어 및 ListBox
에 위의 패널 내에서 어떤 버튼을 사용하여 데모 응용 프로그램을 확인하지만, ListBox
스크롤, 그것을 만들기 위해 어려운 때 버튼은 ListItem
을 따릅니다. 도움이 될 수 있습니다
, 감사합니다 ~~~
그림에서 볼 수 있듯이 각 항목의 버튼, 항목 왼쪽 아래의 버튼 하나 및 오른쪽 아래의 버튼으로 목록을 작성해야합니다.델파이의 각 항목에있는 버튼으로 목록을 만드는 방법
나는 ListBox
제어 및 ListBox
에 위의 패널 내에서 어떤 버튼을 사용하여 데모 응용 프로그램을 확인하지만, ListBox
스크롤, 그것을 만들기 위해 어려운 때 버튼은 ListItem
을 따릅니다. 도움이 될 수 있습니다
, 감사합니다 ~~~
나는 그것을 만들 수있는 방법이있어! 그래서, 나는 대답을 자신 ~를 게시 겠지만, 레미 Lebeau 내게 영감을. 처음에는 목록에 버튼을 만들기 위해 DrawFrameControl()
을 사용했지만 스타일은 고전적인 Windows 스타일처럼 보였습니다. 예제에서는 그림과 같이 다시 색을 표현하기가 어렵습니다. 다음, 나는 FillRect()
과 DrawEdge()
이 버튼을 사용, 나는 여기, 우물 코드 생각 :
hitPoint := lst1.ScreenToClient(Mouse.CursorPos);
// there is a btnRect var of the Button Rect
edgeRect.Left := btnRect.Left - 1;
edgeRect.Top := btnRect.Top - 1;
edgeRect.Right := btnRect.Right + 1;
edgeRect.Bottom := btnRect.Bottom + 1;
// make button
lst1.Canvas.FillRect(btnRect);
// make edge, FListMouseDown is bool var and setting value at MouseDown/MouseUp Event
//
if PtInRect(edgeRect, hitPoint) and FListMouseDown then begin
DrawEdge(lst1.Canvas.Handle, edgeRect, EDGE_ETCHED, BF_RECT); // button down style
end else begin
DrawEdge(lst1.Canvas.Handle, edgeRect, EDGE_RAISED, BF_RECT);
end;
다음 작품은, 메모리 버튼의 사각형을 저장하는 ButtonOnClick 이벤트 코드를 작성하고, ButtonOnClick를 호출 이벤트가 ListMouseUp()
일 때 마우스 히트 위치가 버튼 직사각형에 있는지, 위의 그림과 같이 코드는 중요하지 않으므로 버튼 이후 생략 됨
어떤 델파이 버전을 사용하고 있습니까? UI에 VCL 또는 FireMonkey를 사용하고 있습니까? 이와 같은 경우, 나는 스크롤링 문제를 해결하기 위해 소유자 - 드로잉 (UI 표준 룩앤필을 사용하는 컨트롤을 만들고 싶을 때'DrawFrameControl()'또는'DrawTheme ...()'함수 사용)을 사용하고, 히트 테스팅 로직을 사용하여 그려진 부분의 클릭을 감지하여 필요에 따라 작업을 트리거합니다. 'TListBox'와'TListView'는 모두 owner-drawing을 지원합니다. –
@Remy 그러나 여전히 VCL 또는 FMX 사용 여부에 따라 크게 다릅니다. 각각은이 작업을 위해 완전히 다른 대답을 요구합니다. –
나는 왜이 질문에 '웹'이라는 태그가 붙어 있고, 웹 페이지에서 오는 것처럼 보이는 샘플 이미지가 왜 궁금합니다. –