Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перемещение стрелками по компонентам 
:(
    Опции темы
Kbl4AH
Дата 13.10.2008, 14:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 4
Всего: 15



Здравствуйте, уважаемые.
Подскажите, пожалуйста, как сделать такую штуку:
на форме есть Edit'ы и Button'ы, нужно чтобы можно было перемещаться по ним с помощью стрелок 'Вверх' (к предыдущему) и 'Вниз' (к следующему), как это можно сделать?
Заранее весьма признателен!
PM MAIL ICQ   Вверх
morpheyushka
Дата 13.10.2008, 14:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: 2
Всего: 8



В DRKB или в DW есть подобные решения - глянь там smile 


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
Rennigth
Дата 13.10.2008, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



Цитата(Kbl4AH @  13.10.2008,  14:05 Найти цитируемый пост)
Здравствуйте, уважаемые.
Подскажите, пожалуйста, как сделать такую штуку:
на форме есть Edit'ы и Button'ы, нужно чтобы можно было перемещаться по ним с помощью стрелок 'Вверх' (к предыдущему) и 'Вниз' (к следующему), как это можно сделать?
Заранее весьма признателен! 

Мне кажеться ты выбрал немоного не правильный подход. 
Во первых: давным давно придуман TabOrder. 
Во вторых: куда переводить TabOrder если контрол ровно подиагонали?
Имхо тогда надо строить дерево переходов.



--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Christoph
Дата 13.10.2008, 14:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



Цитата(morpheyushka @ 13.10.2008,  14:14)
В DRKB или в DW есть подобные решения - глянь там smile

Чет не нашел...покажи  smile 


--------------------
user posted image
PM MAIL ICQ   Вверх
morpheyushka
Дата 13.10.2008, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: 2
Всего: 8



Цитата(Christoph @  13.10.2008,  14:29 Найти цитируемый пост)
Чет не нашел...покажи  smile  

там 100% есть как подменить перевод фокуса с Tab на Enter...поищи по этим словам - найдешь


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
Kbl4AH
Дата 13.10.2008, 17:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 4
Всего: 15



Цитата(Rennigth @ 13.10.2008,  15:21)
Мне кажеться ты выбрал немоного не правильный подход. 
Во первых: давным давно придуман TabOrder. 
Во вторых: куда переводить TabOrder если контрол ровно подиагонали?
Имхо тогда надо строить дерево переходов.

Расположение элементов на форме не имеет значения... Имеет значение только их порядок в TabOrder.
Стрелка 'Вверх'  - перейти к предыдущему элементу, 'Вниз' - к следующему...

Добавлено через 3 минуты и 49 секунд
Цитата(morpheyushka @ 13.10.2008,  16:06)
там 100% есть как подменить перевод фокуса с Tab на Enter...поищи по этим словам - найдешь

Делать Tab по Enter я умею... но ведь так перемещается только к следующему элементу, а мне еще нужно и к предыдущему...
PM MAIL ICQ   Вверх
Poseidon
Дата 13.10.2008, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Обрабатывай у каждого эдита KeyUp и делай setfocus нужному контролу

Код

procedure TForm1.Edit2KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_UP then Edit1.SetFocus; // предыдущему
  if Key = VK_DOWN then Edit3.SetFocus; // следующему
end;


Можно так же вместо SetFocus воспользоваться процедурой SelectNext, тогда нужно правильно настраивать TabOrder.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Kbl4AH
Дата 13.10.2008, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 4
Всего: 15



Цитата(Poseidon @ 13.10.2008,  18:37)
Обрабатывай у каждого эдита KeyUp и делай setfocus нужному контролу

Вариант, конечно, но не очень красиво... У меня куча форм, на каждой из которых число Edit'ов доходит до 30-ти... И так уже много кода в юнитах - читать его становится затруднительно. Хотелось бы универсальную процедуру, которую можно было бы один раз описать, а потом вызывать в юнитах...
PM MAIL ICQ   Вверх
Poseidon
Дата 13.10.2008, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Цитата(Kbl4AH @  13.10.2008,  17:32 Найти цитируемый пост)
Имеет значение только их порядок в TabOrder


ну раз так, тогда вот:
Код

procedure TForm1.EditKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_UP then SelectNext(Form1.ActiveControl, False, True);
  if Key = VK_Down then SelectNext(Form1.ActiveControl, True, True);
end;


...назнач ее всем едитам...



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Kbl4AH
Дата 13.10.2008, 17:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 4
Всего: 15



Poseidon, спасибо, попробую.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0923 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.