Цитата: Надо ссылку на примеры, логично?
Ссылку на что, как сочетания клавиш обрабатывать?
Или на хелп где расписано какие сочетания клавиш в девовском гриде есть и как настраивать его поведение в принципе?
вот пример как в право/лево (в том числе) ходить:
[more]
procedure TfrDI_InputTable.InputGridTableViewKeyDown(Sender: TObject; var Key:
Word; Shift: TShiftState);
begin
if (Key = VK_INSERT) then
Key := 0
else if (Key = VK_DELETE) and (ssCtrl in Shift) and not ReadOnly then
begin
DeleteRowFromTable;
Key := 0;
end
else if (Key in [VK_TAB, VK_RETURN]) then
begin
if Shift = [] then
begin
if (not FindNextEditingCell(mdForward))
and (not Assigned(FNavigatorFrame) or not (FNavigatorFrame.EndOfPart and FNavigatorFrame.EndOfTable)) then
SendMessageChangeCurrentTable(VK_NEXT);
end
else if ssShift in Shift then
begin
if (not FindNextEditingCell(mdBack))
and (not Assigned(FNavigatorFrame) or not (FNavigatorFrame.BeginOfPart and FNavigatorFrame.BeginOfTable)) then
begin
SendMessageChangeCurrentTable(VK_PRIOR);
SetFocusLastEditingCell;
end;
end;
Key := 0;
end
else if Key in [VK_UP, VK_DOWN] then
begin
case Key of
VK_UP : GotoNextEditingCellInColumn(InputGridTableView.Controller.FocusedRowIndex, mdBack);
VK_DOWN : GotoNextEditingCellInColumn(InputGridTableView.Controller.FocusedRowIndex, mdForward);
end;
Key := 0;
end
else if (Key in [VK_PRIOR, VK_NEXT]) and (ssCtrl in Shift) then
begin
case Key of
// Ищем первую разрешенную для редактирования ячейку от первой строки,
// поэтому направление вперед
VK_PRIOR : GotoNextEditingCellInColumn(NotAssigned, mdForward);
// Ищем первую разрешенную для редактирования ячейку от последней строки,
// поэтому направление назад
VK_NEXT : GotoNextEditingCellInColumn(InputGridTableView.DataController.RowCount, mdBack);
end;
Key := 0;
end
else if (Key in [VK_LEFT, VK_HOME, VK_RIGHT, VK_END]) and not(InputGridTableView.Controller.FocusedColumn.Editing) then
begin
case Key of
VK_LEFT : GotoNextEditingCellInRow(InputGridTableView.Controller.FocusedColumn.VisibleIndex, mdBack);
VK_HOME : GotoNextEditingCellInRow(NotAssigned, mdForward);
VK_RIGHT : GotoNextEditingCellInRow(InputGridTableView.Controller.FocusedColumn.VisibleIndex, mdForward);
VK_END : GotoNextEditingCellInRow(InputGridTableView.VisibleColumnCount, mdBack);
end;
Key:=0;
end;
end;
[/more]
в функции FindNextEditingCell просто устанавливается FocusedColumnIndex для Controller просто нужно было по определенным правилам (типа некоторые колонки не редактируются и т.п.)
но идея думаю понятна.