![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TStringGrid
Grandpa © (2003-01-31 11:04:00)В TStringGridиспользую событие onSelectCell, чтобы запретить доступ к некоторымячейкам. Логично было бы предположить, что по Tabбудет переход к следующей "допустимой" ячейки, однако этого не происходит. Попытки ручного перехода на нужную ячейку с событиях onSelectCellи в onKeyDownпутём установки свойст Rowи Colэффекта не дают. Переход между ячейками таким образом возможен только с помощью мышки, а хотелось бы по Tab.
Есть какие-либо идеи?
Grandpa (2003-02-03 10:17:00) [1]Danilka, спасибо, всё работает. В моём случае это выглядет так:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
begin
CanSelect := ((ACol=2) and (ARow=2)) or ((ACol=3) and (ARow=3));
end;
procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Sel: TGridRect;
begin
if Key = VK_TAB then
if (StringGrid1.Col = 2) and (StringGrid1.Row = 2) then
begin
Sel.Left:=3;
Sel.Top:=3;
Sel.Right:=3;
Sel.Bottom:=3;
StringGrid1.Selection:=Sel;
end
else
begin
Sel.Left:=2;
Sel.Top:=2;
Sel.Right:=2;
Sel.Bottom:=2;
StringGrid1.Selection:=Sel;
end;
end;
Код привожу чтобы завершить тему. Ещё раз большое спасибо.
Danilka (2003-02-03 09:48:00) [2]Все правильно тебя поняли, используй Selection, примерно вот-так:
procedure TForm1.Button1Click(Sender: TObject);
var
Sel: TGridRect;
begin
Sel.Left:=3;
Sel.Top:=3;
Sel.Right:=3;
Sel.Bottom:=3;
StringGrid1.Selection:=Sel;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Sel: TGridRect;
begin
Sel.Left:=2;
Sel.Top:=2;
Sel.Right:=2;
Sel.Bottom:=2;
StringGrid1.Selection:=Sel;
end;
Grandpa (2003-02-03 09:41:00) [3]Кажысь меня не поняли. Пример.
Пусть
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
begin
CanSelect := ((ACol=2) and (ARow=2)) or ((ACol=3) and (ARow=3));
end;
Хотелось бы чтобы из ячйки (2,2) по Tab был переход на ячейку (3,3) и наоборот - из (3,3) по Tab на (2,2).
Sheriff (2003-01-31 11:30:00) [4]
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
begin
if ACol=2 then CanSelect:=true else CanSelect:=false;
end;
Archon Kazansky (2003-01-31 11:14:00) [5]Попробуй устанавливать свойство Selection.