![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TreeView MouseRightClick [D7, XP]
Aleks © (2009-10-20 16:30:00)На форме есть тривьюв с кучей одноуровневых веток. Имеется контекст.меню на правой кнопке мыши чтобы удалять-добавлять ветки в тривьюв. Только вот нужно сначала кликать левой кнопкой мыши чтобы переместить фокус на нужную ветку,а только потом правую и так жать "Удалить",иначе удаляет не ту ветку :(
Код такой:
if TreeView1.Items.Count>0 then
begin
if TreeView1.Selected<>nil then
TreeView1.Items.Delete(TreeView1.Selected);
end;
Вопрос: как сделать чтобы фокус автоматически перемещелся на указанную при нажатиии правой клавиши мыши ветку? (Свойство TreeView RightClickSelect я установил в True, но это не помогло)
Aleks (2009-10-21 11:12:00) [1]Спасибо большое за полезные советы!
DVM (2009-10-20 17:51:00) [2]
> Aleks (20.10.09 16:30)
procedure TfrmMain.tvCategoriesMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
Node: TTreeNode;
begin
Node := (Sender as TTreeView).GetNodeAt(X,Y);
if Node <> nil then
if Button = mbRight then
SendMessage((Sender as TTreeView).Handle, TVM_SELECTITEM, TVGN_CARET, Longint(Node.ItemId));
end;
Dennis I. Komarov (2009-10-20 17:49:00) [3]
> clickmaker © (20.10.09 17:47) [4]
На первом скачке... ;)
Dennis I. Komarov (2009-10-20 17:48:00) [4]Впрочем, можно удалять сразу нужный нод, а не "выбранный", но это уже как изволит автор GUI...
clickmaker (2009-10-20 17:47:00) [5]OnMouseDown
Dennis I. Komarov (2009-10-20 17:46:00) [6]...Selected:=(тот нод который был под курсором Jerry при наступлении соответствующего события)
Aleks (2009-10-20 17:33:00) [7]Каким способом присвоить? :/
Dennis I. Komarov (2009-10-20 16:42:00) [8]Сперва присвоить фокус (Selected) там где надо, а потом уже удалять...