[ tokajac @ 29.09.2007. 20:11 ] @
Koristim klasican Borlandov TTreeView.
Kreiram nekoliko Node-ova. Pustim aplikaciju i dobijam sledece:

Levim klikom lepo mogu da oznachim zeljeni Node, ALI desnim klikom to nije izvodljivo (nakon pustanja misha selekcija preskoci na prethodno selektovani Node?!).

Hocu da mi se prilikom klika desnim tasterom na neki od Node-ova otvori pop-up meni, pa bi mi zato znachilo da selekcija bude odgovarajuca.


Ovim kodom mi se pojavljuje pop-up na odgovarajucem mestu:

Code:

void __fastcall TForm1::TreeView1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
   TTreeNode *tempTreeNode =TreeView1->GetNodeAt(X,Y);

   if ((tempTreeNode!=NULL)&&(Button==mbRight))
       PopupMenu1->Popup(Mouse->CursorPos.x,Mouse->CursorPos.y);
}


Na slican nacin sam probao da reshim i problem selekcije ali za sada bezuspesno.

Hvala unapred na pomoci!


Pozdrav!
[ X Files @ 29.09.2007. 20:17 ] @
Jesi li probao da u ObjectInspectoru postaviš: RightClickSelect = true ?
[ tokajac @ 29.09.2007. 20:25 ] @
Postavio jos ranije; nije proradilo; ostale opcije nisam dirao;


[ X Files @ 29.09.2007. 20:31 ] @
Pogledao sam sad neki svoj kod od ranije:

OI: RightClickSelect = false // <--- dakle, nisam dirao

U TreeView properties (PopupMenu) postavi taj Popup meni ( ne pozivaj eksplicitno PopupMenu1->Popup() ), a ovako vrsi selekciju...

Code:

void __fastcall TForm1::TreeView1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
   if ( Button == mbRight )
   {
      TTreeView *pTreeView = static_cast<TTreeView*>( Sender );
      if ( pTreeView )
      {
          THitTests HT;
          HT = pTreeView->GetHitTestInfoAt( X,Y );
          if ( HT.Contains( htOnItem ) )
             pTreeView->GetNodeAt( X,Y )->Selected = true;
      }
   }        
}


(sad kad gledam ovaj kod, moglo bi i krace, ali nije bitno... proveri da li radi)
[ tokajac @ 29.09.2007. 20:40 ] @
Problem reshen: radi i selekcija i PopUp(elegantnije)

Svaka chast na brzini!
Hvala! Pozdrav!