У меня была такая же проблема с двойным щелчком мыши и скрытием сортировочного треугольника, и вместо этого я просто хотел просто переключаться вверх/вниз ни с чем другим. К сожалению, эта проблема присутствует и в последнем VirtualTreeView (4.8.7).
Вот немного кода, который исправляет проблему - поместите что-то подобное в ваш OnHeaderClick
событие (не OnHeaderDblClick
!).
Соответствующая строка: if HitInfo.Column = NoColumn then Exit;
, которая устраняет проблему двойного щелчка. Вы можете или не можете использовать остальную часть кода для своих целей, но это может быть полезно кому-то другому. Остальное объяснение содержится в комментариях к коду.
Не нужно определять событие OnHeaderDblClick - оно может быть пустым, если не требуется, поэтому вы можете удалить его из своего кода.
UPDATE
также читать комментарии от TLama, как это кажется, что с версии 5.0.0. это исправление может не работать должным образом. Однако с текущей версией.
{**
A column header of a VirtualStringTree was clicked: Toggle the sort direction
}
procedure TMainForm.vstHeaderClick(Sender: TVTHeader; HitInfo: TVTHeaderHitInfo);
begin
// Don't call sorting procedure on right click
// Some list-headers have a contextmenu which should popup then.
if HitInfo.Button = mbRight then Exit;
// Beginning with VT's r181, this proc is also called when doubleclicking-to-autofit
// Seems buggy in VT as this suddenly calls it with Column=-1 in those cases.
// See also issue #1150
if HitInfo.Column = NoColumn then Exit;
if Sender.SortColumn <> HitInfo.Column then Sender.SortColumn := HitInfo.Column
else if Sender.SortDirection = sdAscending then Sender.SortDirection := sdDescending
else Sender.SortDirection := sdAscending;
Sender.Treeview.SortTree(HitInfo.Column, Sender.SortDirection);
end;
В ст. 4.8.7 'OnHeaderDblClick' никогда не будет никогда не будет уволен, было [вопрос] (http://stackoverflow.com/a/7890884/960757). Все это исправлено в [последней версии] (http://virtual-treeview.googlecode.com/svn/trunk/Source/VirtualTrees.pas) в это время. – TLama
С этим все фиксированное я подразумеваю 'OnHeaderDblClick', теперь правильно запущен, и проблема с глифом сортировки, исчезающим с двойным щелчком, удаляется. – TLama
+1, вы правы, это обходит проблему, но не забывайте, что она не будет переключаться ни на что после выхода новой версии;) Я удалю свой пост отсюда, мне кажется, что OP выиграл 't никогда не возвращаюсь :) – TLama