Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо