![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TreeView. Нужно, чтобы по DblClick узел не разворачивался...
blast © (2004-10-31 01:31:00)Доброго времени суток, МАСТЕРА ДЕЛЬФИ :).
Вопросик такой: Есть дерево. Хочется сделать, чтобы по DblClick выполнялись действия и не происходило разворачивание\сворачивание узла у которого есть наследники.
blast (2004-11-05 22:34:00) [1]Всем спасиба за участие, проблемку решил созданием потомка TreeView и отловом сообщения:
procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
Оно происходит ДО!!! Expand, DblClick и Collapse.
Там все и разрещается-запрещается. Добавил свойство AllowExpandByDblClick и живу спокойно.
Еще раз спасиба, тему можно закрыть...
Вот такие вот дела, Blast ;)
_def[eND]er (2004-10-31 02:54:00) [2]На месте TTreeNode впиши ветку, которую надо обработать, или же имя твоего TreeView, если требуется свернуть/развернуть все дерево
_def[eND]er (2004-10-31 02:52:00) [3]Попробуй так:
var
UserExpanding, UserCollapsing: Boolean; // Эти переменные должны быть глобальными
procedure TForn1.Create(Sender: TObject);
begin
UserExpanding := False;
UserCollapsing := False;
end;
procedure TForn1.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
begin
AllowExpansion := UserExpanding;
UserExpanding := False;
end;
procedure TForn1.TreeView1Collapsing(Sender: TObject; Node: TTreeNode;
var AllowCollapse: Boolean);
begin
AllowCollapse := UserCollapsing;
UserCollapsing := False;
end;
procedure TForm1.TreeView1DblClick(Sender: TObject);
begin
// Твой код
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
UserExpanding := True;
TTreeNode.Expand();
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
UserCollapsing := True;
TTreeNode.Collapse();
end;
Defunct (2004-10-31 02:46:00) [4]blast © (31.10.04 02:35) [4]
может быть вам подойдет такое решение:
procedure TForm1.TreeView1DblClick(Sender: TObject);
begin
If TreeView1.Selected.Expanded Then TreeView1.Selected.Collapse(False)
Else TreeView1.Selected.Expand(False);
// здесь ваша обработка dbl-click
end;
blast (2004-10-31 02:35:00) [5]Если Allow := False, то TreeView1.Expand(false); НЕ РАСКРЫВАЕТ УЗЕЛ...
Хорошо, как отловить нажатие на плюсик?
_def[eND]er (2004-10-31 02:19:00) [6]А по какому событию оно должно раскрываться?
А вообще так: TTreeNode.Expand
blast (2004-10-31 02:10:00) [7]_def[eND]er.
Нужно еще чтобы дерево раскрывалось если не было DblClick...
_def[eND]er (2004-10-31 01:39:00) [8]procedure TForn1.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
begin
AllowExpansion := False;
end;
А в OnDblClick просто вставляй нужный код.