|
Вопрос # 2 167/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Как запретить установку фокуса на всех компонентах на форме, в том числе на главном меню?
 |
Вопрос задал: Евгений 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 (статус: Посетитель), 6 декабря 2008, 19:54 [#1]:
Изменение TabStop на False подходит?
В крайнем случае можно отключть Enabled для нужного компонента...
//---- я пока редактировал -- не успел ------
Обычно захожу по ночам... (60-70%)
Если нужно что-то написать, то беру оборудованием, деньгими и пивом(при личной встрече)...
P.S. Помогаю и рассказываю бесплатно ^_^.....Nyaaa!
|
|
Nasgool (статус: 2-ой класс), 6 декабря 2008, 20:02 [#2]:
Но при этом вы не сможете даже системными иконками воспользоваться (свернуть и закрыть). если эти функции необходимы нужно Enabled поочередно в ложь выставить на всех компонентах формы.
|
|
Евгений Eklmn (статус: Посетитель), 6 декабря 2008, 22:05 [#3]:
Хотелось бы, чтобы компоненты не получали фокус не только по нажатию на Tab, но и при нажатии на клавиши право, лево и т.д. Ни как не могу этого добиться у TreeView.
Генерация случайных чисел - слишком важный вопрос, чтобы оставлять его на волю случая. (Роберт Ковзю, Окриджская лаборатория)
|
|
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 (статус: 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 то переходить не на след а через элемент
НО код еще увеличится, да геморр но если заинтересовал пиши в личку
__________________________________________________________________________
Вариантов туча выбирай по душе. И я не говорю что перечислил все
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|