2010-02-09 3 views
3

끌어서 놓기를 구현하는 트리 컨트롤이 있습니다. 드래그하는 동안 이미지를 보여주는 내 자신의 TDragObjectEx를 가져 오려면 재정의 된 OnStartDrag()를 사용합니다. 이것은 트리 컨트롤 내에서 완벽하게 작동하지만 트리 컨트롤을 벗어나 자마자 이미지가 사라집니다. 커서는 여전히 유지됩니다.이미지로 Delph/Builder 끌어다 놓기, 컨트롤을 떠날 때 이미지가 사라짐

이미지를 재설정하기 위해 OnDragOver 구현을 시도했지만 제대로 작동하지 않습니다.

어떤 힌트가 있습니까? C++ 빌더 2010을 사용하고 있지만 델파이도 똑같이 할 것입니다.

업데이트 : 양식 컨트롤의 각 컨트롤에 csDisplayDragImage가 설정되어 있으며 양식 자체가이 문제를 해결합니다. csDisplayDragImage를 각 항목에 대해 Create에서 수동으로 설정하지 않고 전체 양식에 설정하는 자동화 된 방법이 있습니까? 나는 올바른 기억한다면

void __fastcall TForm1::FormCreate(TObject *Sender) 
{ 
    ControlStyle << csDisplayDragImage; 
    RMU->ControlStyle << csDisplayDragImage; 
    Button1->ControlStyle << csDisplayDragImage; 
} 

답변

4

, 당신은 때 STH 볼 수는 이미지를 드래그 할의 컨트롤의 "ControlStyle"의 [csDisplayDragImage] 플래그를 포함해야합니다.

업데이트 : DragObject의 "AlwaysShowDragImages"설정은 끌기 이미지가 바탕 화면 전체에 표시되도록합니다.

+0

수정 ... AlwaysShowDragImages를 true로 설정하면 작업이 수행됩니다. –

0

분명히 드래그 이미지를 표시 할 각 컨트롤에는 csDisplayDragImagecontrol style이 있어야합니다. 당신은 제어 및 간단한 기능을 가진 모든 chilren 해당 플래그를 추가 할 수 있습니다

void AddDisplayDragImageStyle(TControl* ctl) 
{ 
    ctl->ControlStyle << csDisplayDragImage; 
    TWinControl* win = dynamic_cast<TWinControl*>(ctl); 
    if (win) 
    for (int i = 0; i < win->ControlCount; ++i) 
     AddDisplayDragImageStyle(win->Controls[i]); 
} 

의 형식은 전화를 가지고 자체에 : AddDisplayDragImageStyle(this)합니다.

+0

이 방법을 사용할 수 있지만 AlwaysShowDragImages를 true로 설정하는 것이 훨씬 쉽습니다. 감사. –

관련 문제