Действительно ли возможно выбрать несколько столбцов в Виртуальном Treeview?

Похоже, у вас нет ключа API для карт Google. Вам необходимо сгенерировать ключ API из консоли разработчика Google.

6
задан metacubed 30 October 2014 в 05:31
поделиться

3 ответа

Таким образом, после некоторого тестирования я придумал следующее, DiGi спасибо для дополнительного нажатия. DrawSelection не будет работать с этим решением, таким образом, он должен будет быть отключен. Так как я не думаю, что должен буду сделать это снова скоро, я не записал потомку.

Набор toDisableDrawSelection, toExtendedFocus и toMultiSelect к Истинному.

Объявите следующие переменные/свойства, где-нибудь подходящие:

StartSelectedColumn: integer;
FirstSelectedColumn: integer;
LastSelectedColumn: integer;
Selecting: boolean;

Обновите следующие события:

OnKeyDown

if (not Selecting) and (Key = VK_SHIFT) then
begin
  StartSelectedColumn := vtMain.FocusedColumn;
  FirstSelectedColumn := StartSelectedColumn;
  LastSelectedColumn := StartSelectedColumn;
  Selecting := true;
end;

OnKeyUp

if Key = VK_SHIFT then
  Selecting := false;

OnFocusChanged

if Selecting then
begin
  if column < StartSelectedColumn then
  begin
    FirstSelectedColumn := column;
    LastSelectedColumn := StartSelectedColumn;
  end
  else if column > StartSelectedColumn then
  begin
    FirstSelectedColumn := StartSelectedColumn;
    LastSelectedColumn := column
  end
  else
  begin
    FirstSelectedColumn := column;
    LastSelectedColumn := column;
  end;
end
else
begin
  StartSelectedColumn := column;
  FirstSelectedColumn := column;
  LastSelectedColumn := column;
end;

OnBeforeCellPaint

if vtMain.Selected[node] and InRange(column, FirstSelectedColumn, LastSelectedColumn) then
begin
  if vtMain.Focused then
    TargetCanvas.Brush.Color := vtMain.Colors.FocusedSelectionColor
  else
    TargetCanvas.Brush.Color := vtMain.Colors.UnfocusedSelectionColor;
  TargetCanvas.Brush.Style := bsSolid;
  TargetCanvas.FillRect(CellRect);
end;

OnPaintText

if vtMain.Selected[node] and InRange(column, FirstSelectedColumn, LastSelectedColumn) then
begin
  if vtMain.Focused then
    TargetCanvas.Font.Color := clHighlightText
  else
    TargetCanvas.Font.Color := vtMain.Font.Color;
end;
6
ответ дан 16 December 2019 в 21:47
поделиться

Еще одна подсказка - смотрит на событие OnStateChange, возможно, можно использовать

procedure TSomeForm.VTreeStateChange(Sender: TBaseVirtualTree; Enter,Leave: TVirtualTreeStates);
begin
  if tsDrawSelecting in Enter then
  begin
    // Save position
  end;
end;
1
ответ дан 16 December 2019 в 21:47
поделиться

Можно попробовать, позволяют/добавляют toGridExtensions в TreeOptions. MiscOptions. Это включает бесплатное перемещение в столбцы клавишами управления курсором, но VT все еще отменяют выбор столбца на отъезде. Но я уверен, что это возможно "зафиксировать" его пользовательской ничьей и помнящий стартовый узел и столбец.

1
ответ дан 16 December 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: