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

Вниз

StringGrid переход на ячейку влево по Enter   Найти похожие ветки 

 
Iriss   (2009-01-16 15:00) [0]

Люди, подскажите
Нужно сделать в таблице StringGrid  
переход на ячейку влево по нажатию кнопки Enter

как это можно сделать?
Заранее спасибо


 
anonims   (2009-01-16 15:13) [1]

VCL события при нажатии
OnkeyDown OnKeyup Onkeypress  выбирай любое у них есть параметр что нажато

коды Enter VK_RETURN #13(или #10 всегда путаю)

условный оператор  if <условие> then <при выполнении условия> else <в противном случае> end;

переход к след колонке col:=col+1 (а может и column )

собирай и пользуйся


 
{RASkov} ©   (2009-01-16 15:20) [2]

procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
 if Key = VK_RETURN then Key:=VK_RIGHT;
end;
:)


 
{RASkov} ©   (2009-01-16 15:21) [3]

> переход на ячейку влево

Хм.... странно как-то.... Ну тады Key:=VK_LEFT;)


 
Iriss   (2009-01-16 15:25) [4]

это понятно, а как сделать активной именно следующую ячейку


 
Smile   (2009-01-16 15:26) [5]

Учись правильно формулировать вопросы. Скорее всего не "влево", а "в зад", это на тот случай, если ячейка первая в колонке. Ну, а , для начала, следовало бы, хотя бы вкратце, рассказать или пояснить участникам форума, где (из каких потребностей) зарождаются подобные бредовые идеи (возможно и мы вступим в это общество).


 
Юрий Зотов ©   (2009-01-16 15:52) [6]

> Smile   (16.01.09 15:26) [5]

> Учись правильно формулировать вопросы. Скорее всего не "влево",
> а "в зад".

Учите русский язык. Не "в зад", а "взад", а совсем правильно - "назад". А то ведь так и подмывает переспросить: "В чей зад"?

> Ну, а , для начала, следовало бы, хотя бы вкратце, рассказать или
> пояснить участникам форума, где (из каких потребностей) зарождаются
> подобные бредовые идеи (возможно и мы вступим в это общество).

Поясняю - подобные идеи зарождаются из потребностей удобства для юзера. Вы когда-нибудь видели по-настоящему массовый ввод данных?


 
Smile   (2009-01-16 16:08) [7]

> Юрий Зотов ©   (16.01.09 15:52) [6]

> Вы когда-нибудь видели по-настоящему массовый ввод данных?

Признаюсь - не видел, и еще раз попробую напомнить, что "взад" (по вашему замечанию, с которым я полностью согласен) довольно редко встречается такая необходимость (я, по крайней мере, с такой необходимостью не сталкивался:()


 
Iriss   (2009-01-16 16:21) [8]

Значит StringGrid

хочу, чтобы при вводе данных после того как пользователь ввел в ячейку значение и нажал Enter, произошел переход на ячейку, которая находится слева (к востоку)) от той ячейки, в которую пользователь только что вводил значение

Вариант
if Key = VK_RETURN then Key:=VK_RIGHT;
не отрабатывает


 
Anatoly Podgoretsky ©   (2009-01-16 16:21) [9]

Для гридов переход на ячейку вправо или вниз нормальное дело, в отличии от других органов ввода.


 
Iriss   (2009-01-16 16:38) [10]

как это сделать?


 
Putnik ©   (2009-01-16 16:51) [11]

так нельзя:
if Key=vk_return then StringGrid1.Col:=StringGrid1.Col-1?


 
Юрий Зотов ©   (2009-01-16 16:53) [12]

> Iriss   (16.01.09 16:38) [10]
> как это сделать?

1. Найти событие, соответствующее окончанию редактирования ячейки.
2. В его обработчике написать код перехода в нужную ячейку, используя свойства Col и Row.


 
MsGuns ©   (2009-01-16 17:03) [13]

>Putnik ©   (16.01.09 16:51) [11]
>так нельзя:
>if Key=vk_return then StringGrid1.Col:=StringGrid1.Col-1?

Можно, но это будет именно "в зад" :)


 
{RASkov} ©   (2009-01-16 17:05) [14]

> [8] Iriss   (16.01.09 16:21)
> пользователь ввел в ячейку значение и нажал Enter


> Вариант
> if Key = VK_RETURN then Key:=VK_RIGHT;
> не отрабатывает

Потому как клавиатуру обрабатывает InplaceEditor а не Грид...


 
Putnil   (2009-01-16 17:09) [15]

Iriss   (16.01.09 16:21) [8]

> произошел переход на ячейку, которая находится слева (к
> востоку)) от той ячейки, в которую пользователь только что
> вводил значение

Кстати, слева и к востоку - это 2 разные ячейки
2 MsGuns ©   (16.01.09 17:03) [13]
Как и хотел автор)


 
{RASkov} ©   (2009-01-16 17:14) [16]

> но это будет именно "в зад" :)

Это называется "Массовый набор с хвоста" :)


 
Юрий Зотов ©   (2009-01-17 16:42) [17]

> Iriss

Вот этот код выбирает следующую ячейку, если она еще не последняя. А как выбрать предыдущую, если она еще не первая - это уж Вы сами.

type
 TForm1 = class(TForm)
   StringGrid1: TStringGrid;
   procedure StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
     const Value: String);
 private
   Flag: boolean;
   procedure SelectNextCell;
 end;

procedure TForm1.SelectNextCell;
var
 C, R: integer;
begin
 with StringGrid1 do
 begin
   if Flag or (Col = ColCount - 1) and (Row = RowCount - 1) then
     Exit;
   Flag := True;
   try
     C := Col + 1;
     if C = ColCount then
     begin
       C := FixedCols;
       R := Row + 1
     end
     else
       R := Row;
     Col := C;
     Row := R
   finally
     Flag := False
   end
 end
end;

procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
 ARow: Integer; const Value: String);
begin
 if not StringGrid1.EditorMode then
   SelectNextCell
end;


 
Iriss   (2009-01-20 11:04) [18]

спасибо за помощь



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

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

Наверх




Память: 0.51 MB
Время: 0.014 c
2-1232019643
pavelkq
2009-01-15 14:40
2009.03.01
Сравнинеи двух image.


2-1232018220
СержК
2009-01-15 14:17
2009.03.01
Не могу отобразить содержимое папки с помощью FileListBox


2-1232135242
inviz
2009-01-16 22:47
2009.03.01
Раскрыть все узлы TreeView


6-1198685585
Lamer666
2007-12-26 19:13
2009.03.01
Проблемы с подсчетом трафика!!!


2-1232302860
try...except
2009-01-18 21:21
2009.03.01
Обработка ошибки подключения к сети?