1
예상대로 작동하는 팝업 메뉴가 있습니다. 같은 개체의 끌어서 놓기 기능이 예상대로 작동합니다. 그들을 함께 넣어 ...드래그 앤 드롭으로 해석되는 TPopupMenu를 마우스 오른쪽 버튼으로 클릭하십시오.
마우스 오른쪽 버튼을 클릭하면 팝업 메뉴가 나타납니다. 메뉴가 끝나면 의 팝업 메뉴에서 왼쪽 버튼을 마우스 왼쪽 버튼으로 클릭하고 드래그 앤 드롭 기능을 호출합니다.이 때 마우스 오른쪽 버튼 클릭은 지금까지 보류 중이던 왼쪽 클릭이었던 것처럼 보입니다. 그 때 풀어 놓았다.
void __fastcall myGrid::eDragDrop(System::TObject *Sender, System::TObject *Source, int X, int Y)
{
while((Sender != this) && (Sender != NULL))
{
TControl *control = dynamic_cast < TControl * > (Sender);
if(control != NULL)
{
X += control->Left;
Y += control->Top;
Sender = control->Parent;
}
else
{
Sender = NULL;
}
} // while
// Check for a drop onto the Chart
if((Column != NULL)&&(Column->Visible)&& (Column->HeaderIndex>=0))
{
int Xt = X - FHeaderSB->Left + FHorzScroll->Position;
int HeaderIndex = Column->HeaderIndex;
if((Xt > FHeaderSections->Items[HeaderIndex]->Left) && (Xt < FHeaderSections->Items[HeaderIndex]- >Right))
{
Xt -= FHeaderSections->Items[HeaderIndex]->Left;
GotDragDropTime = true;
DragDropTime = Column->GetTimeFromPosition(Xt);
} // if
} // if Visible
if(fDragDrop != NULL)
{
fDragDrop(Sender, Source, X, Y);
}
}
내가 잘못 했습니까? 이 문제를 어떻게 해결할 수 있습니까?
일부 코드를 표시 할 수 있습니까? 추가 코드 (OnMouseXYZ 이벤트)가있어 팝업을 표시하거나 드래그 앤 드롭을 구현합니까? – GolezTrol
여기에 표시된 코드는 실행 시점에 이미 너무 늦었 기 때문에 관련성이 없습니다. 끌기 작업이 이미 시작되었습니다. 당신은 처음에 어떻게 거기에 도착했는지 알아 내야합니다. 마우스 이벤트 및 컨트롤의 DragMode 속성에 대해 알려주십시오. (또한이 함수의 첫 번째 루프는'this-> ScreenToClient (Sender-> ClientToScreen (x, y))'를 다시 구현 한 것 같습니다.) –