PDA

Pogčedajte punu verziju : Borland Builder TreeView - selekcija noda DESNIM klikom


tokajac
29. 09. 2007., 22:03
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:


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!

tokajac
29. 09. 2007., 22:39
Dosao sam do resenja u medjuvremenu, pa ako je nekom potrebno:


Resenje za selekciju:


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;
}
}
}


PopUp treba da se postavi u ObjectInspectoru (elegantnije je)