creater |
Отправлено: 01.09.2004, 13:28 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 120
|
Создаю ветку в TreeView
CODE |
TTreeNode *Node1;
TreeView1->Items->Clear();
TreeView1->Items->Add(NULL, "RootNode1");
Node1 = TreeView1->Items->Item[0];
TreeView1->Items->AddChild(Node1,"ChildNode1");
TreeView1->Items->Add(Node1, "RootNode2");
Node1 = TreeView1->Items->Item[2];
TreeView1->Items->AddChild(Node1,"ChildNode2");
Node1 = TreeView1->Items->Item[3];
TreeView1->Items->AddChild(Node1,"ChildNode2a");
TreeView1->Items->AddChild(Node1,"ChildNode2b");
TreeView1->Items->Add(TreeView1->Items->Item[0], "RootTreeNode3");
|
Далее хочу навесить на Child пункты какое-то действие по нажатию на них DblClick.
Как это сделать?
Имеется вариант: в событии OnDblClick смотришь координаты мыши и по ним определяешь узел
посредством функции GetNodeAt(int X, int Y);
Но опять же как отследить координаты мыши что бы они присвоились GetNodeAt(int X, int Y).
Заранее большое спасибо. |
|
xTrim |
Отправлено: 01.09.2004, 14:17 |
|
Машинист паровоза
Группа: Участник
Сообщений: 208
|
типа этого
CODE |
void __fastcall TForm1::TreeView1DblClick(TObject *Sender)
{
TPoint p = TreeView1->ScreenToClient(Mouse->CursorPos);
TTreeNode* node = TreeView1->GetNodeAt(p.x,p.y);
if(!node) return;
Label1->Caption = node->Text;
}
|
|
|
creater |
Отправлено: 01.09.2004, 15:27 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 120
|
QUOTE (xTrim @ 01/09/2004, 15:19) | типа этого
CODE |
void __fastcall TForm1::TreeView1DblClick(TObject *Sender)
{
TPoint p = TreeView1->ScreenToClient(Mouse->CursorPos);
TTreeNode* node = TreeView1->GetNodeAt(p.x,p.y);
if(!node) return;
Label1->Caption = node->Text;
}
|
|
Спасибо!!! Работает.
Хотел еще уточнить.
Как можно предотвратить ситуацию когда мы кликнули два раза на пункте который нам нужен, выполнилось действие, а затем мы случайно пикнули в пустую область списка и действие которое назначено на пункт выделенный в данный момент опять выполняется. |
|
creater |
Отправлено: 01.09.2004, 15:38 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 120
|
QUOTE (creater @ 01/09/2004, 16:29) | Хотел еще уточнить.
Как можно предотвратить ситуацию когда мы кликнули два раза на пункте который нам нужен, выполнилось действие, а затем мы случайно пикнули в пустую область списка и действие которое назначено на пункт выделенный в данный момент опять выполняется. |
Все, разобрался, спасибо. |
|
Konstantine |
Отправлено: 02.09.2004, 08:15 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
А ещё лучше при OnDblClick проверить какой итем выделен. Это свойство Selected, и возвращает или индекс или указатель. Я так пользуюсь всегда. Если чё не получится, до вечера скажи — Я на завтра рабочий кусок дам
|
|