Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2014, 17:03   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию переключение между компонентами tedit

И снова здравствуйте! Теперь у меня возник вопрос такого плана, на него гугл ответить не смог, потому вся надежда на вас, господа программисты, каким образом возможно реализовать переключение фокуса между однострочными полями редактирования? То есть курсор стоит в одном поле, а перевести его надо в поле выше или ниже, ну или левее-правее
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 05.02.2014, 17:05   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

SetFocus Вам в помощь. Или опишите задачу яснее.
FaTaL вне форума Ответить с цитированием
Старый 05.02.2014, 17:25   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

FindNextControl в помощь, но не выше или ниже, а по TabOrder
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.02.2014, 19:05   #4
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Ребят, посмотрите мою тему с кроссвордом, думаю станет яснее, ссыль пока не могу скинуть, так как сижу с телефона
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 05.02.2014, 19:29   #5
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Смысл понятен, зачем тебе это нужно. В статических компонентах замучаешься перечислять эдиты. В динамике это делается без-проблемно по индексу массива. Ну а общее решение озвучили выше. Поясняю.
Код:
procedure TForm1.Edit1Change(Sender: TObject);
begin
if Length(Edit1.Text) = 1 then Edit2.SetFocus;
end;
doktor255 вне форума Ответить с цитированием
Старый 05.02.2014, 20:25   #6
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

А возможно ли использовав код через sender определить порядковый номер компонента на форме, или определить текущее местоположение фокуса, то есть в каком из Tedit находится курсор?
Код:
if  TEdit(Sender).MaxLength=1 then TEdit(Sender+1).Setfocus;
хотелось бы, чтоб этот код работал, но так как обработчик вызывает sender-это не возможно и компилятор ругается на неверный тип
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 05.02.2014, 20:58   #7
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Теория переключения последовательно понятна из этого кода
Код:
procedure TForm1.Edit1Change(Sender: TObject);
var AEdit: TEdit;
AComponent: TComponent;
n: integer;
begin
AEdit := (Sender as TEdit);
n := AEdit.Tag;
if Length(AEdit.Text) = 1 then begin
inc(n);
AComponent := FindComponent('Edit' + IntToStr(n));
TEdit(AComponent).SetFocus;
end;
Исключения не обрабатывал. Присвой всем эдитам этот обработчик и пронумеруй Edit-ы по свойству Tag. Тебе ещё понадобится обработать стирание текста, и переключение фокусов стрелочками клавиатуры. Говорил же напиши в ICQ, помогу.
P.S. Ещё один вариант решения задачи, это присвоить всем компонентам Enableb := false, чтоб USER не мог выделять ячейки, и поставить обработчики клика по Edit-ам c номерами вопросам. По клику открывать окно с полем ввода ответа, подсвечивать кнопку подтверждения ответа только при совпадении длины ответа юзера количеству ячеек, и при нажатии OK делать автозаполнение ячеек.

Последний раз редактировалось doktor255; 05.02.2014 в 21:13.
doktor255 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переключение между формами Deeller Общие вопросы Delphi 5 11.05.2011 10:45
Переключение между таблицами. lovetolaugh БД в Delphi 5 15.04.2011 08:31
Переход между компонентами UnChanter Помощь студентам 2 11.01.2010 01:08
Переключение между книгами stas77 Microsoft Office Excel 5 03.11.2009 19:00
Переход между компонентами stepchild Общие вопросы Delphi 5 29.05.2008 20:07