Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 167

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Как запретить установку фокуса на всех компонентах на форме, в том числе на главном меню?

Евгений Eklmn Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Евгений Eklmn (статус: Посетитель)
Вопрос отправлен: 6 декабря 2008, 19:46
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Nasgool

Здравствуйте, Трофимов Евгений!
Все ОЧЕНЬ просто: Form1.Enabled := False;

Ответ отправил: Nasgool (статус: 2-ой класс)
Время отправки: 6 декабря 2008, 19:56

Ответ #2. Отвечает эксперт: Anderson N.N

Здравствуйте, Трофимов Евгений!
Выдели все компоненты и поставь у всех свойство TabStop в false

Ответ отправил: Anderson N.N (статус: 2-ой класс)
Время отправки: 6 декабря 2008, 21:38
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 5; последнее сообщение — 7 декабря 2008, 00:34; участников в обсуждении: 4.
Death_Master

Death_Master (статус: Посетитель), 6 декабря 2008, 19:54 [#1]:

Изменение TabStop на False подходит?
В крайнем случае можно отключть Enabled для нужного компонента...
//---- я пока редактировал -- не успел ------
Обычно захожу по ночам... (60-70%)
Если нужно что-то написать, то беру оборудованием, деньгими и пивом(при личной встрече)...
P.S. Помогаю и рассказываю бесплатно ^_^.....Nyaaa!
Nasgool

Nasgool (статус: 2-ой класс), 6 декабря 2008, 20:02 [#2]:

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

Евгений Eklmn (статус: Посетитель), 6 декабря 2008, 22:05 [#3]:

Хотелось бы, чтобы компоненты не получали фокус не только по нажатию на Tab, но и при нажатии на клавиши право, лево и т.д. Ни как не могу этого добиться у TreeView.
Генерация случайных чисел - слишком важный вопрос, чтобы оставлять его на волю случая. (Роберт Ковзю, Окриджская лаборатория)
Anderson N.N

Anderson N.N (статус: 2-ой класс), 6 декабря 2008, 23:12 [#4]:

По событию OnEnter компонента TreeView
передавай фокус на следующий элемент в таб последовательности
Например если это Edit1 то:

procedure TForm1.TreeView1Enter(Sender: TObject);
begin
Edit1.SetFocus;
end;

След. элемент это тот на который перейдет фокус при нажатии таб
Вообще Тав список можно просмотрет щелкнув пр кнопкой мыши
по форме и выбрав пункт Tab Order
Anderson N.N

Anderson N.N (статус: 2-ой класс), 7 декабря 2008, 00:34 [#5]:

В предыдущем варианте не забуь TabStop в False у TreeView

Вот еще легче в Tab последовательности до и после TreeView
поставь элементы Memo или Edit. С них клавишами влево, вправо не уйдешь
и не забудь
TreeView1.TabStop:=false;



А вот вариант получше еси след после TreeView компонент Edit1
хотя можешь заменить его любым
Создай HandleMessages как метод формы(ну добавь в раздел private или public)
Например так

public
{ Public declarations }
procedure sendMessage(var Msg: tMsg;var Handled: Boolean);
end;

и затем назначьте его Application.HandleMessages.

procedure TForm1.HandleMessages(var Msg: tMsg; var Handled: Boolean);
begin
if (Msg.Message = WM_KeyDown) and
(Msg.wParam in [VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT]) then
begin
case Msg.wParam of
VK_UP: ;
VK_DOWN: ;
VK_LEFT: ;
VK_RIGHT: Edit1.SetFocus;
end;
Handled := True;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := HandleMessages;
end;

P.S можно вообще вытаскивать программно список ТабОрдеров и если след./ пред
элемент равен TTreeView то переходить не на след а через элемент
НО код еще увеличится, да геморр но если заинтересовал пиши в личку

__________________________________________________________________________
Вариантов туча выбирай по душе. И я не говорю что перечислил все

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:29
Выполнено за 0.03 сек.