그냥더블클릭할때와 콘트롤키를 누른상태에서 더블클릭했을때 다른일을 시킬려고 합니다.
게시판에서 검색을해서 제나름대로 아래와같이 해보았는데 Ctrl+더블클릭 이 먹지를 않습니다.
이벤트순서때문인가요?
고수님들의 답변을 부탁드립니다.
procedure TMainForm.TreeView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if(ssCtrl in Shift) and (ssDouble in Shift )then
begin
tree1ctrlnomalmode:=1;
end
else
tree1ctrlnomalmode:=0;
procedure TMainForm.TreeView1DblClick(Sender: TObject);
var i:integer; label TheEnd;
begin
if TreeView1.Selected.Level <> 0 then
begin
if MainForm.Right_Notebook.pageindex <> 1 then MainForm.Right_Notebook.pageindex:=1;
for i:=0 to MainForm.UrlTable.recordcount -1 do
begin
if MainForm.BoardStringGrid1.Cells[ 1, i ]=MainForm.TreeView1.Selected.Text then goto TheEnd;
end;
TheEnd:
if tree1ctrlnomalmode=0 then MainForm.BoardBrowser1.Navigate(MainForm.BoardStringGrid1.Cells[ 2, i ]);
if tree1ctrlnomalmode=1 then MainForm.BoardBrowser1.Navigate(MainForm.BoardStringGrid1.Cells[ 3, i ]);
end;
mainform.button1.caption:=inttostr(tree1ctrlnomalmode);
end;
> 그냥더블클릭할때와 콘트롤키를 누른상태에서 더블클릭했을때 다른일을 시킬려고 합니다.
> 게시판에서 검색을해서 제나름대로 아래와같이 해보았는데 Ctrl+더블클릭 이 먹지를 않습니다.
> 이벤트순서때문인가요?
> 고수님들의 답변을 부탁드립니다.
>
> procedure TMainForm.TreeView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
> begin
>
> if(ssCtrl in Shift) and (ssDouble in Shift )then
> begin
> tree1ctrlnomalmode:=1;
> end
> else
> tree1ctrlnomalmode:=0;
>
> procedure TMainForm.TreeView1DblClick(Sender: TObject);
> var i:integer; label TheEnd;
> begin
>
> if TreeView1.Selected.Level <> 0 then
> begin
> if MainForm.Right_Notebook.pageindex <> 1 then MainForm.Right_Notebook.pageindex:=1;
> for i:=0 to MainForm.UrlTable.recordcount -1 do
> begin
> if MainForm.BoardStringGrid1.Cells[ 1, i ]=MainForm.TreeView1.Selected.Text then goto TheEnd;
> end;
> TheEnd:
> if tree1ctrlnomalmode=0 then MainForm.BoardBrowser1.Navigate(MainForm.BoardStringGrid1.Cells[ 2, i ]);
> if tree1ctrlnomalmode=1 then MainForm.BoardBrowser1.Navigate(MainForm.BoardStringGrid1.Cells[ 3, i ]);
> end;
> mainform.button1.caption:=inttostr(tree1ctrlnomalmode);
>
> end;
//////////////////////////////////////////////////////////
더블클릭시 원클릭이 두번일어나는것도 막고(전역변수이용등의 방법으로), 더불클릭처리는 더블클릭이벤트에서
처리하는것이 옳습니다. 따라서 원클릭은 각각 두번이생기므로 더블클릭은 감지하지 못할겁니다.
MouseDown의 내용은 삭제하고 DblClick에 넣으면될겁니다.