Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.03.01;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.005 c
15-1230567308
tButton
2008-12-29 19:15
2009.03.01
интересное кино...


15-1230313536
DillerXX
2008-12-26 20:45
2009.03.01
Пожалуйста, помогите пройти квест


4-1205607739
Пётр
2008-03-15 22:02
2009.03.01
Выключение монитора


2-1232027730
timekiller
2009-01-15 16:55
2009.03.01
Расчет площади текста


15-1230590376
Хост
2008-12-30 01:39
2009.03.01
Как использовать словарь FireFox для проверки орфографии?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский