Delphi에서 런타임에 하나씩 만 사용자 정의 컨트롤 (TCustomControl)을 만들었습니다. 런타임에 두 개 이상의 컨트롤을 선택하여 마우스로 함께 움직일 수 있습니까?런타임에 여러 컨트롤을 선택하고 이동하는 방법
감사합니다.
Delphi에서 런타임에 하나씩 만 사용자 정의 컨트롤 (TCustomControl)을 만들었습니다. 런타임에 두 개 이상의 컨트롤을 선택하여 마우스로 함께 움직일 수 있습니까?런타임에 여러 컨트롤을 선택하고 이동하는 방법
감사합니다.
은 예전에 내가 기억하는 경우 올바르게 델파이의 최신 버전으로 업데이트 너무 어렵지 않았다 및 다중 선택 지원하는 것으로, handles라는 구성 요소를 사용했다.
더 간단한 방법을 찾을 수 없다면 언제든지 수동으로 수행 할 수 있습니다. 선택한 모든 컨트롤의 목록을 유지하십시오. 끌기 작업이 시작되면 다른 목록을 만드십시오.이 목록에는 각 컨트롤의 Top 및 Left 속성이 마우스의 위치에서 얼마나 멀리 떨어져 있는지 나타내는 TPoint 값이 있습니다. 그런 다음 사용자가 컨트롤을 드래그하면 선택한 컨트롤이 마우스 포인터의 적절한 상대 위치에 유지되도록 계속해서 업데이트됩니다.
마스터 컨트롤의 델타 값만 필요하지만 필자는이 델타를 다른 컨트롤에 적용하고 적용 할 것입니다. 따라서 control1이 3 픽셀 씩 왼쪽 아래로 바뀌면 controlN.Left : = controlN.Left + DeltaX; controlN.Top : = controlN.Top + DeltaY; 이 테스트를 일부 수행했지만 마스터를 이동하는 동안 나머지 컨트롤을 이동할 수 없습니다. – pani
commercial solution 어때요? 스크린 샷은 정렬 도구를 보여 주며 다중 선택을 지원합니다.
이 라이브러리는 내가 처음 보았지만 이미 대부분의 기능을 코딩했기 때문에 직접 구현하기로 결정했습니다. – pani
또 다른 상용 솔루션은 DevExpress : LayoutControl입니다. 드래그 앤 드롭, 그룹화, 런타임시 구성 요소의 전체 재정렬, 숨기기 및 추가가 가능합니다.
정말 제멋대로의 공급 업체, 특히 DevExpress를 사용하여 간단하게 잠그고 싶지는 않습니다. – pani
이 구성 요소를 사용하고 일부 변경 사항과 함께 다중 선택을 추가했습니다. 시각적 버그는 컨트롤 아래에있는 마우스 선택 사각형 (부모 캔버스에 페인트하기 때문에)과 실제 컨트롤의 오프셋은 양 축에서 +2 픽셀입니다. 감사합니다. – pani