|
kark .김성진 님이 쓰신 글 :
: 꼭 OnClick 이벤트에서 처리를 하셔야 하는지요..
:
: 그게 아니라면 간단하게 처리하는 방법이 있긴합니다.
:
: OnChange 이벤트에서요..
:
: void __fastcall TForm1::TreeView1Change(TObject *Sender, TTreeNode *Node)
: {
: if(Node == NULL)
: return;
:
: ShowMessage(TreeView1->Selected->Text); // 여기에서 DB 처리해주시면 되겠죠..
: // Node->Text ...
: }
:
: 이렇게 하면 되긴합니다.
:
: 클릭 순간에 이미 선택 여부를 떠나서 이전 아이템이 먼저 선택이 되어 있습니다.
:
: OnMouseUp이나 다른 부분에서
:
: TreeView1->Selected->Selected = false;
:
: 하셔서 선택을 해제 시켜 버릴 수도 있으나,
:
: 이렇게 하시면 OnClick 하는 순간에
:
: if(TreeView1->Selected == NULL)
: return;
:
: 이라는 안전코드를 넣어도 무의미해지죠.
:
: 그리고 전백수님이 올리신 코드처럼 마우스 포지션으로 찾을 수 도 있으나..
:
: 고려해야 할게 많아서..좀..그렇네요..
:
: 도움이 되었길 바랍니다.
:
:
: 전백수 님이 쓰신 글 :
: : 트리뷰의 아이템이아닌 트리뷰의 빈공간에 클릭을 해도 아이템과 연결된 데이타베이스의 링크로 연결되는 문제때문에
: : 도움을 요청했더니 어떤분(Free0210)께서 알려주신대로 아래와같이 코딩을 했습니다.
: :
: : 그런데 알려주신데로 했더니 빈영역에 클릭을 하면 사이트로 이동하는
: : 현상은 사라졌지만 트리뷰 아이콘들중에서 위에서부터 차례로 몇개만 클릭을 인식을 합니다.
: : 아래에 있는 아이콘들은 클릭을 감지하지 못합니다.
: :
: : 혹시 영역설정이 잘못되어서 그런건지 제가 초보라서 잘모르겠군요.
: :
: : procedure TMainForm.FavoritesTreeViewClick(Sender: TObject);
: : var i:integer; TViewTest : THitTests; MousePt : TPoint; label TheEnd2;
: : begin
: : Try
: : if MainForm.FavoritesTreeView.Selected = nil then Goto theend2;
: : GetCursorPos(MousePt);
: : MousePt := ScreenToClient(MousePt);
: : TViewTest := MainForm.FavoritesTreeView.GetHitTestInfoAt(MousePt.X - MainForm.FavoritesTreeView.Left,MousePt.Y - MainForm.FavoritesTreeView.Top);
: : if (htOnButton in TViewTest) then Goto theend2;
: : if not (htOnItem in TViewTest) then Goto theend2;
: :
: :
: : with MainForm.FavoritesTreeview.Selected do
: : begin
: : FavoritesTreeView_OldSelectnode:=MainForm.FavoritesTreeView.selected.Text;
: : if MainForm.FavoritesTreeview.Selected.imageindex <> 0 then
: : begin
: : Click_str_site:=MainForm.FavoritesTreeview.Selected.Text;
: : MainForm.BoardBrowser1.Navigate(SiteToTable_Search(MainForm.FavoritesTreeview.Selected.Text,'siteaddress'));
: : end;
: : end;
: : TheEnd2:
: : except
: : end;
: : end;
|