Delphi 트리 컨트롤(TreeView) 결점 간 드래그
TTreeView VCL 。 TreeView (TTreeNode)。
:
1>. OnMouseDown : ( , )。
2>. OnDragOver : ( , )。
3>. OnDragDrop : ( , )。
4>. ImageIndex: 。
SelectIndex: 。
stateIndex: 。
1. 먼저 OnMouseDown 이벤트입니다.
procedure TfrmMain.TreeView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
node: TTreeNode;
begin
node := TreeView1.GetNodeAt(X, Y); //
// node.Level , 0 , ( )
if (node <> nil) and (node.Level > 0) and (Button = mbLeft) then
TreeView1.BeginDrag(True); //
end;
,TreeView DragMode dmManual, BeginDrag 。DragMode dmManual。
2、 OnDargOver 。
procedure TfrmMain.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
var
node: TTreeNode;
begin
node := TreeView1.GetNodeAt(X, Y);
// Accept
if (node <> nil) and (node.Level = 0) and (TreeView1.Selected.Parent <> node) then
Accept := True //Accept
else
Accept := False;
end;
3. OnDragDrop , 。
procedure TfrmMain.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
node: TTreeNode;
begin
node := TreeView1.GetNodeAt(X, Y);
if (node <> nil) and (node.Level = 0) then
begin
// StateIndex ,StateIndex
Query1.SQL.Text := 'update TBL_Student set Cid=' + IntToStr(node.StateIndex) + ' where id=' + IntToStr
(TreeView1.Selected.StateIndex);
if Query1.ExecSQL() > 0 then
// ,
TreeView1.Selected.MoveTo(node, naAddChild);
end;
end;
4. 소감:
위의 방법은 수동으로 드래그 기능을 시작하지만 실현된 응용 과정에서 결점을 전개하거나 닫을 때 오차가 생기기 쉽다.
실용성이 떨어진다.따라서 TreeView 컨트롤의 DragMode를 dmAutomatic로 설정하는 기본 자동 시작 기능을 사용하는 것이 좋습니다.
이후 위에서 보듯이 OndragOver, OndragDrop 두 가지 이벤트를 설정하면 됩니다.
그러나 부동 도구막대를 만들 때 DragMode를 dmAutomatic으로 설정합니다.많은 문제점을 가져왔다.
1. 도구막대를 한 번 눌러도 아무런 드래그도 하지 않으면 부동의 도구막대로 변한다.
2、창문에서 끌어낸 후 부동으로 변하는 도구막대는 원래의 위치에 멈출 수 없습니다.
3. 부동하는 도구막대 창은 닫을 수 있지만 닫으면 꺼낼 수 없습니다.
이런 몇 가지 문제 때문에, 수공적인 방법을 사용해야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
cocos2d Lua 학습(一)ios에서 루아 함수 호출 및 전참 방법 lua 코드: 출력 결과: lua 호출 C++ 방법: add 함수: lua 코드: 출력 결과: 함수를 호출합니다. 함수를 호출하려면 다음 협의를 따르십시오. 우선, 호출할 함...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.