Похоже, у вас нет ключа API для карт Google. Вам необходимо сгенерировать ключ API из консоли разработчика Google.
Таким образом, после некоторого тестирования я придумал следующее, 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;
Еще одна подсказка - смотрит на событие OnStateChange, возможно, можно использовать
procedure TSomeForm.VTreeStateChange(Sender: TBaseVirtualTree; Enter,Leave: TVirtualTreeStates);
begin
if tsDrawSelecting in Enter then
begin
// Save position
end;
end;
Можно попробовать, позволяют/добавляют toGridExtensions в TreeOptions. MiscOptions. Это включает бесплатное перемещение в столбцы клавишами управления курсором, но VT все еще отменяют выбор столбца на отъезде. Но я уверен, что это возможно "зафиксировать" его пользовательской ничьей и помнящий стартовый узел и столбец.