Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.13;
Скачать: CL | DM;

Вниз

TStringGrid   Найти похожие ветки 

 
Grandpa ©   (2003-01-31 11:04) [0]

В TStringGrid использую событие onSelectCell, чтобы запретить доступ к некоторым ячейкам. Логично было бы предположить, что по Tab будет переход к следующей "допустимой" ячейки, однако этого не происходит. Попытки ручного перехода на нужную ячейку с событиях onSelectCell и в onKeyDown путём установки свойст Row и Col эффекта не дают. Переход между ячейками таким образом возможен только с помощью мышки, а хотелось бы по Tab.
Есть какие-либо идеи?


 
Archon Kazansky ©   (2003-01-31 11:14) [1]

Попробуй устанавливать свойство Selection.


 
Sheriff   (2003-01-31 11:30) [2]


procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
begin
if ACol=2 then CanSelect:=true else CanSelect:=false;
end;


 
Grandpa ©   (2003-02-03 09:41) [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).


 
Danilka ©   (2003-02-03 09:48) [4]

Все правильно тебя поняли, используй 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 10:17) [5]

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;

Код привожу чтобы завершить тему. Ещё раз большое спасибо.



Страницы: 1 вся ветка

Текущий архив: 2003.02.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
1-38161
Andrey V.
2003-01-29 12:01
2003.02.13
ToolButton & PopupMenu


1-38176
Sharik_212
2003-02-04 15:11
2003.02.13
Bitmap и rxRichEdit


14-38448
Мазут Береговой
2003-01-30 02:17
2003.02.13
Господа! Кто и когда из вас зубы чистит?


7-38599
X-jedy
2002-12-11 14:01
2003.02.13
глюки с printer.printers под Win98


9-38000
Ev_genus
2002-05-10 12:41
2003.02.13
Чем DelphiX хуже Direct API. (Это не вопрос)